Hi, Mike Sorry for my silly question, but why do you use setforeign() function here. There is no other symbol here. The only symbol is the one that yielded the previous trading signals here.
thanks/ huanyan --- In [email protected], "Mike" <sfclimb...@...> wrote: > > Hi, > > Sorry, the SetForeign advice was good. But, my example propogated > another error in your original code. sig.PosSize is a scaler, not an > array. As such, you cannot pass the result of an array calculation as > value. Instead, you must calculate the value for the given bar. Your > original example thus becomes: > > SetCustomBacktestProc(""); > > if ( Status( "action" ) == actionPortfolio ) > { > bo = GetBacktesterObject(); > bo.PreProcess(); > > for ( bar = 0; bar < BarCount; bar++ ) > { > CurrentEquity = bo.Equity; > > for ( sig = bo.GetFirstSignal( bar ); sig; sig = > bo.GetNextSignal( bar ) ) > { > SetForeign( sig.Symbol ); > YesterdayClose = Ref(C, -1); > YesterdayATR = Ref(ATR(10), -1); > sig.PosSize = CurrentEquity * YesterdayClose[bar] / > YesterdayATR[bar]; > RestorePriceArrays(); > } > > bo.ProcessTradeSignals( bar ); > } > > bo.PostProcess(); > } > > Note also that you should be calling bo.PostProcess instead of > bo.ListTrades. > > Mike > > --- In [email protected], "ezbentley" <ezbentley@> wrote: > > > > Hi Mike, > > > > Thanks for the attempt to help. However, I still get an error with > the following code: > > > > SetForeign(sig.Symbol); > > sig.PosSize = CurrentEquity * AccountRiskPercent * ref(C, -1) / 100; > > RestorePriceArrays(); > > > > Error 19. COM method/function 'PosSize' call failed. > > > > Thanks, > > >
