Time: 2016-06-14 | Download file:Complex_balance____Ext.mq4
//+------------------------------------------------------------------+ //| EURUSD.mq4 | //| SemSemFX@rambler.ru | //| | //+------------------------------------------------------------------+ #property copyright "SemSemFX@rambler.ru" #property link "" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern int PerFast=0; extern int PerSlow=0; extern int NBars=200; extern int TF=0; extern int Price=6; extern int Mode=3; double Buf[],a,b; int per1,per2; //---- buffers //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorShortName("Complex_balanceExt("+per2+"/"+per1+")"); SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(0,Buf); //---- parameters // for monthly int mn_per = 12; int mn_fast = 3; // for weekly int w_per = 9; int w_fast = 3; // for daily int d_per = 5; int d_fast = 3; // for H4 int h4_per = 12; int h4_fast = 2; // for H1 int h1_per = 24; int h1_fast = 8; // for M30 int m30_per = 16; int m30_fast = 2; // for M15 int m15_per = 16; int m15_fast = 4; // for M5 int m5_per = 12; int m5_fast = 3; // for M1 int m1_per = 30; int m1_fast = 10; if (TF==0) int TFr=Period(); else TFr=TF; if ((PerFast==0)||(PerSlow==0)) {switch(TFr) { case 1: per1 = m1_per; per2 = m1_fast; break; case 5: per1 = m5_per; per2 = m5_fast; break; case 15: per1 = m15_per;per2 = m15_fast; break; case 30: per1 = m30_per;per2 = m30_fast; break; case 60: per1 = h1_per; per2 = h1_fast; break; case 240: per1 = h4_per; per2 = h4_fast; break; case 1440: per1 = d_per; per2 = d_fast; break; case 10080: per1 = w_per; per2 = w_fast; break; case 43200: per1 = mn_per; per2 = mn_fast; break; } } else {per2=PerFast; per1=PerSlow;} //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- проверка на возможные ошибки if(counted_bars<0) return(-1); //---- последний посчитанный бар будет пересчитан if(counted_bars>0) counted_bars-=10; limit=NBars; //---- основной цикл for(int i=0; i0) || (a>0 && b<0)) Buf[i]=(iOpen(0,TF,i)+iHigh(0,TF,i)+iLow(0,TF,i)+iClose(0,TF,i))/4+MathAbs(MathAbs(a)-MathAbs(b))/2*Point; } else Buf[i]=(iOpen(0,TF,i)+iHigh(0,TF,i)+iLow(0,TF,i)+iClose(0,TF,i))/4; } //---- return(0); } //+------------------------------------------------------------------+