Click Image To Enlarge. Please Rate And Comment.
// PIBD DMI Histogram // Developed by James Pujals 2004-2005 // Scaling > Custom > Min: -60 Max: 60 // Grid Lines > +/-100 //_SECTION_BEGIN("DI-Diff"); // In Paramater dialog, why does DI-Diff Parameter and PIBD DMI Histogram (1023) Parameter show // Only DI-Diff Parameter affects indicator when value is changed Periods = Param("DMI/ADX Periods",10,5,40,1,1); _N( strPeriods = "("+WriteVal( Periods, 1.0 )+")" ); DiDiff = PDI(Periods) - MDI(Periods); Plot( DiDiff, "DI_Diff "+strPeriods, colorYellow, styleHistogram ); //======================================== // INITIALIZATION FirstBar = -1; for(i=0;i < BarCount;++i) { DiffBuySell[i] = 0; // 0=closed,1=position opened ShapeArray[i] = 0; if (DiDiff[i] != 0 AND FirstBar == -1) { FirstBar = i; } } DiffTriggerBuy = 10; DiffTriggerSell = 10; PositionType = 0; SignalBar = 0; SignalDiff = 0; //======================================== for (BIndex=FirstBar; BIndex < BarCount;++BIndex) { if (BIndex == FirstBar) { SignalBar = BIndex; SignalDiff = DiDiff[BIndex]; if (DiDiff[BIndex] > 0) { PositionType = 1; // BUY DiffBuySell[BIndex] = 20; ShapeArray[BIndex] = shapeUpArrow; // Plot below } else { PositionType = -1; // SELL DiffBuySell[BIndex] = -20; ShapeArray[BIndex] = shapeDownArrow; // Plot above } } else { if (PositionType == 1) { if (SignalDiff < DiDiff[BIndex]) { SignalBar = BIndex; SignalDiff = DiDiff[BIndex]; } if ((DiDiff[SignalBar] - DiDiff[BIndex]) > DiffTriggerSell) { PositionType = -1; // SELL SignalBar = BIndex; SignalDiff = DiDiff[BIndex]; DiffBuySell[BIndex] = -20; ShapeArray[BIndex] = shapeDownArrow; // Plot above } else { DiffBuySell[BIndex] = DiffBuySell[BIndex-1]; ShapeArray[BIndex] = shapeNone; // Plot nothing } } else { //PositionType = -1 if (SignalDiff > DiDiff[BIndex]) { SignalBar = BIndex; SignalDiff = DiDiff[BIndex]; } if ((DiDiff[Bindex] - DiDiff[SignalBar]) > DiffTriggerBuy) { PositionType = 1; // BUY SignalBar = BIndex; SignalDiff = DiDiff[BIndex]; DiffBuySell[BIndex] = 20; ShapeArray[BIndex] = shapeUpArrow; // Plot below } else { DiffBuySell[BIndex] = DiffBuySell[BIndex-1]; ShapeArray[BIndex] = shapeNone; // Plot nothing } } } //_TRACE("BIndex="+NumToStr(BIndex)+" SignalBar="+NumToStr(SignalBar)+" SignalDiff="+NumToStr(SignalDiff)+" PositionType="+NumToStr(PositionType) + " DiDiff[BIndex]="+NumToStr(DiDiff[BIndex]) ); } //======================================== //Plot( DiffBuySell, "DiffBuySell", colorRed, styleDots | styleNoLine | styleThick ); PlotShapes( ShapeArray, IIf(ShapeArray == shapeUpArrow, colorGreen, colorRed ), 0, DiDiff); //======================================== PlotGrid( 10, colorWhite); // PDI Positive Strength Line PlotGrid( 0, colorWhite); // Neutral Zone PlotGrid( -10, colorWhite); // MDI Negative Strength Line //_SECTION_END();