Think this might be quick so I'll take it.

Pass the price on that bar/day by using an indexer to get a scalar -

bo.EnterTrade(i, "BATS", True, LpairPrice[ i ], -20);

BTW, you might want to get the invariant outside the loop.
IOW, move the Foreign() call outside of the "i" loop.


--- In [email protected], "necroboy2" <blair.an...@...> wrote:
>
> Hi All, I'm getting Error 19 when I try to call EnterTrade for a
> predefined symbol. I would appreciate if someone could please tell me
> I'm an idiot for missing something obvious in the following......
> In CBT we typically have this type of code which places a trade on the
> currently obtained signal, but if I also want to enter a long trade on
> the symbol "BATS" whenever a short entry is made then the line
> highlighted in yellow should do the trick. However its giving me an
> Error 19.Any suggestions?
> SetCustomBacktestProc("");if (Status("action") == actionPortfolio){
> bo = GetBacktesterObject();       //  Get backtester object
> bo.PreProcess();   //  Do pre-processing    for (i = 0; i < BarCount;
> i++)    //  Loop through all bars    {        for (sig =
> bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i))        {      //
> Loop through all signals at this bar            if (sig.IsEntry() &&
> sig.IsLong())    //  Process long entries
> bo.EnterTrade(i, sig.Symbol, sig.IsLong(), sig.Price, sig.PosSize);
> else            {                //  Process long exits
> if (sig.IsExit() && sig.IsLong())                       
bo.ExitTrade(i,
> sig.Symbol, sig.Price);            }
>              //  Process short entries             if (sig.IsEntry()
&&
> !sig.IsLong())                {                bo.EnterTrade(i,
> sig.Symbol, sig.IsLong(), sig.Price, sig.PosSize);
> LpairPrice = Foreign("BATS", "C");
>                  // HERE is where I get Error 19. COM method/function
> 'EnterTrade' call failed                bo.EnterTrade(i, "BATS", True,
> LpairPrice, -20);            }            else            {
> if (sig.IsExit() && !sig.IsLong())    //  Process short exits
> bo.ExitTrade(i, sig.Symbol, sig.Price);            }
>          }      //  End of for loop over signals at this bar
> bo.HandleStops(i);     //  Handle programmed stops at this bar
> bo.UpdateStats(i, 1);  //  Update MAE/MFE stats for bar
> bo.UpdateStats(i, 2);  //  Update stats at bar's end    }   //  End of
> for loop over bars    bo.PostProcess();  //  Do post-processing}
>
>
> // Simple trade rules for this exampleBuy = Cross( MA(C,5), MA(C,20)
> );Sell = Cross( MA(C,20), MA(C,5) );
> Short = Cross( MA(C,30), MA(C,10) );Cover = Cross( MA(C,10), MA(C,30)
);
>

Reply via email to