//+------------------------------------------------------------------+ //| Ind-TD-DeMark-1.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Blue //---- input parameters extern bool Commen=true; extern bool TD=true; extern bool TD_Line=true; extern bool Horiz_Line=true; extern bool TakeProf=true; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,217); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,218); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int shift,i,j,H1,H2,L1,L2; double kH,kL,HC1,HC2,HC3,LC1,LC2,LC3; string Comm=""; //--------------------------------------------------------------------------- if (TD==1) { for (shift=Bars-1;shift>0;shift--) { if (High[shift+1]Low[shift] && Low[shift-1]>Low[shift] && Close[shift+2]>Low[shift]) ExtMapBuffer2[shift]=Low[shift]; else ExtMapBuffer2[shift]=0; } ExtMapBuffer1[0]=0; ExtMapBuffer2[0]=0; } else { for (shift=Bars-1;shift>=0;shift--) { ExtMapBuffer1[shift]=0; ExtMapBuffer2[shift]=0; } } //--------------------------------------------------------------------------- j=0; while (NormalizeDouble(Point,j)==0)j++; //--------------------------------------------------------------------------- i=0; while(ExtMapBuffer1[i]==0){i++;if(i>Bars-2){i=0;break;}} H1=i;i++; while(ExtMapBuffer1[i]Bars-2){i=H1;break;}} H2=i; Comm=Comm+"------------------------------------\n"; Comm=Comm+"HTD "+DoubleToStr(High[H2],j)+" "+DoubleToStr(High[H1],j)+"\n"; i=0; while(ExtMapBuffer2[i]==0){i++;if(i>Bars-2){i=0;break;}} L1=i;i++; while(ExtMapBuffer2[i]>Low[L1] || ExtMapBuffer2[i]==0){i++;if(i>Bars-2){i=L1;break;}} L2=i; Comm=Comm+"LTD "+DoubleToStr(Low[L2],j)+" "+DoubleToStr(Low[L1],j)+"\n"; //----------------------------------------------------------------------------------- kH=(High[H2]-High[H1])/(H2-H1); kL=(Low[L1]-Low[L2])/(L2-L1); ObjectCreate("HL",OBJ_TREND,0,0,0,0,0); ObjectCreate("LL",OBJ_TREND,0,0,0,0,0); ObjectCreate("HHL",OBJ_HLINE,0,0,0,0,0); ObjectCreate("HLL",OBJ_HLINE,0,0,0,0,0); if (TD_Line==1) { ObjectSet("HL",OBJPROP_TIME1,Time[H2]);ObjectSet("HL",OBJPROP_TIME2,Time[H1]); ObjectSet("HL",OBJPROP_PRICE1,High[H2]);ObjectSet("HL",OBJPROP_PRICE2,High[H1]); ObjectSet("HL",OBJPROP_COLOR,indicator_color1); ObjectSet("LL",OBJPROP_TIME1,Time[L2]);ObjectSet("LL",OBJPROP_TIME2,Time[L1]); ObjectSet("LL",OBJPROP_PRICE1,Low[L2]);ObjectSet("LL",OBJPROP_PRICE2,Low[L1]); ObjectSet("LL",OBJPROP_COLOR,indicator_color2); } else { ObjectDelete("HL"); ObjectDelete("LL"); } if (Horiz_Line==1) { ObjectSet("HHL",OBJPROP_PRICE1,High[H2]-kH*H2); ObjectSet("HHL",OBJPROP_STYLE,STYLE_DOT); ObjectSet("HHL",OBJPROP_COLOR,indicator_color1); ObjectSet("HLL",OBJPROP_PRICE1,Low[L2]+kL*L2); ObjectSet("HLL",OBJPROP_STYLE,STYLE_DOT); ObjectSet("HLL",OBJPROP_COLOR,indicator_color2); } else { ObjectDelete("HHL"); ObjectDelete("HLL"); } //------------------------------------------------------------------------- ObjectCreate("HC1",OBJ_TREND,0,0,0,0,0); ObjectCreate("HC2",OBJ_TREND,0,0,0,0,0); ObjectCreate("HC3",OBJ_TREND,0,0,0,0,0); ObjectCreate("LC1",OBJ_TREND,0,0,0,0,0); ObjectCreate("LC2",OBJ_TREND,0,0,0,0,0); ObjectCreate("LC3",OBJ_TREND,0,0,0,0,0); i=Lowest(NULL,0,MODE_LOW,H2,0); HC1=High[H2]-kH*(H2-i)-Low[i]; HC2=High[H2]-kH*(H2-i)-Close[i]; i=Lowest(NULL,0,MODE_CLOSE,H2,0); HC3=High[H2]-kH*(H2-i)-Close[i]; Comm=Comm+"------------------------------------\n"; if (Close[0]>High[H2]-kH*H2) { i=0; while (Open[i]>=High[H2]-kH*(H2-i)){i++;} Comm=Comm+"HTD_Line ("+DoubleToStr(High[H2]-kH*H2,j)+") ïðîáèòà â òî÷êå "+DoubleToStr(High[H2]-kH*(H2-i),j)+", öåëè ââåðõ:\n"; Comm=Comm+"Ö1="+DoubleToStr(HC1+High[H2]-kH*(H2-i),j)+" ("+DoubleToStr(HC1/Point,0)+"ï.)"; Comm=Comm+" Ö2="+DoubleToStr(HC2+High[H2]-kH*(H2-i),j)+" ("+DoubleToStr(HC2/Point,0)+"ï.)"; Comm=Comm+" Ö3="+DoubleToStr(HC3+High[H2]-kH*(H2-i),j)+" ("+DoubleToStr(HC3/Point,0)+"ï.)\n"; if (TakeProf==1) { ObjectSet("HC1",OBJPROP_TIME1,Time[2]);ObjectSet("HC1",OBJPROP_TIME2,Time[0]); ObjectSet("HC1",OBJPROP_PRICE1,HC1+High[H2]-kH*(H2-i));ObjectSet("HC1",OBJPROP_PRICE2,HC1+High[H2]-kH*(H2-i)); ObjectSet("HC1",OBJPROP_COLOR,indicator_color1); ObjectSet("HC2",OBJPROP_TIME1,Time[2]);ObjectSet("HC2",OBJPROP_TIME2,Time[0]); ObjectSet("HC2",OBJPROP_PRICE1,HC2+High[H2]-kH*(H2-i));ObjectSet("HC2",OBJPROP_PRICE2,HC2+High[H2]-kH*(H2-i)); ObjectSet("HC2",OBJPROP_COLOR,indicator_color1); ObjectSet("HC3",OBJPROP_TIME1,Time[2]);ObjectSet("HC3",OBJPROP_TIME2,Time[0]); ObjectSet("HC3",OBJPROP_PRICE1,HC3+High[H2]-kH*(H2-i));ObjectSet("HC3",OBJPROP_PRICE2,HC3+High[H2]-kH*(H2-i)); ObjectSet("HC3",OBJPROP_COLOR,indicator_color1); } } else { Comm=Comm+"HTD_Line ("+DoubleToStr(High[H2]-kH*H2,j)+"), ïðè ïðîáèòèè ïðåäïîëàãàåìûå öåëè ââåðõó:\n"; Comm=Comm+"Ö1="+DoubleToStr(HC1+High[H2]-kH*H2,j)+" ("+DoubleToStr(HC1/Point,0)+"ï.)"; Comm=Comm+" Ö2="+DoubleToStr(HC2+High[H2]-kH*H2,j)+" ("+DoubleToStr(HC2/Point,0)+"ï.)"; Comm=Comm+" Ö3="+DoubleToStr(HC3+High[H2]-kH*H2,j)+" ("+DoubleToStr(HC3/Point,0)+"ï.)\n"; if (TakeProf==1) { ObjectSet("HC1",OBJPROP_TIME1,Time[2]);ObjectSet("HC1",OBJPROP_TIME2,Time[0]); ObjectSet("HC1",OBJPROP_PRICE1,HC1+High[H2]-kH*H2);ObjectSet("HC1",OBJPROP_PRICE2,HC1+High[H2]-kH*H2); ObjectSet("HC1",OBJPROP_COLOR,indicator_color1); ObjectSet("HC2",OBJPROP_TIME1,Time[2]);ObjectSet("HC2",OBJPROP_TIME2,Time[0]); ObjectSet("HC2",OBJPROP_PRICE1,HC2+High[H2]-kH*H2);ObjectSet("HC2",OBJPROP_PRICE2,HC2+High[H2]-kH*H2); ObjectSet("HC2",OBJPROP_COLOR,indicator_color1); ObjectSet("HC3",OBJPROP_TIME1,Time[2]);ObjectSet("HC3",OBJPROP_TIME2,Time[0]); ObjectSet("HC3",OBJPROP_PRICE1,HC3+High[H2]-kH*H2);ObjectSet("HC3",OBJPROP_PRICE2,HC3+High[H2]-kH*H2); ObjectSet("HC3",OBJPROP_COLOR,indicator_color1); } } i=Highest(NULL,0,MODE_HIGH,L2,0); LC1=High[i]-(Low[L2]+kL*(L2-i)); LC2=Close[i]-(Low[L2]+kL*(L2-i)); i=Highest(NULL,0,MODE_CLOSE,L2,0); LC3=Close[i]-(Low[L2]+kL*(L2-i)); Comm=Comm+"------------------------------------\n"; if (Close[0]