//+------------------------------------------------------------------+ //| EMD.mq5 | //| | //| https://www.mql5.com/ru/market/product/11550 | //+------------------------------------------------------------------+ #property copyright "baramantan" #property link "https://www.mql5.com/ru/market/product/11550" #property version "1.00" #property description "Visit my project NeuroPlus" #property description "https://www.mql5.com/ru/market/product/11550" #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_label1 "EMD" #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 clrOrangeRed,clrBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 2 input int CALC=5000; input int EMD_1 = 1; input int EMD_2 = 2; input int EMD_3 = 3; input int EMD_4 = 4; input int EMD_5 = 5; input int EMD_6 = 6; input int EMD_7 = 7; input int EMD_8 = 8; input int EMD_9 = 9; input int EMD_10= 10; input int EMD_11= 11; input int EMD_12= 12; input int EMD_13= 13; input int EMD_14= 14; input int EMD_15= 15; int prev=-1; int prev2=0; #include "CEMD_2.mqh" double Buffer[]; double Color[]; double d1[],d2[]; CEMD *emd=new CEMD(); //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void Init() { SetIndexBuffer(0,Buffer,INDICATOR_DATA); SetIndexBuffer(1,Color,INDICATOR_COLOR_INDEX); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { Init(); prev2=CALC; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { delete emd; } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(prev0 && EMD_10 && EMD_20 && EMD_30 && EMD_40 && EMD_50 && EMD_60 && EMD_70 && EMD_80 && EMD_90 && EMD_100 && EMD_110 && EMD_120 && EMD_130 && EMD_140 && EMD_150 && d2[x-1-kl]>d2[x-kl])Color[rates_total-1-kl]=1;else Color[rates_total-1-kl]=0; } return (rates_total); } //+------------------------------------------------------------------+