我正在使用pyalgotrade
一种交易策略,我想在一个列表中使用多个代码。
它现在的设置方式,它为列表中的每个单独的代码运行策略,但我想要它做的是将它们作为一个复合策略运行。
我该怎么做呢?
这是代码:
from pyalgotrade.tools import yahoofinance
from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed
from pyalgotrade.technical import stoch
from pyalgotrade import dataseries
from pyalgotrade.technical import ma
from pyalgotrade import technical
from pyalgotrade.technical import highlow
from pyalgotrade import talibext
from pyalgotrade.talibext import indicator
import numpy as np
import talib
testlist = ['aapl', 'msft', 'z']
class MyStrategy( strategy.BacktestingStrategy ):
def __init__( self, feed, instrument ):
strategy.BacktestingStrategy.__init__( self, feed )
self.__position = []
self.__instrument = instrument
self.setUseAdjustedValues( True )
self.__prices = feed[instrument].getPriceDataSeries()
self.__stoch = stoch.StochasticOscillator( feed[instrument], 20, dSMAPeriod = 3, maxLen = 3 )
def onBars( self, bars ):
self.__PPO = talibext.indicator.PPO( self.__prices, len( self.__prices ), 12, 26, matype = 1 )
try: slope = talib.LINEARREG_SLOPE( self.__PPO, 3 )[-1]
except Exception: slope = np.nan
bar = bars[self.__instrument]
self.info( "%s,%s,%s" % ( bar.getClose(), self.__PPO[-1], slope ) )
if self.__PPO[-1] is None:
return
for inst in self.__instrument:
print inst
#INSERT STRATEGY HERE
def run_strategy():
# Load the yahoo feed from the CSV file
instruments = ['aapl', 'msft', 'z']
feed = yahoofinance.build_feed(instruments,2015,2016, ".")
# Evaluate the strategy with the feed.
myStrategy = MyStrategy(feed, instruments)
myStrategy.run()
print "Final portfolio value: $%.2f" % myStrategy.getBroker().getEquity()
run_strategy()