How to create a composite strategy, using multiple instruments, in Pyalgotrade?
<p>I'm using <strong><code>pyalgotrade</code></strong> for a trading strategy where I want to use multiple tickers in a list.</p>

<p>The way it is set up now, it runs the strategy for each individual ticker in the list, but what I want it to do is to run them all as one, composite strategy.</p>

<p><strong>How do I go about doing this?</strong></p>

<p>Here is the code:</p>

<pre><code>    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()
</code></pre>