pyalgotrade tushare module
Project description
开源协议: MIT license
安装方法
# PIP 自动安装方法 pip install pyalgotrade_tushare # 手动下载源码安装 git clone https://github.com/bopo/pyalgotrade_tushare.git cd pyalgotrade_tushare python setup.py install
使用说明
不多话,简单一个例子
from pyalgotrade import plotter, strategy
from pyalgotrade.stratanalyzer import sharpe
from pyalgotrade.technical import ma
from pyalgotrade_tushare import tools
class MyStrategy(strategy.BacktestingStrategy):
def __init__(self, feed, instrument):
super().__init__(feed)
self.__position = None
self.__sma = ma.SMA(feed[instrument].getCloseDataSeries(), 150)
self.__instrument = instrument
self.getBroker()
def onEnterOk(self, position):
execInfo = position.getEntryOrder().getExecutionInfo()
self.info("买入 %.2f" % (execInfo.getPrice()))
def onEnterCanceled(self, position):
self.__position = None
def onExitOk(self, position):
execInfo = position.getExitOrder().getExecutionInfo()
self.info("卖出 %.2f" % (execInfo.getPrice()))
self.__position = None
def onExitCanceled(self, position):
# If the exit was canceled, re-submit it.
self.__position.exitMarket()
def getSMA(self):
return self.__sma
def onBars(self, bars):
# 每一个数据都会抵达这里,就像becktest中的next
# Wait for enough bars to be available to calculate a SMA.
if self.__sma[-1] is None:
return
# bar.getTyoicalPrice = (bar.getHigh() + bar.getLow() + bar.getClose())/ 3.0
bar = bars[self.__instrument]
# If a position was not opened, check if we should enter a long position.
if self.__position is None:
if bar.getPrice() > self.__sma[-1]:
# 开多头.
self.__position = self.enterLong(self.__instrument, 100, True)
# 平掉多头头寸.
elif bar.getPrice() < self.__sma[-1] and not self.__position.exitActive():
self.__position.exitMarket()
if __name__ == '__main__':
instruments = ["600036"]
feeds = tools.build_feed(instruments, 2013, 2018, "histdata")
# 3.实例化策略
strat = MyStrategy(feeds, instruments[0])
# 4.设置指标和绘图
ratio = sharpe.SharpeRatio()
strat.attachAnalyzer(ratio)
plter = plotter.StrategyPlotter(strat)
# 5.运行策略
strat.run()
strat.info("最终收益: %.2f" % strat.getResult())
# 6.输出夏普率、绘图
strat.info("夏普比率: " + str(ratio.getSharpeRatio(0)))
plter.plot()
版本更新
修改了 PIP 安装程序问题
本程序只支持 python3.
贡献名单
bopo.wang
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters