cm ind candle Signal 6TF

Author: Copyright 2021, cmillion@narod.ru
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each bar
0 Views
0 Downloads
0 Favorites
cm ind candle Signal 6TF
ÿþ//+------------------------------------------------------------------+

#property copyright "Copyright 2021, cmillion@narod.ru"

#property link      "http://cmillion.ru"

#property version   "1.00"

#property strict

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_plots   2

#property indicator_type1   DRAW_ARROW

#property indicator_type2   DRAW_ARROW

#property indicator_color1  clrBlue

#property indicator_color2  clrRed

#property description "=48:0B>@ 2K405B A83=0; ?@8 A>2?045=88 A25G59 A =5A:>;L:8E "$"

//+------------------------------------------------------------------+



double     SignalBufferRed[];

double     SignalBufferBlue[];

datetime TimeAlert=0;

input ENUM_TIMEFRAMES tf0=PERIOD_M1;

input ENUM_TIMEFRAMES tf1=PERIOD_M5;

input ENUM_TIMEFRAMES tf2=PERIOD_M15;

input ENUM_TIMEFRAMES tf3=PERIOD_M30;

input ENUM_TIMEFRAMES tf4=PERIOD_H1;

input ENUM_TIMEFRAMES tf5=PERIOD_H4;

int S=0,ExtArrowShift=0;

bool tf_1=false;

bool tf_2=false;

bool tf_3=false;

bool tf_4=false;

bool tf_5=false;

bool tf_6=false;

//+------------------------------------------------------------------+

int OnInit()

  {

   SetIndexBuffer(0,SignalBufferBlue,INDICATOR_DATA);

   SetIndexBuffer(1,SignalBufferRed,INDICATOR_DATA);

   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

//--- sets first bar from what index will be drawn

   PlotIndexSetInteger(0,PLOT_ARROW,233);

   PlotIndexSetInteger(1,PLOT_ARROW,234);

//--- arrow shifts when drawing

   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);

   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);

//--- sets drawing line empty value--

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);



      ArrayInitialize(SignalBufferBlue,0);

      ArrayInitialize(SignalBufferRed,0);

Comment("");

   int X=300,Y=0;

   if (str_period(tf0)!="err") {ButtonCreate(0,"cm tf 1",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf0),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 1");X+=32;}

   if (str_period(tf1)!="err") {ButtonCreate(0,"cm tf 2",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf1),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 2");X+=32;}

   if (str_period(tf2)!="err") {ButtonCreate(0,"cm tf 3",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf2),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 3");X+=32;}

   if (str_period(tf3)!="err") {ButtonCreate(0,"cm tf 4",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf3),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 4");X+=32;}

   if (str_period(tf4)!="err") {ButtonCreate(0,"cm tf 5",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf4),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 5");X+=32;}

   if (str_period(tf5)!="err") {ButtonCreate(0,"cm tf 6",0,X,Y,30,20,CORNER_LEFT_UPPER,str_period(tf5),"Arial",10,clrBlack,clrLightGray,clrNONE,true,false,false,true,0,"TF 6");X+=32;}



   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

void OnDeInit(const int reason)

{

   if (reason!=REASON_CHARTCHANGE && reason!=REASON_RECOMPILE) ObjectsDeleteAll(0,"cm tf");

}

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,// >1@01>B0=> 10@>2 =0 ?@54K4CI5< 2K7>25 

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

   ArraySetAsSeries(SignalBufferBlue,true);

   ArraySetAsSeries(SignalBufferRed,true);

   ArraySetAsSeries(time,true);

   ArraySetAsSeries(open,true);

   ArraySetAsSeries(close,true);

   ArraySetAsSeries(high,true);

   ArraySetAsSeries(low,true);



   int i,limit;

   limit=rates_total-prev_calculated-1;

   if(rates_total<1) return(0);

   double d=(high[1]-low[1]+high[2]-low[2])/2;

   //Comment(iBarShift(NULL,tf2,time[0],false));

   

   if (Period()>tf0) ObjectSetInteger(0,"cm tf 1" ,OBJPROP_STATE,false);

   if (Period()>tf1) ObjectSetInteger(0,"cm tf 2" ,OBJPROP_STATE,false);

   if (Period()>tf2) ObjectSetInteger(0,"cm tf 3" ,OBJPROP_STATE,false);

   if (Period()>tf3) ObjectSetInteger(0,"cm tf 4" ,OBJPROP_STATE,false);

   if (Period()>tf4) ObjectSetInteger(0,"cm tf 5" ,OBJPROP_STATE,false);

   if (Period()>tf5) ObjectSetInteger(0,"cm tf 6" ,OBJPROP_STATE,false);



   if (tf_1 != ObjectGetInteger(0,"cm tf 1" ,OBJPROP_STATE))  {tf_1 = ObjectGetInteger(0,"cm tf 1" ,OBJPROP_STATE);limit=rates_total-1;}

   if (tf_2 != ObjectGetInteger(0,"cm tf 2" ,OBJPROP_STATE))  {tf_2 = ObjectGetInteger(0,"cm tf 2" ,OBJPROP_STATE);limit=rates_total-1;}

   if (tf_3 != ObjectGetInteger(0,"cm tf 3" ,OBJPROP_STATE))  {tf_3 = ObjectGetInteger(0,"cm tf 3" ,OBJPROP_STATE);limit=rates_total-1;}

   if (tf_4 != ObjectGetInteger(0,"cm tf 4" ,OBJPROP_STATE))  {tf_4 = ObjectGetInteger(0,"cm tf 4" ,OBJPROP_STATE);limit=rates_total-1;}

   if (tf_5 != ObjectGetInteger(0,"cm tf 5" ,OBJPROP_STATE))  {tf_5 = ObjectGetInteger(0,"cm tf 5" ,OBJPROP_STATE);limit=rates_total-1;}

   if (tf_6 != ObjectGetInteger(0,"cm tf 6" ,OBJPROP_STATE))  {tf_6 = ObjectGetInteger(0,"cm tf 6" ,OBJPROP_STATE);limit=rates_total-1;}

   

   if (limit>1)

   {

      ArrayInitialize(SignalBufferBlue,0);

      ArrayInitialize(SignalBufferRed,0);

   }

   

   ObjectSetInteger(0,"cm tf 1",OBJPROP_BGCOLOR,iOpen(NULL,tf0,iBarShift(NULL,tf0,time[0],false))>iClose(NULL,tf0,iBarShift(NULL,tf0,time[0],false))?clrRed:clrLime); 

   ObjectSetInteger(0,"cm tf 2",OBJPROP_BGCOLOR,iOpen(NULL,tf1,iBarShift(NULL,tf1,time[0],false))>iClose(NULL,tf1,iBarShift(NULL,tf1,time[0],false))?clrRed:clrLime); 

   ObjectSetInteger(0,"cm tf 3",OBJPROP_BGCOLOR,iOpen(NULL,tf2,iBarShift(NULL,tf2,time[0],false))>iClose(NULL,tf2,iBarShift(NULL,tf2,time[0],false))?clrRed:clrLime); 

   ObjectSetInteger(0,"cm tf 4",OBJPROP_BGCOLOR,iOpen(NULL,tf3,iBarShift(NULL,tf3,time[0],false))>iClose(NULL,tf3,iBarShift(NULL,tf3,time[0],false))?clrRed:clrLime); 

   ObjectSetInteger(0,"cm tf 5",OBJPROP_BGCOLOR,iOpen(NULL,tf4,iBarShift(NULL,tf4,time[0],false))>iClose(NULL,tf4,iBarShift(NULL,tf4,time[0],false))?clrRed:clrLime); 

   ObjectSetInteger(0,"cm tf 6",OBJPROP_BGCOLOR,iOpen(NULL,tf5,iBarShift(NULL,tf5,time[0],false))>iClose(NULL,tf5,iBarShift(NULL,tf5,time[0],false))?clrRed:clrLime); 

   

   for(i=limit; i>=0; i--)

   {

      if (S<1 && 

         (!tf_1 || iOpen(NULL,tf0,iBarShift(NULL,tf0,time[i],false))<iClose(NULL,tf0,iBarShift(NULL,tf0,time[i],false))) && 

         (!tf_2 || iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))<iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false))) && 

         (!tf_3 || iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))<iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false))) && 

         (!tf_4 || iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))<iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false))) && 

         (!tf_5 || iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))<iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false))) && 

         (!tf_6 || iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))<iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false))))

      {

         SignalBufferBlue[i]=low[i]-d;

         if(i==1 && TimeAlert!=time[i]) Alert(Symbol()," A83=0; =0 ?>:C?:C");

         TimeAlert=time[i];

         S=1;

      }

      if(S>-1 && 

         (!tf_1 || iOpen(NULL,tf0,iBarShift(NULL,tf0,time[i],false))>iClose(NULL,tf0,iBarShift(NULL,tf0,time[i],false))) && 

         (!tf_2 || iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))>iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false))) && 

         (!tf_3 || iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))>iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false))) && 

         (!tf_4 || iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))>iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false))) && 

         (!tf_5 || iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))>iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false))) && 

         (!tf_6 || iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))>iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false))))

        {

         SignalBufferRed[i]=high[i]+d;

         if(i==1 && TimeAlert!=time[i]) Alert(Symbol()," A83=0; =0 ?@>406C");

         TimeAlert=time[i];

         S=-1;

      }

   }



   return(rates_total);

}

