Hi again. I think you may be trying to treat as arrays some items whose typeof() is number.
Below is a section of the code with a few extra printf() statements, showing that, for example, nbuy_ is a number, not an array. Despite this, later notation such as: nbuy_[i] = 1; is silently accepted. I think that to get the results you want may require very careful attention to types, and possibly a different idiom than you are using. There may be little help in that generalization, but I've not personally written/tested AFL ala your example, so I don't have a ready-made "solution" available to offer. (Others might.) ----------- //filter the raw signals nBuy_ = nSell_ = nShort_ = nCover_ = 0; // make sure all arrays are set empty printf( "\ntypeof(nBuy_): " + typeof(nBuy_) ) ; printf( "\ntypeof(Buy_): " + typeof(Buy_) ) ; printf( "\nAfter initialization: \n" ) ; printf( "nBuy_= %g nSell_= %g\n", nBuy_, nSell_ ); printf( "nShort_ = %g nCover_= %g\n", nShort_, nCover_ ); inBuy = inShort = 0; vinBuy = vinShort = 0; eprice = 0; // veprice = 0; // branch = 0; printf( "\ntypeof(inBuy): " + typeof(inBuy) ) ; printf( "\ntypeof(branch): " + typeof(branch) ) ; --- In amibroker@yahoogroups.com, "redberryys" <redberr...@...> wrote: > > Hi progster, > Thank you for your response. I've tried it and it still does the same thing. > I should add that the printed variables are incorrect themselves [not only in > relation with the arrows]. > An example: > > sys5_bug > Date: 7/24/2008 10:57:00 PM > > PBuy_= 0 PSell_= 1 > PShort_ = 0 PCover_= 0 > nBuy_= 0 nSell_= 0 > nShort_ = 0 nCover_= 0 > inBuy = 1 inShort = 0 > Branch= 3 > > Next bar: > sys5_bug > Date: 7/24/2008 10:58:00 PM > > PBuy_= 0 PSell_= 1 > PShort_ = 1 PCover_= 0 > nBuy_= 0 nSell_= 0 > nShort_ = 1 nCover_= 0 > inBuy = 0 inShort = 1 > Branch= 10 > > at 10:57, Branch 3 does not modify inBuy, which was 1; how did it become 0 at > 10:58? > > Incidentally, at 10:58, nShort_ is 1, but the triangle shape is not shown. > > Thank you, > Alex > > Here's the code exhibiting the bug, simplified further: > > SetBarsRequired( -1, -1 ); > OptimizerSetEngine("cmae"); > > Med = (High+Low)/2; stopLine = EMA(Med,5); > > ml = MACD(12, 26); sl = Signal(12,26,9); macd_h = ml-sl; > > rstopline = Ref(stopLine, -1); > rmacd_h=Ref(macd_h,-1); > > Hoc = Max(O,C); Loc = Min(O,C); rC = Ref(C,-1); rH = Ref(H,-1); rL = > Ref(L,-1); > stopin = rH>=rstopLine && rstopLine >=rL; > > Buy_=rmacd_h>0 && rC > rstopLine && !stopin && stopline > rstopline && > rmacd_h < macd_h ; > Sell_= (L < rstopLine); > Short_=rmacd_h<0 && rC < rstopLine && !stopin && stopline < rstopline && > rmacd_h > macd_h; > Cover_=(H > rstopLine); > > //just for debug > pBuy = Buy_; pSell = Sell_; pShort = Short_; pCover = Cover_; > > printf("PBuy_= %g PSell_= %g\n", PBuy, PSell); > printf("PShort_ = %g PCover_= %g\n", PShort, PCover); > > //filter the raw signals > nBuy_ = nSell_ = nShort_ = nCover_ = 0; // make sure all arrays are set empty > > tRange = 0.0010; //modify this for stocks > inBuy = inShort = 0; > vinBuy = vinShort = 0; > eprice = 0; // > veprice = 0; // > branch = 0; > for( i = 0; i < BarCount; i++ ) > { //these are just for tracing > // veprice[i] = eprice; VInBuy[i] = inBuy; VInShort[i] = inShort; > branch[i] = 0; > if (inBuy == 1){ > branch[i] = 1; > nbuy_[i] = 0; nshort_[i] = 0; ncover_[i] = 0; > if (sell_[i]){ > branch[i] = 2; > if (C[i] > (eprice - tRange) && C[i] < (eprice + tRange)) { > branch[i] = 3; > nsell_[i] = 0; > } else { > branch[i] = 4; > nsell_[i] = 1; > inBuy = 0; > } > } > } else { //inBuy == 0 > if (inShort == 1){ > branch[i] = 5; > nbuy_[i] = 0; nsell_[i] = 0; nshort_[i] = 0; > if (cover_[i]){ > if (C[i] > (eprice - tRange) && C[i] < (eprice + tRange)) { > branch[i] = 6; > ncover_[i] = 0; > } else { > branch[i] = 7; > ncover_[i] = 1; > inShort = 0; > } > } > } else { > branch[i] = 8; > if (buy_[i] == 1) { > branch[i] = 9; > nbuy_[i] = 1; > eprice = C[i]; > inBuy = 1; > ncover_[i] = 0; nshort_[i] = 0; nSell_[i] = 0; > } else if (short_[i] == 1){ > branch[i] = 10; > nshort_[i] = 1; > eprice = C[i]; > inShort = 1; > ncover_[i] = 0; nsell_[i] = 0; > } else { > branch[i] = 11; > ncover_[i] = 0; > nsell_[i] = 0; > } > } > } //end inBuy == 0 > veprice[i] = eprice; VInBuy[i] = inBuy; VInShort[i] = inShort; > } > > printf("nBuy_= %g nSell_= %g\n", nBuy_, nSell_); > printf("nShort_ = %g nCover_= %g\n", nShort_, nCover_); > printf("inBuy = %g inShort = %g\n", vinBuy, vinShort); > printf("Branch= %g \n", branch); > > Plot( C, "Close", colorBlack, styleNoTitle | ParamStyle("Style") | > GetPriceStyle()); > Plot(stopLine , _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), > ParamStyle("Style",styleNoLabel, maskDefault) ); > > // plot shapes with colors that are different from candle colors > PlotShapes( shapeSmallUpTriangle*nBuy_, colorBlue ); > PlotShapes( shapeHollowSmallDownTriangle*nSell_, colorBlue ); > PlotShapes( shapeSmallDownTriangle*nShort_, colorYellow ); > PlotShapes( shapeHollowSmallUpTriangle*nCover_, colorYellow ); >