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 [ ]: