Hi. Is it possible that you are not seeing some expected arrowhead plots because they are lost in the candle coloring?
IOW, is there still a problem if you try this: // 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 ); --- In amibroker@yahoogroups.com, "redberryys" <redberr...@...> wrote: > > Hi all, > > I hope this is the right place to post this - apologies otherwise & please > redirect me to the right place. > I'm trying to filter some signals using a for loop. > I print the variables in the loop and I 'plotShapes' the same variables. > Results are erratic and inconsistent. > If I move the selection bar, the values printed with printf do not match what > is displayed with plotShapes, and both seem to be incorrect [they do not > reflect the code in the loop, in some instances]. > I use this on EUR.USD-IDEALPRO-CASH , 1 min chart, but the same problem > happens with other tickers and timeframes. I use Amibroker 5.24 beta, but it > happens with 5.20 as well. > Has anyone encountered this before? What could be the problem? > > Thank you, > Alex > > Here's the code, with a few debug aids included: > > SetBarsRequired( -1, -1 ); > OptimizerSetEngine("cmae"); > > stoplineThrL = Optimize("stoplinethrL ", 0.0003, 0,0.001,0.0001); > stoplineThrS = Optimize("stoplinethrS ", 0.0000, 0,0.001,0.0001); > PositionSize= Optimize( "PositionSize", -75, -95,-10,5); > lMaxLoss = Optimize( "lMaxLoss", 0.002 , 0.0006,0.01,0.0001); > lMinGain = Optimize( "lMinGain", 0.0015, 0.0007,0.01,0.0001); > shMaxLoss = Optimize("shMaxLoss", 0.002 , 0.0005,0.01,0.0001); > shMinGain = Optimize("shMinGain", 0.0015, 0.0085,0.01,0.0001); > > 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; > ShortPrice =Max(L,Min(O,stopline)); BuyPrice = > Min(H,Max(O,stopline));//reasonable estimate > > Buy_=rmacd_h>0 && rC > rstopLine && !stopin && stopline > rstopline && > rmacd_h < macd_h ; > Sell_= (L < rstopLine-stoplineThrL); > SellPrice = Max(L,Min(H,rstopLine-stoplineThrL-0.0001));//-0.000002; > > Short_=rmacd_h<0 && rC < rstopLine && !stopin && stopline < rstopline && > rmacd_h > macd_h; > Cover_=(H > rstopLine+stoplineThrS); > CoverPrice = Min(H,Max(L,rstopLine+stoplineThrS+0.0001));//+0.00005; > > Plot( C, "Close", colorBlack, styleNoTitle | ParamStyle("Style") | > GetPriceStyle()); > Plot(stopLine , _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), > ParamStyle("Style",styleNoLabel, maskDefault) ); > > //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 > > 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){ > branch[i] = 1; > nbuy_[i] = 0; nshort_[i] = 0; ncover_[i] = 0; > if (sell_[i]){ > branch[i] = 2; > if (C[i] > (eprice - lMaxLoss) && C[i] < (eprice + lMinGain)) { > branch[i] = 3; > nsell_[i] = 0; > } else { > branch[i] = 4; > nsell_[i] = 1; > inBuy = 0; > } > } > // continue; > } else if (inShort){ > branch[i] = 5; > nbuy_[i] = 0; nsell_[i] = 0; nshort_[i] = 0; > if (cover_[i]){ > if (C[i] < (eprice + shMaxLoss) && C[i] > (eprice - shMinGain)) { > branch[i] = 6; > ncover_[i] = 0; > } else { > branch[i] = 7; > ncover_[i] = 1; > inShort = 0; > } > } > // continue; > } else { > branch[i] = 8; > if (buy_[i]) { > branch[i] = 9; > nbuy_[i] = 1; > eprice = BuyPrice[i]; > inBuy = 1; > ncover_[i] = 0; nshort_[i] = 0; nSell_[i] = 0; > // continue; > } else if (short_[i]){ > branch[i] = 10; > nshort_[i] = 1; > eprice = ShortPrice[i]; > inShort = 1; > ncover_[i] = 0; nsell_[i] = 0; > // continue; > } else { > branch[i] = 11; > ncover_[i] = 0; > nsell_[i] = 0; > } > } > veprice[i] = eprice; VInBuy[i] = inBuy; VInShort[i] = inShort; > > } > > printf("Buy_= %g Sell_= %g\n", nBuy_, nSell_); > printf("Short_ = %g Cover_= %g\n", nShort_, nCover_); > printf("inBuy = %g inShort = %g\n eprice %g\n", vinBuy, vinShort, eprice); > printf("Branch= %g \n", branch); > > PlotShapes(shapeSmallUpTriangle*nBuy_,colorBrightGreen); > PlotShapes(shapeHollowSmallDownTriangle*nSell_,colorBrightGreen); > PlotShapes(shapeSmallDownTriangle*nShort_,colorRed); > PlotShapes(shapeHollowSmallUpTriangle*nCover_,colorRed); >