一、前言
PyAlgoTrade是一个Python的算法交易库,支持策略回测和实时交易,提供了丰富的统计和分析功能。github地址:GitHub - gbeced/pyalgotrade: Python Algorithmic Trading Library
二、使用
PyAlgoTrade是一个功能强大的Python量化交易平台,它允许开发者以编程方式进行交易策略的开发、测试和执行。以下是关于如何使用PyAlgoTrade的基本指南:
- 安装:首先,需要在你的Python环境中安装PyAlgoTrade。这可以通过pip命令来完成,如下:
pip install pyalgotrade
- 创建策略:在PyAlgoTrade中,你需要创建一个策略类,该类继承自pyalgotrade.strategy.BacktestingStrategy。在这个策略类中,你需要定义你的交易逻辑,例如何时买入、何时卖出等。
- 加载数据:PyAlgoTrade支持从CSV文件、在线API、数据库等多种方式加载数据。你可以选择最适合你的方式来加载你需要的交易数据。
- 回测:一旦你的策略和数据都准备好了,你就可以进行回测了。PyAlgoTrade提供了详细的回测报告,包括交易记录、收益率、最大回撤等信息。
- 实盘交易:如果你对你的策略满意,你也可以使用PyAlgoTrade进行实盘交易。PyAlgoTrade支持与多个交易所的API进行接口,你可以直接通过PyAlgoTrade下单和执行交易。
- 高级功能:PyAlgoTrade还提供了一些高级功能,如参数优化、事件驱动模型、策略组合等。这些功能可以帮助你更好地开发和优化你的交易策略。
三、策略
基于PyAlgoTrade编写一个策略,创建一个简单的交易策略,该策略在10日移动平均线上穿过30日移动平均线时买入,10日移动平均线下穿过30日移动平均线时卖出。
from pyalgotrade import strategy
from pyalgotrade.technical import ma
from pyalgotrade.technical import crossclass MyStrategy(strategy.BacktestingStrategy):def __init__(self, feed, instrument):super(MyStrategy, self).__init__(feed)self.__instrument = instrument# We'll use adjusted close values instead of regular close values.self.setUseAdjustedValues(True)self.__priceDataSeries = feed[instrument].getPriceDataSeries()self.__sma10 = ma.SMA(self.__priceDataSeries, 10)self.__sma30 = ma.SMA(self.__priceDataSeries, 30)def onBars(self, bars):# If a position was not opened, check if we should enter a long position.if self.__sma10[-1] is not None and self.__sma30[-1] is not None:if self.getBroker().getCash() >= bars[self.__instrument].getPrice() * 100:if cross.cross_above(self.__sma10, self.__sma30) > 0:self.enterLong(self.__instrument, 100)# Check if we have to exit the position.elif cross.cross_below(self.__sma10, self.__sma30) > 0:self.exitAll()
在此策略中,我们首先定义了一个名为MyStrategy的类,该类继承自pyalgotrade.strategy.BacktestingStrategy。然后,我们在类的初始化方法中,设置了使用调整后的收盘价,以及定义了两个移动平均线(10日和30日)。
然后,在onBars
方法中,我们每次接收到新的行情数据时都会执行这个方法。在这个方法中,我们首先检查10日移动平均线是否上穿过30日移动平均线,如果是的话,就用全部现金以当前价格买入。如果我们已经有持仓,且10日移动平均线下穿过30日移动平均线,那么就卖出所有持仓。