//+------------------------------------------------------------------+ //| ADX_MA.mq4 | //| Copyright © 2011, Robert Hill | //| | //| Plots the ADX with MA of ADX | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Robert Hill" #property link "http://www.mrpipforex.com/" #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Aqua #property indicator_color2 Lime #property indicator_color3 Wheat #property indicator_color4 Red #property indicator_width1 1 #property indicator_width2 1 #property indicator_width3 1 #property indicator_width4 1 extern int ADX_Period = 14; extern string p = "--Applied Price Types--"; extern string p0 = " 0 = close"; extern string p1 = " 1 = open"; extern string p2 = " 2 = high"; extern string p3 = " 3 = low"; extern string p4 = " 4 = median(high+low)/2"; extern string p5 = " 5 = typical(high+low+close)/3"; extern string p6 = " 6 = weighted(high+low+close+close)/4"; extern int ADX_Price = 0; extern int MA_Period = 21; extern string m = "--Moving Average Modes--"; extern string m0 = " 0 = SMA"; extern string m1 = " 1 = EMA"; extern string m2 = " 2 = SMMA"; extern string m3 = " 3 = LWMA"; extern int MA_Mode = 0; int MAMode; double ADX[]; double plusDI[]; double minusDI[]; double ADX_MA[]; int init() { string strMAType; SetIndexStyle(0, DRAW_LINE, STYLE_SOLID); SetIndexBuffer(0, ADX); SetIndexStyle(1, DRAW_LINE, STYLE_DOT); SetIndexBuffer(1, plusDI); SetIndexStyle(2, DRAW_LINE, STYLE_DOT); SetIndexBuffer(2, minusDI); SetIndexStyle(3, DRAW_LINE, STYLE_SOLID); SetIndexBuffer(3, ADX_MA); switch (MA_Mode) { case 1: strMAType="EMA"; MAMode=MODE_EMA; break; case 2: strMAType="SMMA"; MAMode=MODE_SMMA; break; case 3: strMAType="LWMA"; MAMode=MODE_LWMA; break; default: strMAType="SMA"; MAMode=MODE_SMA; break; } IndicatorShortName("ADX_MA(" + ADX_Period + ") " + strMAType + "(" + MA_Period + ")"); SetIndexLabel(0, "ADX"); SetIndexLabel(1, "plusDI"); SetIndexLabel(2, "minusDI"); SetIndexLabel(3, "ADX_MA"); return (0); } int deinit() { return (0); } int start() { int counted_bars = IndicatorCounted(); if (counted_bars < 0) return (-1); if (counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; for (int i = 0; i < limit; i++) { ADX[i] = iADX(NULL, 0, ADX_Period, ADX_Price, MODE_MAIN, i); plusDI[i] = iADX(NULL, 0, ADX_Period, ADX_Price, MODE_PLUSDI, i); minusDI[i] = iADX(NULL, 0, ADX_Period, ADX_Price, MODE_MINUSDI, i); } for ( i = 0; i < limit; i++) { ADX_MA[i]=iMAOnArray(ADX,Bars,MA_Period,0,MAMode,i); } return (0); }