//+-------------------------------------------------------------------------------------+ //| NB_SHI_Channel.mq4 | //| Copyright © 2005, Nick Bilak | //| edit by Scriptong | //+-------------------------------------------------------------------------------------+ #property copyright "Copyright © 2005, Nick Bilak, edit by Scriptong" #property link "" #property indicator_chart_window extern int AllBars = 240; extern int BarsForFract = 0; int CurrentBar = 0; int B1 = -1, B2 = -1, UpDown = 0, i = 0, AB = 300, BFF = 0; double P1 = 0, P2 = 0, PP = 0, Step = 0; datetime T1, T2; bool Activate; //+-------------------------------------------------------------------------------------+ //| Custom indicator initialization function | //+-------------------------------------------------------------------------------------+ int init() { //---- Activate = False; if ((AllBars==0) || (Bars 0) BFF = BarsForFract; else switch (Period()) { case 1: BFF=12; break; case 5: BFF=48; break; case 15: BFF=24; break; case 30: BFF=24; break; case 60: BFF=12; break; case 240: BFF=15; break; case 1440: BFF=10; break; case 10080: BFF=6; break; default: return(-1); break; } Activate = True; //---- return(0); } //+-------------------------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+-------------------------------------------------------------------------------------+ int deinit() { //---- if (ObjectFind("TL1") == 0) ObjectDelete("TL1"); if (ObjectFind("TL2") == 0) ObjectDelete("TL2"); if (ObjectFind("MIDL") == 0) ObjectDelete("MIDL"); //---- return(0); } //+-------------------------------------------------------------------------------------+ //| Отображение канала | //+-------------------------------------------------------------------------------------+ void ShowChannel() { // - 1 - ======================== Отображение нижней линии канала ======================= if (ObjectFind("TL1") < 0) { ObjectCreate("TL1",OBJ_TREND,0,T2,PP+Step*B2,T1,PP); ObjectSet("TL1",OBJPROP_COLOR,Lime); ObjectSet("TL1",OBJPROP_WIDTH,2); ObjectSet("TL1",OBJPROP_STYLE,STYLE_SOLID); } else { ObjectMove("TL1", 0, T2, PP+Step*B2); ObjectMove("TL1", 1, T1, PP); } // - 1 - ================================ Окончание блока =============================== // - 2 - ======================== Отображение верхней линии канала ====================== if (ObjectFind("TL2") < 0) { ObjectCreate("TL2",OBJ_TREND,0,T2,P2,T1,P1); ObjectSet("TL2",OBJPROP_COLOR,Lime); ObjectSet("TL2",OBJPROP_WIDTH,2); ObjectSet("TL2",OBJPROP_STYLE,STYLE_SOLID); } else { ObjectMove("TL2", 0, T2, P2); ObjectMove("TL2", 1, T1, P1); } // - 2 - ================================ Окончание блока =============================== // - 3 - ======================== Отображение средней линии канала ====================== if (ObjectFind("MIDL") < 0) { ObjectCreate("MIDL",OBJ_TREND,0,T2,(P2+PP+Step*B2)/2,T1,(P1+PP)/2); ObjectSet("MIDL",OBJPROP_COLOR,Lime); ObjectSet("MIDL",OBJPROP_WIDTH,1); ObjectSet("MIDL",OBJPROP_STYLE,STYLE_DOT); } else { ObjectMove("MIDL", 0, T2, (P2+PP+Step*B2)/2); ObjectMove("MIDL", 1, T1, (P1+PP)/2); } // - 3 - ================================ Окончание блока =============================== WindowRedraw(); } //+-------------------------------------------------------------------------------------+ //| Custom indicator iteration function | //+-------------------------------------------------------------------------------------+ int start() { if (!Activate) return(0); int counted_bars=IndicatorCounted(); //---- CurrentBar=2; B1=-1; B2=-1; UpDown=0; while(((B1==-1) || (B2==-1)) && (CurrentBar-1) && (CurrentBar==iHighest(Symbol(),Period(),MODE_HIGH,BFF*2+1,CurrentBar-BFF))) { if(UpDown==0) { UpDown=1; B1=CurrentBar; P1=High[B1]; } else { B2=CurrentBar; P2=High[B2]; } } CurrentBar++; } if((B1==-1) || (B2==-1)) return(-1); Step=(P2-P1)/(B2-B1);// Нашли К P1=P1-B1*Step; // Нашли B if(UpDown==1) { PP=Low[2]-2*Step; for(i=3;i<=B2;i++) { if(Low[i]PP+Step*i) { PP=High[i]-i*Step;} } } T1=Time[0]; T2=Time[B2]; ShowChannel(); //---- return(0); } //+---------------------------------------------------------------