//+------------------------------------------------------------------+

string str_period(ENUM_TIMEFRAMES per)

{

   if(per == PERIOD_W1)  return("W1");

   if(per == PERIOD_D1)  return("D1");

   if(per == PERIOD_H12) return("H12");

   if(per == PERIOD_H8)  return("H8");

   if(per == PERIOD_H6)   return("H6");

   if(per == PERIOD_H4)   return("H4");

   if(per == PERIOD_H3)   return("H3");

   if(per == PERIOD_H2)   return("H2");

   if(per == PERIOD_H1)   return("H1");

   if(per == PERIOD_M30)  return("M30");

   if(per == PERIOD_M20)  return("M20");

   if(per == PERIOD_M15)  return("M15");

   if(per == PERIOD_M10)  return("M10");

   if(per == PERIOD_M6)   return("M6");

   if(per == PERIOD_M5)   return("M5");

   if(per == PERIOD_M4)   return("M4");

   if(per == PERIOD_M3)   return("M3");

   if(per == PERIOD_M2)   return("M2");

   if(per == PERIOD_M1)   return("M1");

   return("err");

}

//+------------------------------------------------------------------+

bool ButtonCreate(const long              chart_ID=0,               // ID 3@0D8:0 

                  const string            name="Button",            // 8<O :=>?:8 

                  const int               sub_window=0,             // =><5@ ?>4>:=0 

                  const int               x=0,                      // :>>@48=0B0 ?> >A8 X 

                  const int               y=0,                      // :>>@48=0B0 ?> >A8 Y 

                  const int               width=50,                 // H8@8=0 :=>?:8 

                  const int               height=18,                // 2KA>B0 :=>?:8 

                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // C3>; 3@0D8:0 4;O ?@82O7:8 

                  const string            text="Button",            // B5:AB 

                  const string            font="Arial",             // H@8DB 

                  const int               font_size=10,             // @07<5@ H@8DB0 

                  const color             clr=clrBlack,             // F25B B5:AB0 

                  const color             back_clr=C'236,233,216',  // F25B D>=0 

                  const color             border_clr=clrNONE,       // F25B 3@0=8FK 

                  const bool              state=false,              // =060B0/>B60B0 

                  const bool              back=false,               // =0 704=5< ?;0=5 

                  const bool              selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89 

                  const bool              hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2 

                  const long              z_order=0,// ?@8>@8B5B =0 =060B85 <KHLN 

                const string           podskazka="")                // 

  { 



   if(ObjectFind(chart_ID,name)==0) return(true); 

   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) return(false); 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

      ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,podskazka);

   return(true); 

  } 

//+------------------------------------------------------------------+ 

Comments