HandleData
from fxdayu_data import DataAPI
from datetime import datetime
Map()方法
codes = map(
lambda code: code+'.XSHE' if code.startswith('0') else code+ '.XSHG',
['000001', '601318', '600029', '000089', '000402', '000895', '600016', '000858', '600036', '600050']
)
codes
设置config.py的位置
DataAPI.set_file("config.py")
从DataAPI获取日线
candle = DataAPI.candle(tuple(codes), 'D', start=datetime(2016, 1, 1), end=datetime(2016, 12, 31))
candle['000001.XSHE'].tail()
计算一只股票的atr
import talib as ta
ta.abstract.ATR(candle['000001.XSHE'], timeperiod=10).tail()
使用iteritem()遍历所有股票的K线传入一个方法计算并返回atr
def atr_10(item):
name, data = item
return name, ta.abstract.ATR(data, timeperiod=10)
for item in candle.iteritems():
print atr_10(item)
用map()简化代码并生成字典{code: atr}
atrs = dict(map(atr_10, candle.iteritems()))
atrs
将字典生成DataFrame
import pandas as pd
atrs = pd.DataFrame(atrs)
atrs.tail()
计算日线数据的MACD值
计算一只股票的MACD
ta.abstract.MACD(candle['000001.XSHE']).tail()
生成{code: MACD}格式的字典(与上面方法一样)
MACDs = {name: ta.abstract.MACD(value) for name, value in candle.iteritems()}
生成panel
indicators = pd.Panel.from_dict(MACDs)
将atr插入indicators,获得一个Panel(包含MACD的三个指标和atr)
indicators.loc[:, :, 'atr'] = atrs
indicators
使用stack()方法将DataFrame转换成MultiIndexSeries
indicators.minor_xs("atr").stack()
将panel转换成MultiIndexDataFrame展示
pd.DataFrame(
{name: indicators.minor_xs(name).stack() for name in indicators.minor_axis}
).tail(20)