[关闭]
@Channelchan 2017-07-10T21:00:49.000000Z 字数 1274 阅读 9841

HandleData


  1. from fxdayu_data import DataAPI
  2. from datetime import datetime

Map()方法

  1. codes = map(
  2. lambda code: code+'.XSHE' if code.startswith('0') else code+ '.XSHG',
  3. ['000001', '601318', '600029', '000089', '000402', '000895', '600016', '000858', '600036', '600050']
  4. )
  5. codes

设置config.py的位置

  1. DataAPI.set_file("config.py")

从DataAPI获取日线

  1. candle = DataAPI.candle(tuple(codes), 'D', start=datetime(2016, 1, 1), end=datetime(2016, 12, 31))
  2. candle['000001.XSHE'].tail()

计算一只股票的atr

  1. import talib as ta
  2. ta.abstract.ATR(candle['000001.XSHE'], timeperiod=10).tail()

使用iteritem()遍历所有股票的K线传入一个方法计算并返回atr

  1. def atr_10(item):
  2. name, data = item
  3. return name, ta.abstract.ATR(data, timeperiod=10)
  4. for item in candle.iteritems():
  5. print atr_10(item)

用map()简化代码并生成字典{code: atr}

  1. atrs = dict(map(atr_10, candle.iteritems()))
  2. atrs

将字典生成DataFrame

  1. import pandas as pd
  2. atrs = pd.DataFrame(atrs)
  3. atrs.tail()

计算日线数据的MACD值

计算一只股票的MACD

  1. ta.abstract.MACD(candle['000001.XSHE']).tail()

生成{code: MACD}格式的字典(与上面方法一样)

  1. MACDs = {name: ta.abstract.MACD(value) for name, value in candle.iteritems()}

生成panel

  1. indicators = pd.Panel.from_dict(MACDs)

将atr插入indicators,获得一个Panel(包含MACD的三个指标和atr)

  1. indicators.loc[:, :, 'atr'] = atrs
  2. indicators

使用stack()方法将DataFrame转换成MultiIndexSeries

  1. indicators.minor_xs("atr").stack()

将panel转换成MultiIndexDataFrame展示

  1. pd.DataFrame(
  2. {name: indicators.minor_xs(name).stack() for name in indicators.minor_axis}
  3. ).tail(20)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注