//+------------------------------------------------------------------+ //| i-Moving_Average_all_TF_Real_v6xx.mq4 | //| Copyright © 2014, MetaQuotes Software Corp. | //| "http://www.mql4.com/ru/users/costy_" | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #property copyright "Copyright © 2014, MetaQuotes Software Corp." #property link "http://www.mql4.com/ru/users/costy_" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern ENUM_TIMEFRAMES tf=PERIOD_H1; extern int MaPeriod=14; extern ENUM_MA_METHOD MaMethod=MODE_EMA; extern ENUM_APPLIED_PRICE price=PRICE_CLOSE; extern int Shift=0; double MaBuffer[],buf_arrey[]; datetime save_time=0; int i=0; string short_name=""; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void init() { ArraySetAsSeries(buf_arrey,true); //if(tf0;j--) buf_arrey[j]=iMA(Symbol(),tf,1,0,MODE_SMA,price,v); save_time=iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[Bars-1])); in=false; } //--- for(i=Bars-IndicatorCounted(); i>=0; i--) { if(save_time!=iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[i]))) { save_time=iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[i])); buf_arrey[0]=iMA(Symbol(),tf,1,0,MODE_SMA,price,1+iBarShift(Symbol(),tf,Time[i])); ArrayResize(buf_arrey,ArraySize(buf_arrey)+1); } buf_arrey[0]=Price(price); MaBuffer[i]=iMAOnArray(buf_arrey,0,MaPeriod,0,MaMethod,0); } } //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= // функция double Price(price); //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= double Price(int price_) { switch(price_) { case 0 : return (Close[i]); case 1 : return (iMA(Symbol(),tf,1,0,0,PRICE_OPEN,iBarShift(Symbol(),tf,Time[i]))); case 2 : int kol_vo_pois=iBarShift(Symbol(),Period(),iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[i])))-i; if(kol_vo_pois==0) return ( High[i]); return ( High[iHighest(Symbol(),Period(),MODE_HIGH,kol_vo_pois,i)]); case 3 : kol_vo_pois=iBarShift(Symbol(),Period(),iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[i])))-i; if(kol_vo_pois==0) return ( Low[i]); return ( Low[iLowest(Symbol(),Period(),MODE_LOW,kol_vo_pois,i)]); case 4 : kol_vo_pois=iBarShift(Symbol(),Period(),iTime(Symbol(),tf,iBarShift(Symbol(),tf,Time[i])))-i; if(kol_vo_pois==0) return ( (High[i]+Low[i])/2); return ( (High[iHighest(Symbol(),Period(),MODE_HIGH,kol_vo_pois,i)]+Low[iLowest(Symbol(),Period(),MODE_LOW,kol_vo_pois,i)])/2); case 5 : Print("Price not valide"); Comment("Price not valide"); return(0); case 6 : Print("Price not valide"); Comment("Price not valide"); return(0); } return(0); } //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= // функция string TF(); //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= string TF() { switch(tf) { case 1 : return("M1"); case 5 : return("M5"); case 15 : return("M15"); case 30 : return("M30"); case 60 : return("H1"); case 240 : return("H4"); case 1440 : return("D1"); case 10080 : return("W1"); case 43200 : return("MN1"); default : return("Current"); } return("Current"); } //+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=