In [1]:
#-*- coding: utf-8 -*-
import pandas as pd
import pandas_datareader.data as web
import datetime
In [2]:
def get_file_path(code):
return "../data/" + code
In [3]:
def download(code, year1, month1, day1, year2, month2, day2):
start = datetime.datetime(year1, month1, day1)
end = datetime.datetime(year2, month2, day2)
df = web.DataReader("%s.KS" % code, "yahoo", start, end)
df.to_pickle(get_file_path(code))
return df
In [4]:
def load(code):
df = pd.read_pickle(get_file_path(code))
return df
In [5]:
df = download("005930", 2016, 1, 1, 2016, 11, 15)
In [16]:
def MACD(m_DF, n1=12, n2=26, c=9):
m_DF['EMA_N1'] = pd.Series.ewm(m_DF['Close'], min_periods=n1, span=n1).mean()
m_DF['EMA_N2'] = pd.Series.ewm(m_DF['Close'], min_periods=n2, span=n2).mean()
m_DF['EMA_Signal'] = pd.Series.ewm(m_DF['Close'], min_periods=c, span=c).mean()
return m_DF
In [17]:
MACD(df)
Out[17]:
Open
High
Low
Close
Volume
Adj Close
EMA_N1
EMA_N2
EMA_Signal
Date
2016-01-01
1260000.0
1260000.0
1260000.0
1260000.0
0
1259099.38
NaN
NaN
NaN
2016-01-04
1260000.0
1260000.0
1205000.0
1205000.0
306900
1204138.69
NaN
NaN
NaN
2016-01-05
1202000.0
1218000.0
1186000.0
1208000.0
216000
1207136.55
NaN
NaN
NaN
2016-01-06
1208000.0
1208000.0
1168000.0
1175000.0
366700
1174160.13
NaN
NaN
NaN
2016-01-07
1166000.0
1183000.0
1151000.0
1163000.0
282300
1162168.71
NaN
NaN
NaN
2016-01-08
1163000.0
1186000.0
1163000.0
1171000.0
257700
1170162.99
NaN
NaN
NaN
2016-01-11
1156000.0
1166000.0
1146000.0
1152000.0
241200
1151176.57
NaN
NaN
NaN
2016-01-12
1148000.0
1166000.0
1144000.0
1146000.0
206200
1145180.86
NaN
NaN
NaN
2016-01-13
1153000.0
1159000.0
1148000.0
1148000.0
143300
1147179.43
NaN
NaN
1.165141e+06
2016-01-14
1131000.0
1142000.0
1131000.0
1138000.0
209000
1137186.58
NaN
NaN
1.159060e+06
2016-01-15
1140000.0
1152000.0
1124000.0
1132000.0
209400
1131190.87
NaN
NaN
1.153139e+06
2016-01-18
1088000.0
1133000.0
1088000.0
1126000.0
320200
1125195.16
1.151574e+06
NaN
1.147311e+06
2016-01-19
1128000.0
1171000.0
1128000.0
1171000.0
207200
1170162.99
1.154947e+06
NaN
1.152324e+06
2016-01-20
1160000.0
1160000.0
1132000.0
1138000.0
167000
1137186.58
1.152062e+06
NaN
1.149328e+06
2016-01-21
1133000.0
1155000.0
1125000.0
1131000.0
190300
1130191.59
1.148533e+06
NaN
1.145528e+06
2016-01-22
1145000.0
1168000.0
1145000.0
1168000.0
147500
1167165.14
1.151750e+06
NaN
1.150153e+06
2016-01-25
1172000.0
1176000.0
1156000.0
1162000.0
159900
1161169.43
1.153425e+06
NaN
1.152577e+06
2016-01-26
1155000.0
1157000.0
1136000.0
1137000.0
152300
1136187.30
1.150767e+06
NaN
1.149404e+06
2016-01-27
1126000.0
1175000.0
1126000.0
1175000.0
276200
1174160.13
1.154658e+06
NaN
1.154598e+06
2016-01-28
1164000.0
1168000.0
1139000.0
1145000.0
315900
1144181.58
1.153117e+06
NaN
1.152656e+06
2016-01-29
1140000.0
1150000.0
1116000.0
1150000.0
436900
1149178.00
1.152623e+06
NaN
1.152120e+06
2016-02-01
1152000.0
1163000.0
1151000.0
1163000.0
259900
1162168.71
1.154261e+06
NaN
1.154312e+06
2016-02-02
1161000.0
1166000.0
1147000.0
1156000.0
166300
1155173.72
1.154534e+06
NaN
1.154652e+06
2016-02-03
1150000.0
1152000.0
1137000.0
1146000.0
174500
1145180.86
1.153197e+06
NaN
1.152913e+06
2016-02-04
1150000.0
1161000.0
1148000.0
1156000.0
247900
1155173.72
1.153635e+06
NaN
1.153533e+06
2016-02-05
1156000.0
1169000.0
1156000.0
1164000.0
188000
1163168.00
1.155251e+06
1.156157e+06
1.155633e+06
2016-02-08
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.156612e+06
1.156821e+06
1.157310e+06
2016-02-09
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.157759e+06
1.157422e+06
1.158651e+06
2016-02-10
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.158727e+06
1.157968e+06
1.159722e+06
2016-02-11
1118000.0
1137000.0
1118000.0
1130000.0
305200
1129192.30
1.154278e+06
1.155668e+06
1.153770e+06
...
...
...
...
...
...
...
...
...
...
2016-10-04
1610000.0
1624000.0
1606000.0
1614000.0
261000
1614000.00
1.587427e+06
1.582310e+06
1.590540e+06
2016-10-05
1601000.0
1626000.0
1597000.0
1619000.0
249400
1619000.00
1.592284e+06
1.585028e+06
1.596232e+06
2016-10-06
1696000.0
1700000.0
1667000.0
1691000.0
591100
1691000.00
1.607471e+06
1.592878e+06
1.615186e+06
2016-10-07
1700000.0
1716000.0
1690000.0
1706000.0
521000
1706000.00
1.622629e+06
1.601257e+06
1.633349e+06
2016-10-10
1650000.0
1689000.0
1628000.0
1680000.0
505800
1680000.00
1.631456e+06
1.607090e+06
1.642679e+06
2016-10-11
1600000.0
1625000.0
1545000.0
1545000.0
768500
1545000.00
1.618155e+06
1.602491e+06
1.623143e+06
2016-10-12
1495000.0
1545000.0
1494000.0
1535000.0
781700
1535000.00
1.605362e+06
1.597491e+06
1.605514e+06
2016-10-13
1550000.0
1581000.0
1545000.0
1557000.0
437200
1557000.00
1.597921e+06
1.594492e+06
1.595812e+06
2016-10-14
1548000.0
1588000.0
1547000.0
1577000.0
283100
1577000.00
1.594703e+06
1.593196e+06
1.592049e+06
2016-10-17
1565000.0
1602000.0
1538000.0
1590000.0
255700
1590000.00
1.593979e+06
1.592960e+06
1.591639e+06
2016-10-18
1572000.0
1595000.0
1572000.0
1589000.0
207600
1589000.00
1.593213e+06
1.592666e+06
1.591112e+06
2016-10-19
1579000.0
1643000.0
1575000.0
1625000.0
308800
1625000.00
1.598104e+06
1.595061e+06
1.597889e+06
2016-10-20
1626000.0
1651000.0
1609000.0
1620000.0
206600
1620000.00
1.601472e+06
1.596909e+06
1.602311e+06
2016-10-21
1606000.0
1613000.0
1588000.0
1589000.0
209500
1589000.00
1.599553e+06
1.596323e+06
1.599649e+06
2016-10-24
1593000.0
1608000.0
1590000.0
1608000.0
185700
1608000.00
1.600853e+06
1.597188e+06
1.601319e+06
2016-10-25
1600000.0
1604000.0
1592000.0
1597000.0
197300
1597000.00
1.600260e+06
1.597174e+06
1.600455e+06
2016-10-26
1597000.0
1599000.0
1562000.0
1567000.0
210600
1567000.00
1.595143e+06
1.594939e+06
1.593764e+06
2016-10-27
1571000.0
1617000.0
1556000.0
1573000.0
282300
1573000.00
1.591737e+06
1.593314e+06
1.589611e+06
2016-10-28
1580000.0
1614000.0
1580000.0
1614000.0
204200
1614000.00
1.595162e+06
1.594846e+06
1.594489e+06
2016-10-31
1616000.0
1639000.0
1611000.0
1639000.0
241300
1639000.00
1.601906e+06
1.598117e+06
1.603391e+06
2016-11-01
1630000.0
1652000.0
1612000.0
1652000.0
206900
1652000.00
1.609613e+06
1.602108e+06
1.613113e+06
2016-11-02
1640000.0
1652000.0
1631000.0
1643000.0
201900
1643000.00
1.614749e+06
1.605137e+06
1.619090e+06
2016-11-03
1630000.0
1640000.0
1606000.0
1616000.0
206800
1616000.00
1.614942e+06
1.605942e+06
1.618472e+06
2016-11-04
1605000.0
1634000.0
1605000.0
1627000.0
142000
1627000.00
1.616797e+06
1.607502e+06
1.620178e+06
2016-11-07
1647000.0
1650000.0
1634000.0
1640000.0
153200
1640000.00
1.620367e+06
1.609909e+06
1.624142e+06
2016-11-08
1649000.0
1649000.0
1635000.0
1644000.0
108300
1644000.00
1.624002e+06
1.612434e+06
1.628114e+06
2016-11-09
1646000.0
1657000.0
1591000.0
1596000.0
313600
1596000.00
1.619694e+06
1.611217e+06
1.621691e+06
2016-11-10
1630000.0
1650000.0
1618000.0
1649000.0
235900
1649000.00
1.624203e+06
1.614016e+06
1.627153e+06
2016-11-11
1585000.0
1618000.0
1585000.0
1598000.0
256700
1598000.00
1.620172e+06
1.612829e+06
1.621322e+06
2016-11-14
1595000.0
1596000.0
1552000.0
1553000.0
302600
1553000.00
1.609838e+06
1.608397e+06
1.607658e+06
227 rows × 9 columns
In [ ]:
Content source: jongha/stock-ai
Similar notebooks: