Multi-Instrument Optimizations

Created at 08 Jul 2020, 03:25
How’s your experience with the cTrader Platform?
Your feedback is crucial to cTrader's development. Please take a few seconds to share your opinion and help us improve your trading experience. Thanks!
N2

n2535904

Joined 25.10.2018

Multi-Instrument Optimizations
08 Jul 2020, 03:25


Hi, 

I'm successfully backtesting my cBots with multiple instruments.  For some reason when I try to run an optimization though this morning I don't get any results / shows the different run combinations but nothing runs.

If I restrict my code to only one instrument in my list (ie: one name in PairsToTrade variable below) I get typical optimization results for each pass.

Does cAlgo allow calls to multiple instruments in optimisztions?   IT allows multiple timeframes, and in backtesting, so I can't work out why this isn't working. 

code overview below:

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
    public class myRobot: Robot
    {


        const int num_instruments = 6;
        public enum PairsToTrade
        {
            EURUSD,
            GBPUSD,
            AUDUSD,
            XTIUSD,
            XAUUSD,
            AUS200
        }


        private AS_1_1_HighLow[] AS_HL_trigger = new AS_1_1_HighLow[num_instruments];
        private Bars[] AS_RSI_Div_S_bars = new Bars[num_instruments];
        private AverageTrueRange[] trailTickATR = new AverageTrueRange[num_instruments];
        private Bars[] mainBars = new Bars[num_instruments];

        protected override void OnStart()
        {

            // Subscribe to the positions opened event.
            Positions.Opened += PositionsOnOpened;

            // Subscribe to the positions closed event.
            Positions.Closed += PositionsOnClosed;


            int i = 0;
            foreach (string myPair in Enum.GetNames(typeof(PairsToTrade)))
            {
                AS_RSI_Div_S_bars[i] = MarketData.GetBars(TimeFrame, myPair);
                // pass correct instrument and TF to our custom indicator
                AS_RSI_Div_S[i] = Indicators.GetIndicator<AS_RSI_Divergence_Short>(AS_RSI_Div_S_bars[i], RSIPeriod, ...other vars);

                // ATR for our trail exit
                mainBars[i] = MarketData.GetBars(TimeFrame, myPair);
                trailTickATR[i] = Indicators.AverageTrueRange(mainBars[i], tickExit_trail_ATR_period, MovingAverageType.Simple);

                

                i++;
            }

        }

///


 protected override void OnBar()
        {
            foreach (string myPair in Enum.GetNames(typeof(PairsToTrade)))
            {
                int SymIndex = mySymIndex(myPair);  // returns correct index to reference each series

////
// do something
// eg:
                DataSeries H = MarketData.GetBars(TimeFrame, myPair).HighPrices;
                DataSeries L = MarketData.GetBars(TimeFrame, myPair).LowPrices;
                DataSeries C = MarketData.GetBars(TimeFrame, myPair).ClosePrices;

                //  example reference ATR timeseries:
                double testOut = trailTickATR[SymIndex].Result.LastValue;

////////

             }
        }



 


@n2535904
Replies

PanagiotisCharalampous
08 Jul 2020, 08:33

Hi n2535904,

Optimization for mutlisymbol strategies is not supported at the moment.

Best Regards,

Panagiotis 

Join us on Telegram

 


@PanagiotisCharalampous