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,
> >
>


Reply via email to