如何在Pyalgotrade中使用多种工具创建复合策略?

Rag*_*ine 8 python quantitative-finance yahoo-finance pyalgotrade ta-lib

我正在使用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()
Run Code Online (Sandbox Code Playgroud)

小智 2

您可以使用此示例作为交易多种工具的指南:http://gbeced.github.io/pyalgotrade/docs/v0.18/html/sample_statarb_erniechan.html