//+------------------------------------------------------------------+ //| | //| Copyright © 2000-2007, MetaQuotes Software Corp. | //| http://www.metaquotes.ru | //+------------------------------------------------------------------+ // Казахский Удав.mq4 // 2009.12 - добавлены фибо уровни, "nen"(ом) c форума MQL, по просьбе Martingeila #property copyright "" #property link "mandorr@gmail.com" #property link "http://astrofx.do.am" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 DarkGray //---- extern int Length=6; extern int CountBars=1000; // Количество обсчитываемых баров extern bool fibo=true; extern color colorFibo = DimGray; //---- double buffer[]; double lBar, hBar; datetime tiZZ; double p1,p2; datetime t1,t2; double fi_1[]={0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0, 1.618, 2.618, 3.618, 4.618, 5.618}; string fitxt100_1[]={"0.0", "23.6", "38.2", "50.0", "61.8", "78.6", "100.0", "161.8", "261.8", "361.8", "461.8", "561.8"}; int Sizefibo; string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"}; string Period_tf; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void init() { SetIndexStyle(0,DRAW_SECTION,0,1); SetIndexBuffer(0,buffer); SetIndexLabel(0,"Value"); SetIndexDrawBegin(0,0); Sizefibo=ArraySize(fi_1); switch (Period()) { case 1 : {Period_tf=TF[8];break;} case 5 : {Period_tf=TF[7];break;} case 15 : {Period_tf=TF[6];break;} case 30 : {Period_tf=TF[5];break;} case 60 : {Period_tf=TF[4];break;} case 240 : {Period_tf=TF[3];break;} case 1440 : {Period_tf=TF[2];break;} case 10080 : {Period_tf=TF[1];break;} case 43200 : {Period_tf=TF[0];break;} } } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function. Начало. | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("_%fibo"); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function. Конец. | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void start() { int shift, zu, zd, Swing, Swing_n, i, i1, i2; double HH, LL, BH, BL; //---- if (tiZZ!=Time[0] || lBarHigh[0]) // micmed+nen { tiZZ=Time[0]; lBar=Low[0]; hBar=High[0]; if ((Bars-IndicatorCounted()-1)>2) ArrayInitialize(buffer,EMPTY_VALUE); } else return; Swing=0; Swing_n=0; shift=CountBars-1; zu=shift; zd=shift; BH=High[shift]; BL=Low[shift]; //---- for(shift=CountBars-1; shift>=0; shift--) { HH=High[Highest(NULL,0,MODE_HIGH,Length,shift+1)]; LL=Low [Lowest (NULL,0,MODE_LOW ,Length,shift+1)]; if (Low[shift]HH) { Swing=2; if (Swing_n== 1) zu=shift+1; if (Swing_n==-1) zd=shift+1; } else { if (Low [shift]HH) Swing= 1; } if (Swing!=Swing_n && Swing_n!=0) { if (Swing== 2) {Swing=-Swing_n; BH=High[shift]; BL=Low[shift];} if (Swing== 1) {buffer[zd]=BL; i1=i2; i2=zd;} if (Swing==-1) {buffer[zu]=BH; i1=i2; i2=zu;} BH=High[shift]; BL=Low [shift]; } if (Swing== 1) {if (High[shift]>=BH) {BH=High[shift]; zu=shift;}} if (Swing==-1) {if (Low [shift]<=BL) {BL=Low [shift]; zd=shift;}} Swing_n=Swing; } if (fibo) { p1=buffer[i1]; t1=Time[i1]; p2=buffer[i2]; t2=Time[i2]; string nameObj="_%fibo"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBO,0,t1,p1,t2,p2); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,colorFibo); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_WIDTH,0); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_LEVELWIDTH,0); ObjectSet(nameObj,OBJPROP_BACK,true); ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefibo); for (i=0;i