In [14]:
#-*- coding: utf-8 -*-
import pandas as pd
import pandas_datareader.data as web
import datetime
In [15]:
def get_file_path(code):
return "../data/" + code
In [16]:
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 [17]:
def load(code):
df = pd.read_pickle(get_file_path(code))
return df
In [18]:
df = download("005930", 2016, 1, 1, 2016, 11, 15)
In [45]:
def MACD(m_DF, n1=12, n2=26, c=9):
m_DF['EMA_N1'] = pd.Series.ewm(m_DF['Adj Close'], span=n1).mean()
m_DF['EMA_N2'] = pd.Series.ewm(m_DF['Adj Close'], span=n2).mean()
m_DF['EMA_Signal'] = pd.Series.ewm(m_DF['Adj Close'], span=c).mean()
return m_DF
In [46]:
MACD(df)
Out[46]:
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
1.259099e+06
1.259099e+06
1.259099e+06
2016-01-04
1260000.0
1260000.0
1205000.0
1205000.0
306900
1204138.69
1.229329e+06
1.230562e+06
1.228566e+06
2016-01-05
1202000.0
1218000.0
1186000.0
1208000.0
216000
1207136.55
1.220667e+06
1.222146e+06
1.219783e+06
2016-01-06
1208000.0
1208000.0
1168000.0
1175000.0
366700
1174160.13
1.205987e+06
1.208731e+06
1.204328e+06
2016-01-07
1166000.0
1183000.0
1151000.0
1163000.0
282300
1162168.71
1.194082e+06
1.197933e+06
1.191787e+06
2016-01-08
1163000.0
1186000.0
1163000.0
1171000.0
257700
1170162.99
1.188268e+06
1.192371e+06
1.185926e+06
2016-01-11
1156000.0
1166000.0
1146000.0
1152000.0
241200
1151176.57
1.179991e+06
1.185045e+06
1.177131e+06
2016-01-12
1148000.0
1166000.0
1144000.0
1146000.0
206200
1145180.86
1.172727e+06
1.178622e+06
1.169453e+06
2016-01-13
1153000.0
1159000.0
1148000.0
1148000.0
143300
1147179.43
1.167673e+06
1.173961e+06
1.164308e+06
2016-01-14
1131000.0
1142000.0
1131000.0
1138000.0
209000
1137186.58
1.161896e+06
1.168887e+06
1.158231e+06
2016-01-15
1140000.0
1152000.0
1124000.0
1132000.0
209400
1131190.87
1.156277e+06
1.163997e+06
1.152315e+06
2016-01-18
1088000.0
1133000.0
1088000.0
1126000.0
320200
1125195.16
1.150751e+06
1.159230e+06
1.146491e+06
2016-01-19
1128000.0
1171000.0
1128000.0
1171000.0
207200
1170162.99
1.154122e+06
1.160511e+06
1.151501e+06
2016-01-20
1160000.0
1160000.0
1132000.0
1138000.0
167000
1137186.58
1.151238e+06
1.157891e+06
1.148506e+06
2016-01-21
1133000.0
1155000.0
1125000.0
1131000.0
190300
1130191.59
1.147713e+06
1.154895e+06
1.144710e+06
2016-01-22
1145000.0
1168000.0
1145000.0
1168000.0
147500
1167165.14
1.150927e+06
1.156178e+06
1.149331e+06
2016-01-25
1172000.0
1176000.0
1156000.0
1162000.0
159900
1161169.43
1.152601e+06
1.156685e+06
1.151753e+06
2016-01-26
1155000.0
1157000.0
1136000.0
1137000.0
152300
1136187.30
1.149944e+06
1.154660e+06
1.148583e+06
2016-01-27
1126000.0
1175000.0
1126000.0
1175000.0
276200
1174160.13
1.153832e+06
1.156540e+06
1.153773e+06
2016-01-28
1164000.0
1168000.0
1139000.0
1145000.0
315900
1144181.58
1.152293e+06
1.155374e+06
1.151832e+06
2016-01-29
1140000.0
1150000.0
1116000.0
1150000.0
436900
1149178.00
1.151799e+06
1.154802e+06
1.151297e+06
2016-02-01
1152000.0
1163000.0
1151000.0
1163000.0
259900
1162168.71
1.153436e+06
1.155470e+06
1.153487e+06
2016-02-02
1161000.0
1166000.0
1147000.0
1156000.0
166300
1155173.72
1.153709e+06
1.155444e+06
1.153826e+06
2016-02-03
1150000.0
1152000.0
1137000.0
1146000.0
174500
1145180.86
1.152373e+06
1.154541e+06
1.152089e+06
2016-02-04
1150000.0
1161000.0
1148000.0
1156000.0
247900
1155173.72
1.152810e+06
1.154596e+06
1.152708e+06
2016-02-05
1156000.0
1169000.0
1156000.0
1164000.0
188000
1163168.00
1.154425e+06
1.155330e+06
1.154807e+06
2016-02-08
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.155785e+06
1.155994e+06
1.156483e+06
2016-02-09
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.156931e+06
1.156595e+06
1.157823e+06
2016-02-10
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1.157899e+06
1.157141e+06
1.158893e+06
2016-02-11
1118000.0
1137000.0
1118000.0
1130000.0
305200
1129192.30
1.153453e+06
1.154842e+06
1.152946e+06
...
...
...
...
...
...
...
...
...
...
2016-10-04
1610000.0
1624000.0
1606000.0
1614000.0
261000
1614000.00
1.587427e+06
1.582306e+06
1.590540e+06
2016-10-05
1601000.0
1626000.0
1597000.0
1619000.0
249400
1619000.00
1.592284e+06
1.585024e+06
1.596232e+06
2016-10-06
1696000.0
1700000.0
1667000.0
1691000.0
591100
1691000.00
1.607471e+06
1.592874e+06
1.615186e+06
2016-10-07
1700000.0
1716000.0
1690000.0
1706000.0
521000
1706000.00
1.622629e+06
1.601254e+06
1.633349e+06
2016-10-10
1650000.0
1689000.0
1628000.0
1680000.0
505800
1680000.00
1.631456e+06
1.607087e+06
1.642679e+06
2016-10-11
1600000.0
1625000.0
1545000.0
1545000.0
768500
1545000.00
1.618155e+06
1.602488e+06
1.623143e+06
2016-10-12
1495000.0
1545000.0
1494000.0
1535000.0
781700
1535000.00
1.605362e+06
1.597489e+06
1.605514e+06
2016-10-13
1550000.0
1581000.0
1545000.0
1557000.0
437200
1557000.00
1.597921e+06
1.594489e+06
1.595812e+06
2016-10-14
1548000.0
1588000.0
1547000.0
1577000.0
283100
1577000.00
1.594703e+06
1.593194e+06
1.592049e+06
2016-10-17
1565000.0
1602000.0
1538000.0
1590000.0
255700
1590000.00
1.593979e+06
1.592957e+06
1.591639e+06
2016-10-18
1572000.0
1595000.0
1572000.0
1589000.0
207600
1589000.00
1.593213e+06
1.592664e+06
1.591112e+06
2016-10-19
1579000.0
1643000.0
1575000.0
1625000.0
308800
1625000.00
1.598104e+06
1.595059e+06
1.597889e+06
2016-10-20
1626000.0
1651000.0
1609000.0
1620000.0
206600
1620000.00
1.601472e+06
1.596907e+06
1.602311e+06
2016-10-21
1606000.0
1613000.0
1588000.0
1589000.0
209500
1589000.00
1.599553e+06
1.596321e+06
1.599649e+06
2016-10-24
1593000.0
1608000.0
1590000.0
1608000.0
185700
1608000.00
1.600853e+06
1.597186e+06
1.601319e+06
2016-10-25
1600000.0
1604000.0
1592000.0
1597000.0
197300
1597000.00
1.600260e+06
1.597172e+06
1.600455e+06
2016-10-26
1597000.0
1599000.0
1562000.0
1567000.0
210600
1567000.00
1.595143e+06
1.594937e+06
1.593764e+06
2016-10-27
1571000.0
1617000.0
1556000.0
1573000.0
282300
1573000.00
1.591737e+06
1.593312e+06
1.589611e+06
2016-10-28
1580000.0
1614000.0
1580000.0
1614000.0
204200
1614000.00
1.595162e+06
1.594845e+06
1.594489e+06
2016-10-31
1616000.0
1639000.0
1611000.0
1639000.0
241300
1639000.00
1.601906e+06
1.598116e+06
1.603391e+06
2016-11-01
1630000.0
1652000.0
1612000.0
1652000.0
206900
1652000.00
1.609613e+06
1.602107e+06
1.613113e+06
2016-11-02
1640000.0
1652000.0
1631000.0
1643000.0
201900
1643000.00
1.614749e+06
1.605136e+06
1.619090e+06
2016-11-03
1630000.0
1640000.0
1606000.0
1616000.0
206800
1616000.00
1.614942e+06
1.605941e+06
1.618472e+06
2016-11-04
1605000.0
1634000.0
1605000.0
1627000.0
142000
1627000.00
1.616797e+06
1.607501e+06
1.620178e+06
2016-11-07
1647000.0
1650000.0
1634000.0
1640000.0
153200
1640000.00
1.620367e+06
1.609908e+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.611216e+06
1.621691e+06
2016-11-10
1630000.0
1650000.0
1618000.0
1649000.0
235900
1649000.00
1.624203e+06
1.614015e+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: