HandleData
from fxdayu_data import DataAPIfrom 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 tata.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 pdatrs = 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'] = atrsindicators
使用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)