In [3]:
#-*- coding: utf-8 -*-
import pandas as pd
import pandas_datareader.data as web
import datetime
In [4]:
def get_file_path(code):
return "../data/" + code
In [5]:
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 [6]:
def load(code):
df = pd.read_pickle(get_file_path(code))
return df
In [7]:
df = download("005930", 2016, 1, 1, 2016, 11, 1)
In [62]:
#Moving Average
def EMA(m_Df, m_N, m_ColumnName='Close'):
if m_ColumnName in m_Df.columns:
m_Df["MA" + str(m_N)] = pd.Series.rolling(m_Df[m_ColumnName], window=m_N, center=False).mean()
else:
raise("You didn't input a Column Name")
return m_Df
In [63]:
EMA(df, 5)
Out[63]:
Open
High
Low
Close
Volume
Adj Close
MA
5MA
MA5
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
1202200.0
1202200.0
1202200.0
2016-01-08
1163000.0
1186000.0
1163000.0
1171000.0
257700
1170162.99
1184400.0
1184400.0
1184400.0
2016-01-11
1156000.0
1166000.0
1146000.0
1152000.0
241200
1151176.57
1173800.0
1173800.0
1173800.0
2016-01-12
1148000.0
1166000.0
1144000.0
1146000.0
206200
1145180.86
1161400.0
1161400.0
1161400.0
2016-01-13
1153000.0
1159000.0
1148000.0
1148000.0
143300
1147179.43
1156000.0
1156000.0
1156000.0
2016-01-14
1131000.0
1142000.0
1131000.0
1138000.0
209000
1137186.58
1151000.0
1151000.0
1151000.0
2016-01-15
1140000.0
1152000.0
1124000.0
1132000.0
209400
1131190.87
1143200.0
1143200.0
1143200.0
2016-01-18
1088000.0
1133000.0
1088000.0
1126000.0
320200
1125195.16
1138000.0
1138000.0
1138000.0
2016-01-19
1128000.0
1171000.0
1128000.0
1171000.0
207200
1170162.99
1143000.0
1143000.0
1143000.0
2016-01-20
1160000.0
1160000.0
1132000.0
1138000.0
167000
1137186.58
1141000.0
1141000.0
1141000.0
2016-01-21
1133000.0
1155000.0
1125000.0
1131000.0
190300
1130191.59
1139600.0
1139600.0
1139600.0
2016-01-22
1145000.0
1168000.0
1145000.0
1168000.0
147500
1167165.14
1146800.0
1146800.0
1146800.0
2016-01-25
1172000.0
1176000.0
1156000.0
1162000.0
159900
1161169.43
1154000.0
1154000.0
1154000.0
2016-01-26
1155000.0
1157000.0
1136000.0
1137000.0
152300
1136187.30
1147200.0
1147200.0
1147200.0
2016-01-27
1126000.0
1175000.0
1126000.0
1175000.0
276200
1174160.13
1154600.0
1154600.0
1154600.0
2016-01-28
1164000.0
1168000.0
1139000.0
1145000.0
315900
1144181.58
1157400.0
1157400.0
1157400.0
2016-01-29
1140000.0
1150000.0
1116000.0
1150000.0
436900
1149178.00
1153800.0
1153800.0
1153800.0
2016-02-01
1152000.0
1163000.0
1151000.0
1163000.0
259900
1162168.71
1154000.0
1154000.0
1154000.0
2016-02-02
1161000.0
1166000.0
1147000.0
1156000.0
166300
1155173.72
1157800.0
1157800.0
1157800.0
2016-02-03
1150000.0
1152000.0
1137000.0
1146000.0
174500
1145180.86
1152000.0
1152000.0
1152000.0
2016-02-04
1150000.0
1161000.0
1148000.0
1156000.0
247900
1155173.72
1154200.0
1154200.0
1154200.0
2016-02-05
1156000.0
1169000.0
1156000.0
1164000.0
188000
1163168.00
1157000.0
1157000.0
1157000.0
2016-02-08
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1157200.0
1157200.0
1157200.0
2016-02-09
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1158800.0
1158800.0
1158800.0
2016-02-10
1164000.0
1164000.0
1164000.0
1164000.0
0
1163168.00
1162400.0
1162400.0
1162400.0
2016-02-11
1118000.0
1137000.0
1118000.0
1130000.0
305200
1129192.30
1157200.0
1157200.0
1157200.0
...
...
...
...
...
...
...
...
...
...
2016-09-21
1595000.0
1601000.0
1576000.0
1592000.0
210100
1592000.00
1557800.0
1557800.0
1557800.0
2016-09-22
1600000.0
1641000.0
1599000.0
1618000.0
228500
1618000.00
1576000.0
1576000.0
1576000.0
2016-09-23
1582000.0
1598000.0
1566000.0
1571000.0
365900
1571000.00
1584800.0
1584800.0
1584800.0
2016-09-26
1571000.0
1596000.0
1564000.0
1568000.0
290400
1568000.00
1586800.0
1586800.0
1586800.0
2016-09-27
1550000.0
1575000.0
1533000.0
1569000.0
196600
1569000.00
1583600.0
1583600.0
1583600.0
2016-09-28
1554000.0
1573000.0
1554000.0
1567000.0
174100
1567000.00
1578600.0
1578600.0
1578600.0
2016-09-29
1573000.0
1619000.0
1572000.0
1600000.0
227900
1600000.00
1575000.0
1575000.0
1575000.0
2016-09-30
1590000.0
1615000.0
1585000.0
1598000.0
235200
1598000.00
1580400.0
1580400.0
1580400.0
2016-10-03
1598000.0
1598000.0
1598000.0
1598000.0
0
1598000.00
1586400.0
1586400.0
1586400.0
2016-10-04
1610000.0
1624000.0
1606000.0
1614000.0
261000
1614000.00
1595400.0
1595400.0
1595400.0
2016-10-05
1601000.0
1626000.0
1597000.0
1619000.0
249400
1619000.00
1605800.0
1605800.0
1605800.0
2016-10-06
1696000.0
1700000.0
1667000.0
1691000.0
591100
1691000.00
1624000.0
1624000.0
1624000.0
2016-10-07
1700000.0
1716000.0
1690000.0
1706000.0
521000
1706000.00
1645600.0
1645600.0
1645600.0
2016-10-10
1650000.0
1689000.0
1628000.0
1680000.0
505800
1680000.00
1662000.0
1662000.0
1662000.0
2016-10-11
1600000.0
1625000.0
1545000.0
1545000.0
768500
1545000.00
1648200.0
1648200.0
1648200.0
2016-10-12
1495000.0
1545000.0
1494000.0
1535000.0
781700
1535000.00
1631400.0
1631400.0
1631400.0
2016-10-13
1550000.0
1581000.0
1545000.0
1557000.0
437200
1557000.00
1604600.0
1604600.0
1604600.0
2016-10-14
1548000.0
1588000.0
1547000.0
1577000.0
283100
1577000.00
1578800.0
1578800.0
1578800.0
2016-10-17
1565000.0
1602000.0
1538000.0
1590000.0
255700
1590000.00
1560800.0
1560800.0
1560800.0
2016-10-18
1572000.0
1595000.0
1572000.0
1589000.0
207600
1589000.00
1569600.0
1569600.0
1569600.0
2016-10-19
1579000.0
1643000.0
1575000.0
1625000.0
308800
1625000.00
1587600.0
1587600.0
1587600.0
2016-10-20
1626000.0
1651000.0
1609000.0
1620000.0
206600
1620000.00
1600200.0
1600200.0
1600200.0
2016-10-21
1606000.0
1613000.0
1588000.0
1589000.0
209500
1589000.00
1602600.0
1602600.0
1602600.0
2016-10-24
1593000.0
1608000.0
1590000.0
1608000.0
185700
1608000.00
1606200.0
1606200.0
1606200.0
2016-10-25
1600000.0
1604000.0
1592000.0
1597000.0
197300
1597000.00
1607800.0
1607800.0
1607800.0
2016-10-26
1597000.0
1599000.0
1562000.0
1567000.0
210600
1567000.00
1596200.0
1596200.0
1596200.0
2016-10-27
1571000.0
1617000.0
1556000.0
1573000.0
282300
1573000.00
1586800.0
1586800.0
1586800.0
2016-10-28
1580000.0
1614000.0
1580000.0
1614000.0
204200
1614000.00
1591800.0
1591800.0
1591800.0
2016-10-31
1616000.0
1639000.0
1611000.0
1639000.0
241300
1639000.00
1598000.0
1598000.0
1598000.0
2016-11-01
1630000.0
1652000.0
1612000.0
1652000.0
206900
1652000.00
1609000.0
1609000.0
1609000.0
218 rows × 9 columns
In [ ]:
Content source: jongha/stock-ai
Similar notebooks: