Author: 2019 © NELODI.com
0 Views
0 Downloads
0 Favorites
NLD_Main
ÿþ//+-------------------------------------------+

//|                              NLD_Main.mq5 |

//|                     http://www.nelodi.com |

//|             Copyright (c) 2019 NELODI.com |

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

#property copyright   "2019 © NELODI.com"

#property link        "http://www.nelodi.com"

#property description "NELODI - Main"



#property strict



#include "NLD_Include.mqh"



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

//|                                                                  |

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

input double  iCommisForex=0.06;    // Forex Commission ($) {0.06}

input double  iCommisStock=0.36;    // Stock Commission ($) {0.36}

input bool    iAutoScale=true;      // Auto-Scale Chart? {true}



int Sydney_O=0*60+1;

int Sydney_T=9*60-30;

int Sydney_C=9*60;



int Tokyo_O=2*60;

int Tokyo_T=11*60-30;

int Tokyo_C=11*60;



int London_O=10*60;

int London_T=19*60-30;

int London_C=19*60;



int NewYork_O=15*60;

int NewYork_T=24*60-30;

int NewYork_C=24*60-5;



int ONE_CLICK_TRADING_HEIGHT=85;



//--- indicator settings

#property indicator_chart_window

#property indicator_buffers 42

#property indicator_plots   23



#property indicator_type1   DRAW_LINE

#property indicator_type2   DRAW_LINE

#property indicator_type3   DRAW_LINE

#property indicator_type4   DRAW_LINE



#property indicator_type5   DRAW_LINE

#property indicator_type6   DRAW_LINE

#property indicator_type7   DRAW_LINE

#property indicator_type8   DRAW_LINE



#property indicator_type9   DRAW_LINE

#property indicator_type10  DRAW_LINE

#property indicator_type11  DRAW_LINE

#property indicator_type12  DRAW_LINE

#property indicator_type13  DRAW_LINE

#property indicator_type14  DRAW_LINE

#property indicator_type15  DRAW_LINE

#property indicator_type16  DRAW_LINE

#property indicator_type17  DRAW_LINE

#property indicator_type18  DRAW_LINE



#property indicator_type19  DRAW_LINE

#property indicator_type20  DRAW_LINE

#property indicator_type21  DRAW_LINE

#property indicator_type22  DRAW_LINE



#property indicator_type23  DRAW_LINE



#property indicator_width1  2

#property indicator_width2  2

#property indicator_width3  2

#property indicator_width4  2



#property indicator_width5  1

#property indicator_width6  1

#property indicator_width7  1

#property indicator_width8  1



#property indicator_width9  1

#property indicator_width10 1

#property indicator_width11 1

#property indicator_width12 1

#property indicator_width13 1

#property indicator_width14 1

#property indicator_width15 1

#property indicator_width16 1

#property indicator_width17 1

#property indicator_width18 1



#property indicator_width19 1

#property indicator_width20 1

#property indicator_width21 1

#property indicator_width22 1



#property indicator_width23 1



#property indicator_style1  STYLE_SOLID

#property indicator_style2  STYLE_SOLID

#property indicator_style3  STYLE_SOLID

#property indicator_style4  STYLE_SOLID



#property indicator_style5  STYLE_SOLID

#property indicator_style6  STYLE_SOLID

#property indicator_style7  STYLE_SOLID

#property indicator_style8  STYLE_SOLID



#property indicator_style9  STYLE_DASH

#property indicator_style10 STYLE_DASH

#property indicator_style11 STYLE_DASH

#property indicator_style12 STYLE_DASH

#property indicator_style13 STYLE_DASH

#property indicator_style14 STYLE_DASH

#property indicator_style15 STYLE_DASH

#property indicator_style16 STYLE_DASH

#property indicator_style17 STYLE_DASH

#property indicator_style18 STYLE_DASH



#property indicator_style19 STYLE_DOT

#property indicator_style20 STYLE_DOT

#property indicator_style21 STYLE_DOT

#property indicator_style22 STYLE_DOT



#property indicator_style23 STYLE_DOT



#property indicator_color1  C'0,150,90'

#property indicator_color2  C'150,0,90'

#property indicator_color3  C'37,112,150'

#property indicator_color4  C'112,37,150'



#property indicator_color5  C'0,200,120'

#property indicator_color6  C'200,0,120'

#property indicator_color7  C'50,150,200'

#property indicator_color8  C'150,50,200'



#property indicator_color9  C'150,250,0'

#property indicator_color10 C'250,150,0'

#property indicator_color11 C'75,250,0'

#property indicator_color12 C'250,75,0'

#property indicator_color13 C'50,250,0'

#property indicator_color14 C'250,50,0'

#property indicator_color15 C'125,250,250'

#property indicator_color16 C'250,125,250'

#property indicator_color17 C'255,255,0'

#property indicator_color18 C'255,255,255'



#property indicator_color19 C'0,255,175'

#property indicator_color20 C'255,0,175'

#property indicator_color21 C'63,200,255'

#property indicator_color22 C'200,63,255'



#property indicator_color23 C'255,255,255'



#property indicator_label1  "Ht3"

#property indicator_label2  "Lt3"

#property indicator_label3  "Tt3"

#property indicator_label4  "Bt3"



#property indicator_label5  "Ht2"

#property indicator_label6  "Lt2"

#property indicator_label7  "Tt2"

#property indicator_label8  "Bt2"



#property indicator_label9  "Up1"

#property indicator_label10 "Dn1"

#property indicator_label11 "Up2"

#property indicator_label12 "Dn2"

#property indicator_label13 "Up3"

#property indicator_label14 "Dn3"

#property indicator_label15 "Up4"

#property indicator_label16 "Dn4"

#property indicator_label17 "CEN"

#property indicator_label18 "AVG"



#property indicator_label19 "Ht1"

#property indicator_label20 "Lt1"

#property indicator_label21 "Tt1"

#property indicator_label22 "Bt1"



#property indicator_label23 "Ct1"



//--- indicator buffers

double ExtHi1Buffer[];

double ExtLo1Buffer[];

double ExtHi2Buffer[];

double ExtLo2Buffer[];

double ExtHi3Buffer[];

double ExtLo3Buffer[];

double ExtHi4Buffer[];

double ExtLo4Buffer[];

double ExtHi5Buffer[];

double ExtLo5Buffer[];

double ExtHi6Buffer[];

double ExtLo6Buffer[];

double ExtHi7Buffer[];

double ExtLo7Buffer[];

double ExtHi8Buffer[];

double ExtLo8Buffer[];

double ExtHi9Buffer[];

double ExtLo9Buffer[];



double ExtHt1Buffer[];

double ExtLt1Buffer[];

double ExtTt1Buffer[];

double ExtBt1Buffer[];

double ExtCt1Buffer[];



double ExtHt2Buffer[];

double ExtLt2Buffer[];

double ExtTt2Buffer[];

double ExtBt2Buffer[];



double ExtHt3Buffer[];

double ExtLt3Buffer[];

double ExtTt3Buffer[];

double ExtBt3Buffer[];



double ExtDn1Buffer[];

double ExtUp1Buffer[];

double ExtDn2Buffer[];

double ExtUp2Buffer[];

double ExtDn3Buffer[];

double ExtUp3Buffer[];

double ExtDn4Buffer[];

double ExtUp4Buffer[];

double ExtCENBuffer[];

double ExtAVGBuffer[];



double ExtTimeBuffer[];



int PriceWid;

double pixel;



int iHig=19;

int iOct=20;



int lastPeriod=PERIOD_CURRENT;

datetime lastTime=0;

double lastOpen=-1;

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

//| Custom indicator initialization function                         |

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

void OnInit() {



// Force re-calculation ...

   lastPeriod=PERIOD_CURRENT;

   lastTime=0;

   lastOpen=-1;



   PrepareAccount(_Symbol,iCommisForex,iCommisStock);



   PriceWid=MathMin(ExtRange1/2,ExtraRange/2);



// ExtraRange = 0; // <- uncomment to remove the RIGHT side of the chart



   pixel=1/MathPow(10,_Digits);



//--- indicator buffers mapping

   SetIndexBuffer(0 ,ExtHt3Buffer,INDICATOR_DATA);

   SetIndexBuffer(1 ,ExtLt3Buffer,INDICATOR_DATA);

   SetIndexBuffer(2 ,ExtTt3Buffer,INDICATOR_DATA);

   SetIndexBuffer(3 ,ExtBt3Buffer,INDICATOR_DATA);



   SetIndexBuffer(4 ,ExtHt2Buffer,INDICATOR_DATA);

   SetIndexBuffer(5 ,ExtLt2Buffer,INDICATOR_DATA);

   SetIndexBuffer(6 ,ExtTt2Buffer,INDICATOR_DATA);

   SetIndexBuffer(7 ,ExtBt2Buffer,INDICATOR_DATA);



   SetIndexBuffer(8 ,ExtUp1Buffer,INDICATOR_DATA);

   SetIndexBuffer(9 ,ExtDn1Buffer,INDICATOR_DATA);

   SetIndexBuffer(10,ExtUp2Buffer,INDICATOR_DATA);

   SetIndexBuffer(11,ExtDn2Buffer,INDICATOR_DATA);

   SetIndexBuffer(12,ExtUp3Buffer,INDICATOR_DATA);

   SetIndexBuffer(13,ExtDn3Buffer,INDICATOR_DATA);

   SetIndexBuffer(14,ExtUp4Buffer,INDICATOR_DATA);

   SetIndexBuffer(15,ExtDn4Buffer,INDICATOR_DATA);

   SetIndexBuffer(16,ExtCENBuffer,INDICATOR_DATA);

   SetIndexBuffer(17,ExtAVGBuffer,INDICATOR_DATA);



   SetIndexBuffer(18,ExtHt1Buffer,INDICATOR_DATA);

   SetIndexBuffer(19,ExtLt1Buffer,INDICATOR_DATA);

   SetIndexBuffer(20,ExtTt1Buffer,INDICATOR_DATA);

   SetIndexBuffer(21,ExtBt1Buffer,INDICATOR_DATA);

   SetIndexBuffer(22,ExtCt1Buffer,INDICATOR_DATA);



   SetIndexBuffer(23,ExtTimeBuffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(24,ExtHi1Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(25,ExtLo1Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(26,ExtHi2Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(27,ExtLo2Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(28,ExtHi3Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(29,ExtLo3Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(30,ExtHi4Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(31,ExtLo4Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(32,ExtHi5Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(33,ExtLo5Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(34,ExtHi6Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(35,ExtLo6Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(36,ExtHi7Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(37,ExtLo7Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(38,ExtHi8Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(39,ExtLo8Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(40,ExtHi9Buffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(41,ExtLo9Buffer,INDICATOR_CALCULATIONS);



   PlotIndexSetInteger(0,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(1,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(2,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(3,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(4,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(5,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(6,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(7,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(8,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(9,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(10,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(11,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(12,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(13,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(14,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(15,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(16,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(17,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(18,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(19,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(20,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(21,PLOT_SHIFT,ExtraRange);

   PlotIndexSetInteger(22,PLOT_SHIFT,ExtraRange);



   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(4,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(5,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(6,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(7,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(8,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(9,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(10,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(11,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(12,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(13,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(14,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(15,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(16,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(17,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(18,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(19,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(20,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(21,PLOT_EMPTY_VALUE,EMPTY_VALUE);

   PlotIndexSetDouble(22,PLOT_EMPTY_VALUE,EMPTY_VALUE);



   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);



   int id=ChartWindowFind();



   if(tradeTickValue>0) {

      perTxtCreate(id,"Hig_1b");

      perTxtCreate(id,"Low_1b");

      perTxtCreate(id,"Top_1b");

      perTxtCreate(id,"Bot_1b");

      perTxtCreate(id,"Hig_2b");

      perTxtCreate(id,"Low_2b");

      perTxtCreate(id,"Top_2b");

      perTxtCreate(id,"Bot_2b");

      perTxtCreate(id,"Hig_3b");

      perTxtCreate(id,"Low_3b");

      perTxtCreate(id,"Top_3b");

      perTxtCreate(id,"Bot_3b");

      perTxtCreate(id,"Top_Xb");

      perTxtCreate(id,"Bot_Xb");

      perTxtCreate(id,"Cnt_Xb");

      perTxtCreate(id,"Avg_Xb");

      perTxtCreate(id,"Cur_Cb");

      perTxtCreate(id,"Top_Sb");

      perTxtCreate(id,"Bot_Sb");

      perTxtCreate(id,"Cur_ZBuyb");

      perTxtCreate(id,"Cur_ZSellb");

   } else {

      ObjectDelete(0,"Cur_ZBuy");

      ObjectDelete(0,"Cur_ZSell");



      ObjectDelete(0,"Top_S");

      ObjectDelete(0,"Bot_s");



      ObjectDelete(0,"Top_X");

      ObjectDelete(0,"Bot_X");

      ObjectDelete(0,"Cnt_X");

      ObjectDelete(0,"Avg_X");



      ObjectDelete(0,"Cur_C");



      ObjectDelete(0,"Top_1");

      ObjectDelete(0,"Top_2");

      ObjectDelete(0,"Top_3");



      ObjectDelete(0,"Bot_1");

      ObjectDelete(0,"Bot_2");

      ObjectDelete(0,"Bot_3");



      ObjectDelete(0,"Hig_1");

      ObjectDelete(0,"Hig_2");

      ObjectDelete(0,"Hig_3");



      ObjectDelete(0,"Low_1");

      ObjectDelete(0,"Low_2");

      ObjectDelete(0,"Low_3");



      ObjectDelete(0,"Cur_ZBuyb");

      ObjectDelete(0,"Cur_ZSellb");



      ObjectDelete(0,"Top_Sb");

      ObjectDelete(0,"Bot_Sb");



      ObjectDelete(0,"Top_Xb");

      ObjectDelete(0,"Bot_Xb");

      ObjectDelete(0,"Cnt_Xb");

      ObjectDelete(0,"Avg_Xb");



      ObjectDelete(0,"Cur_Cb");



      ObjectDelete(0,"Top_1b");

      ObjectDelete(0,"Top_2b");

      ObjectDelete(0,"Top_3b");



      ObjectDelete(0,"Bot_1b");

      ObjectDelete(0,"Bot_2b");

      ObjectDelete(0,"Bot_3b");



      ObjectDelete(0,"Hig_1b");

      ObjectDelete(0,"Hig_2b");

      ObjectDelete(0,"Hig_3b");



      ObjectDelete(0,"Low_1b");

      ObjectDelete(0,"Low_2b");

      ObjectDelete(0,"Low_3b");

   }



   if(_Period<PERIOD_M15) {

      ObjectCreate(0,"Open_Sydney",OBJ_TREND,id,0,0); // 0:00 = 1

      ObjectSetInteger(0,"Open_Sydney",OBJPROP_COLOR,C'150,0,150');

      ObjectSetInteger(0,"Open_Sydney",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Open_Sydney",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Open_Sydney",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Open_Sydney",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Open_Tokyo",OBJ_TREND,id,0,0); // 2:00 = 2

      ObjectSetInteger(0,"Open_Tokyo",OBJPROP_COLOR,C'150,150,0');

      ObjectSetInteger(0,"Open_Tokyo",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Open_Tokyo",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Open_Tokyo",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Open_Tokyo",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"TClose_Sydney",OBJ_TREND,id,0,0); // 9:00 = 1

      ObjectSetInteger(0,"TClose_Sydney",OBJPROP_COLOR,C'150,150,0');

      ObjectSetInteger(0,"TClose_Sydney",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"TClose_Sydney",OBJPROP_WIDTH,1);

      ObjectSetInteger(0,"TClose_Sydney",OBJPROP_BACK,false);

      ObjectSetInteger(0,"TClose_Sydney",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Close_Sydney",OBJ_TREND,id,0,0); // 9:00 = 1

      ObjectSetInteger(0,"Close_Sydney",OBJPROP_COLOR,C'150,150,0');

      ObjectSetInteger(0,"Close_Sydney",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Close_Sydney",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Close_Sydney",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Close_Sydney",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Open_London",OBJ_TREND,id,0,0); // 10:00 = 2

      ObjectSetInteger(0,"Open_London",OBJPROP_COLOR,C'150,150,150');

      ObjectSetInteger(0,"Open_London",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Open_London",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Open_London",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Open_London",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"TClose_Tokyo",OBJ_TREND,id,0,0); // 11:00 = 1

      ObjectSetInteger(0,"TClose_Tokyo",OBJPROP_COLOR,C'0,150,150');

      ObjectSetInteger(0,"TClose_Tokyo",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"TClose_Tokyo",OBJPROP_WIDTH,1);

      ObjectSetInteger(0,"TClose_Tokyo",OBJPROP_BACK,false);

      ObjectSetInteger(0,"TClose_Tokyo",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Close_Tokyo",OBJ_TREND,id,0,0); // 11:00 = 1

      ObjectSetInteger(0,"Close_Tokyo",OBJPROP_COLOR,C'0,150,150');

      ObjectSetInteger(0,"Close_Tokyo",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Close_Tokyo",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Close_Tokyo",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Close_Tokyo",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Open_NewYork",OBJ_TREND,id,0,0); // 15:00 = 2

      ObjectSetInteger(0,"Open_NewYork",OBJPROP_COLOR,C'150,150,150');

      ObjectSetInteger(0,"Open_NewYork",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Open_NewYork",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Open_NewYork",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Open_NewYork",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"TClose_London",OBJ_TREND,id,0,0); // 19:00 = 1

      ObjectSetInteger(0,"TClose_London",OBJPROP_COLOR,C'150,150,0');

      ObjectSetInteger(0,"TClose_London",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"TClose_London",OBJPROP_WIDTH,1);

      ObjectSetInteger(0,"TClose_London",OBJPROP_BACK,false);

      ObjectSetInteger(0,"TClose_London",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Close_London",OBJ_TREND,id,0,0); // 19:00 = 1

      ObjectSetInteger(0,"Close_London",OBJPROP_COLOR,C'150,150,0');

      ObjectSetInteger(0,"Close_London",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Close_London",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Close_London",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Close_London",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"TClose_NewYork",OBJ_TREND,id,0,0); // 24:00 = 0

      ObjectSetInteger(0,"TClose_NewYork",OBJPROP_COLOR,C'150,0,150');

      ObjectSetInteger(0,"TClose_NewYork",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"TClose_NewYork",OBJPROP_WIDTH,1);

      ObjectSetInteger(0,"TClose_NewYork",OBJPROP_BACK,false);

      ObjectSetInteger(0,"TClose_NewYork",OBJPROP_SELECTABLE,false);



      ObjectCreate(0,"Close_NewYork",OBJ_TREND,id,0,0); // 24:00 = 0

      ObjectSetInteger(0,"Close_NewYork",OBJPROP_COLOR,C'150,0,150');

      ObjectSetInteger(0,"Close_NewYork",OBJPROP_STYLE,STYLE_SOLID);

      ObjectSetInteger(0,"Close_NewYork",OBJPROP_WIDTH,2);

      ObjectSetInteger(0,"Close_NewYork",OBJPROP_BACK,false);

      ObjectSetInteger(0,"Close_NewYork",OBJPROP_SELECTABLE,false);

   } else {

      ObjectDelete(0,"Open_Sydney");

      ObjectDelete(0,"TClose_Sydney");

      ObjectDelete(0,"Close_Sydney");



      ObjectDelete(0,"Open_Tokyo");

      ObjectDelete(0,"TClose_Tokyo");

      ObjectDelete(0,"Close_Tokyo");



      ObjectDelete(0,"Open_London");

      ObjectDelete(0,"TClose_London");

      ObjectDelete(0,"Close_London");



      ObjectDelete(0,"Open_NewYork");

      ObjectDelete(0,"TClose_NewYork");

      ObjectDelete(0,"Close_NewYork");

   }



   ObjectCreate(0,"Cur_X",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_X",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_X",OBJPROP_STYLE,STYLE_DOT);

   ObjectSetInteger(0,"Cur_X",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_X",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_X",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_BA2",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_BA2",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_BA2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_BA2",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_BA2",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_BA2",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_BA",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_BA",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_BA",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_BA",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_BA",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_BA",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_Ask2",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_Ask2",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_Ask2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_Ask2",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_Ask2",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_Ask2",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_Bid2",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_Bid2",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_Bid2",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_Bid2",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_Bid2",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_Bid2",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_Ask",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_Ask",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_Ask",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_Ask",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_Ask",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_Ask",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_Bid",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_Bid",OBJPROP_COLOR,C'255,255,255');

   ObjectSetInteger(0,"Cur_Bid",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_Bid",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_Bid",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_Bid",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_PBuy",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_PBuy",OBJPROP_COLOR,C'0,250,0');

   ObjectSetInteger(0,"Cur_PBuy",OBJPROP_STYLE,STYLE_DOT);

   ObjectSetInteger(0,"Cur_PBuy",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_PBuy",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_PBuy",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_PSell",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_PSell",OBJPROP_COLOR,C'250,0,0');

   ObjectSetInteger(0,"Cur_PSell",OBJPROP_STYLE,STYLE_DOT);

   ObjectSetInteger(0,"Cur_PSell",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_PSell",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_PSell",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_TBuy",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_TBuy",OBJPROP_COLOR,C'0,250,250');

   ObjectSetInteger(0,"Cur_TBuy",OBJPROP_STYLE,STYLE_DOT);

   ObjectSetInteger(0,"Cur_TBuy",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_TBuy",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_TBuy",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_TSell",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_TSell",OBJPROP_COLOR,C'250,0,250');

   ObjectSetInteger(0,"Cur_TSell",OBJPROP_STYLE,STYLE_DOT);

   ObjectSetInteger(0,"Cur_TSell",OBJPROP_WIDTH,1);

   ObjectSetInteger(0,"Cur_TSell",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_TSell",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_MBuy",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_MBuy",OBJPROP_COLOR,C'0,250,250');

   ObjectSetInteger(0,"Cur_MBuy",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_MBuy",OBJPROP_WIDTH,2);

   ObjectSetInteger(0,"Cur_MBuy",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_MBuy",OBJPROP_SELECTABLE,false);



   ObjectCreate(0,"Cur_MSell",OBJ_TREND,id,0,0,0,0);

   ObjectSetInteger(0,"Cur_MSell",OBJPROP_COLOR,C'250,0,250');

   ObjectSetInteger(0,"Cur_MSell",OBJPROP_STYLE,STYLE_SOLID);

   ObjectSetInteger(0,"Cur_MSell",OBJPROP_WIDTH,2);

   ObjectSetInteger(0,"Cur_MSell",OBJPROP_BACK,false);

   ObjectSetInteger(0,"Cur_MSell",OBJPROP_SELECTABLE,false);



   if(tradeTickValue>0) {

      perTxtCreate(id,"Top_S",C'127,255,127');

      perTxtCreate(id,"Bot_S",C'255,127,127');



      perTxtCreate(id,"Cur_ZBuy",C'0,250,250');

      perTxtCreate(id,"Cur_ZSell",C'250,0,250');



      perTxtCreate(id,"Hig_1",C'0,255,175');

      perTxtCreate(id,"Low_1",C'255,0,175');

      perTxtCreate(id,"Top_1",C'63,200,255');

      perTxtCreate(id,"Bot_1",C'200,63,255');



      perTxtCreate(id,"Hig_2",C'0,200,120');

      perTxtCreate(id,"Low_2",C'200,0,120');

      perTxtCreate(id,"Top_2",C'50,150,200');

      perTxtCreate(id,"Bot_2",C'150,50,200');



      perTxtCreate(id,"Hig_3",C'0,150,90');

      perTxtCreate(id,"Low_3",C'150,0,90');

      perTxtCreate(id,"Top_3",C'37,112,150');

      perTxtCreate(id,"Bot_3",C'112,37,150');



      perTxtCreate(id,"Top_X",C'125,250,250');

      perTxtCreate(id,"Bot_X",C'250,125,250');

      perTxtCreate(id,"Cnt_X",C'255,255,0');

      perTxtCreate(id,"Avg_X",C'255,255,255');



      perTxtCreate(id,"Cur_C",C'255,255,255');

   }



   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true);

   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);

   ChartSetInteger(ChartID(),CHART_SHIFT,true);

   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,true);

   ChartSetInteger(ChartID(),CHART_FOREGROUND,false);



   ChartSetInteger(ChartID(),CHART_COLOR_BACKGROUND,clrBlack);

   ChartSetInteger(ChartID(),CHART_COLOR_ASK,clrNONE);

   ChartSetInteger(ChartID(),CHART_COLOR_BID,clrNONE);

   ChartSetInteger(ChartID(),CHART_COLOR_GRID,clrNONE);

   ChartSetInteger(ChartID(),CHART_COLOR_STOP_LEVEL,clrNONE);

   ChartSetInteger(ChartID(),CHART_COLOR_VOLUME,clrNONE);



   ChartSetInteger(ChartID(),CHART_DRAG_TRADE_LEVELS,false);

   ChartSetInteger(ChartID(),CHART_CROSSHAIR_TOOL,true);



   ChartSetInteger(ChartID(),CHART_SHOW_DATE_SCALE,false);

   ChartSetInteger(ChartID(),CHART_SHOW_PRICE_SCALE,false);

   ChartSetInteger(ChartID(),CHART_SHOW_OBJECT_DESCR,false);

   ChartSetInteger(ChartID(),CHART_SHOW_GRID,false);

   ChartSetInteger(ChartID(),CHART_SHOW_TRADE_LEVELS,false);

   ChartSetInteger(ChartID(),CHART_SHOW_ASK_LINE,false);

   ChartSetInteger(ChartID(),CHART_SHOW_BID_LINE,false);

   ChartSetInteger(ChartID(),CHART_SHOW_LAST_LINE,false);

   ChartSetInteger(ChartID(),CHART_SHOW_PERIOD_SEP,false);

   ChartSetInteger(ChartID(),CHART_SHOW_VOLUMES,false);



   ButtonsCreate();



   EventSetTimer(3);



//--- initialization done

}

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

void OnTimer() {

   int xHig=(int)ChartGetInteger(ChartID(),CHART_HEIGHT_IN_PIXELS,ChartWindowFind());

   int oHig=xHig/9;

   int oOct=22;

   if (ChartGetInteger(ChartID(),CHART_SHOW_ONE_CLICK)) oOct+=ONE_CLICK_TRADING_HEIGHT;

   if((iHig!=oHig) || (iOct!=oOct)) ButtonsCreate();

}

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

void ButtonsCreate() {

   int id=ChartWindowFind();

   int xHig=(int)ChartGetInteger(ChartID(),CHART_HEIGHT_IN_PIXELS,id);

   iHig=MathMax(xHig/9,20);

   int iHig2=22;

   iOct=22;

   if (ChartGetInteger(ChartID(),CHART_SHOW_ONE_CLICK)) iOct+=ONE_CLICK_TRADING_HEIGHT;



   if(tradeTickValue>0) {

      perBtnCreate(id,"BuyRange_1",0,iHig2*0+iOct,60,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"BuyRange_2",0,iHig2*1+iOct,60,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"BuyRange_3",0,iHig2*2+iOct,60,iHig2,CORNER_LEFT_UPPER);



      perBtnCreate(id,"Dir_1",60,iHig2*0+iOct,10,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"Dir_2",60,iHig2*1+iOct,10,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"Dir_3",60,iHig2*2+iOct,10,iHig2,CORNER_LEFT_UPPER);



      perBtnCreate(id,"SellRange_1",70,iHig2*0+iOct,60,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"SellRange_2",70,iHig2*1+iOct,60,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"SellRange_3",70,iHig2*2+iOct,60,iHig2,CORNER_LEFT_UPPER);

   } else {

      ObjectDelete(0,"BuyRange_1");

      ObjectDelete(0,"BuyRange_2");

      ObjectDelete(0,"BuyRange_3");



      ObjectDelete(0,"SellRange_1");

      ObjectDelete(0,"SellRange_2");

      ObjectDelete(0,"SellRange_3");



      perBtnCreate(id,"Dir_1",0,iHig2*0+iOct,10,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"Dir_2",0,iHig2*1+iOct,10,iHig2,CORNER_LEFT_UPPER);

      perBtnCreate(id,"Dir_3",0,iHig2*2+iOct,10,iHig2,CORNER_LEFT_UPPER);

   }



   perBtnCreate(id,"Per_dM1",55,iHig*0,5,iHig);

   perBtnCreate(id,"Per_dM5",55,iHig*1,5,iHig);

   perBtnCreate(id,"Per_dM15",55,iHig*2,5,iHig);

   perBtnCreate(id,"Per_dH1",55,iHig*3,5,iHig);

   perBtnCreate(id,"Per_dH4",55,iHig*4,5,iHig);

   perBtnCreate(id,"Per_dH8",55,iHig*5,5,iHig);

   perBtnCreate(id,"Per_dD1",55,iHig*6,5,iHig);

   perBtnCreate(id,"Per_dW1",55,iHig*7,5,iHig);

   perBtnCreate(id,"Per_dMN1",55,iHig*8,5,iHig);



   perBtnCreate(id,"Per_cM1",50,iHig*0,5,iHig);

   perBtnCreate(id,"Per_cM5",50,iHig*1,5,iHig);

   perBtnCreate(id,"Per_cM15",50,iHig*2,5,iHig);

   perBtnCreate(id,"Per_cH1",50,iHig*3,5,iHig);

   perBtnCreate(id,"Per_cH4",50,iHig*4,5,iHig);

   perBtnCreate(id,"Per_cH8",50,iHig*5,5,iHig);

   perBtnCreate(id,"Per_cD1",50,iHig*6,5,iHig);

   perBtnCreate(id,"Per_cW1",50,iHig*7,5,iHig);

   perBtnCreate(id,"Per_cMN1",50,iHig*8,5,iHig);



   perBtnCreate(id,"Per_bM1",45,iHig*0,5,iHig);

   perBtnCreate(id,"Per_bM5",45,iHig*1,5,iHig);

   perBtnCreate(id,"Per_bM15",45,iHig*2,5,iHig);

   perBtnCreate(id,"Per_bH1",45,iHig*3,5,iHig);

   perBtnCreate(id,"Per_bH4",45,iHig*4,5,iHig);

   perBtnCreate(id,"Per_bH8",45,iHig*5,5,iHig);

   perBtnCreate(id,"Per_bD1",45,iHig*6,5,iHig);

   perBtnCreate(id,"Per_bW1",45,iHig*7,5,iHig);

   perBtnCreate(id,"Per_bMN1",45,iHig*8,5,iHig);



   perBtnCreate(id,"Per_M1", 40,iHig*0,30,iHig, CORNER_RIGHT_UPPER, "M1", Period()==PERIOD_M1);

   perBtnCreate(id,"Per_M5", 40,iHig*1,30,iHig, CORNER_RIGHT_UPPER, "M5", Period()==PERIOD_M5);

   perBtnCreate(id,"Per_M15",40,iHig*2,30,iHig, CORNER_RIGHT_UPPER, "M15",Period()==PERIOD_M15);

   perBtnCreate(id,"Per_H1", 40,iHig*3,30,iHig, CORNER_RIGHT_UPPER, "H1", Period()==PERIOD_H1);

   perBtnCreate(id,"Per_H4", 40,iHig*4,30,iHig, CORNER_RIGHT_UPPER, "H4", Period()==PERIOD_H4);

   perBtnCreate(id,"Per_H8",40,iHig*5,30,iHig,  CORNER_RIGHT_UPPER, "H8",Period()==PERIOD_H8);

   perBtnCreate(id,"Per_D1", 40,iHig*6,30,iHig, CORNER_RIGHT_UPPER, "D1", Period()==PERIOD_D1);

   perBtnCreate(id,"Per_W1", 40,iHig*7,30,iHig, CORNER_RIGHT_UPPER, "W1", Period()==PERIOD_W1);

   perBtnCreate(id,"Per_MN1",40,iHig*8,30,iHig, CORNER_RIGHT_UPPER, "MN", Period()==PERIOD_MN1);



   perBtnCreate(id,"Per_nM1",10,iHig*0,10,iHig);

   perBtnCreate(id,"Per_nM5",10,iHig*1,10,iHig);

   perBtnCreate(id,"Per_nM15",10,iHig*2,10,iHig);

   perBtnCreate(id,"Per_nH1",10,iHig*3,10,iHig);

   perBtnCreate(id,"Per_nH4",10,iHig*4,10,iHig);

   perBtnCreate(id,"Per_nH8",10,iHig*5,10,iHig);

   perBtnCreate(id,"Per_nD1",10,iHig*6,10,iHig);

   perBtnCreate(id,"Per_nW1",10,iHig*7,10,iHig);

   perBtnCreate(id,"Per_nMN1",10,iHig*8,10,iHig);

}

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

void OnDeinit(const int  reason) {

   EventKillTimer();



   if(reason!=REASON_CHARTCHANGE) {

      ObjectDelete(0,"Per_nM1");

      ObjectDelete(0,"Per_nM5");

      ObjectDelete(0,"Per_nM15");

      ObjectDelete(0,"Per_nH1");

      ObjectDelete(0,"Per_nH4");

      ObjectDelete(0,"Per_nH8");

      ObjectDelete(0,"Per_nD1");

      ObjectDelete(0,"Per_nW1");

      ObjectDelete(0,"Per_nMN1");



      ObjectDelete(0,"Per_M1");

      ObjectDelete(0,"Per_M5");

      ObjectDelete(0,"Per_M15");

      ObjectDelete(0,"Per_H1");

      ObjectDelete(0,"Per_H4");

      ObjectDelete(0,"Per_H8");

      ObjectDelete(0,"Per_D1");

      ObjectDelete(0,"Per_W1");

      ObjectDelete(0,"Per_MN1");



      ObjectDelete(0,"Per_bM1");

      ObjectDelete(0,"Per_bM5");

      ObjectDelete(0,"Per_bM15");

      ObjectDelete(0,"Per_bH1");

      ObjectDelete(0,"Per_bH4");

      ObjectDelete(0,"Per_bH8");

      ObjectDelete(0,"Per_bD1");

      ObjectDelete(0,"Per_bW1");

      ObjectDelete(0,"Per_bMN1");



      ObjectDelete(0,"Per_cM1");

      ObjectDelete(0,"Per_cM5");

      ObjectDelete(0,"Per_cM15");

      ObjectDelete(0,"Per_cH1");

      ObjectDelete(0,"Per_cH4");

      ObjectDelete(0,"Per_cH8");

      ObjectDelete(0,"Per_cD1");

      ObjectDelete(0,"Per_cW1");

      ObjectDelete(0,"Per_cMN1");



      ObjectDelete(0,"Per_dM1");

      ObjectDelete(0,"Per_dM5");

      ObjectDelete(0,"Per_dM15");

      ObjectDelete(0,"Per_dH1");

      ObjectDelete(0,"Per_dH4");

      ObjectDelete(0,"Per_dH8");

      ObjectDelete(0,"Per_dD1");

      ObjectDelete(0,"Per_dW1");

      ObjectDelete(0,"Per_dMN1");

   }



   ObjectDelete(0,"BuyRange_1");

   ObjectDelete(0,"BuyRange_2");

   ObjectDelete(0,"BuyRange_3");



   ObjectDelete(0,"SellRange_1");

   ObjectDelete(0,"SellRange_2");

   ObjectDelete(0,"SellRange_3");



   ObjectDelete(0,"Cur_ZBuy");

   ObjectDelete(0,"Cur_ZSell");



   ObjectDelete(0,"Top_S");

   ObjectDelete(0,"Bot_S");



   ObjectDelete(0,"Top_X");

   ObjectDelete(0,"Bot_X");

   ObjectDelete(0,"Cnt_X");

   ObjectDelete(0,"Avg_X");



   ObjectDelete(0,"Cur_C");



   ObjectDelete(0,"Top_1");

   ObjectDelete(0,"Top_2");

   ObjectDelete(0,"Top_3");



   ObjectDelete(0,"Bot_1");

   ObjectDelete(0,"Bot_2");

   ObjectDelete(0,"Bot_3");



   ObjectDelete(0,"Hig_1");

   ObjectDelete(0,"Hig_2");

   ObjectDelete(0,"Hig_3");



   ObjectDelete(0,"Low_1");

   ObjectDelete(0,"Low_2");

   ObjectDelete(0,"Low_3");



   ObjectDelete(0,"Cur_ZBuyb");

   ObjectDelete(0,"Cur_ZSellb");



   ObjectDelete(0,"Top_Sb");

   ObjectDelete(0,"Bot_Sb");



   ObjectDelete(0,"Top_Xb");

   ObjectDelete(0,"Bot_Xb");

   ObjectDelete(0,"Cnt_Xb");

   ObjectDelete(0,"Avg_Xb");



   ObjectDelete(0,"Cur_Cb");



   ObjectDelete(0,"Top_1b");

   ObjectDelete(0,"Top_2b");

   ObjectDelete(0,"Top_3b");



   ObjectDelete(0,"Bot_1b");

   ObjectDelete(0,"Bot_2b");

   ObjectDelete(0,"Bot_3b");



   ObjectDelete(0,"Hig_1b");

   ObjectDelete(0,"Hig_2b");

   ObjectDelete(0,"Hig_3b");



   ObjectDelete(0,"Low_1b");

   ObjectDelete(0,"Low_2b");

   ObjectDelete(0,"Low_3b");



   ObjectDelete(0,"Dir_1");

   ObjectDelete(0,"Dir_2");

   ObjectDelete(0,"Dir_3");



   ObjectDelete(0,"Cur_Ask");

   ObjectDelete(0,"Cur_Bid");

   ObjectDelete(0,"Cur_Ask2");

   ObjectDelete(0,"Cur_Bid2");



   ObjectDelete(0,"Cur_X");



   ObjectDelete(0,"Cur_BA");

   ObjectDelete(0,"Cur_BA2");



   ObjectDelete(0,"Cur_MBuy");

   ObjectDelete(0,"Cur_MSell");



   ObjectDelete(0,"Cur_TBuy");

   ObjectDelete(0,"Cur_TSell");



   ObjectDelete(0,"Cur_PBuy");

   ObjectDelete(0,"Cur_PSell");



   ObjectDelete(0,"Open_Sydney");

   ObjectDelete(0,"TClose_Sydney");

   ObjectDelete(0,"Close_Sydney");



   ObjectDelete(0,"Open_Tokyo");

   ObjectDelete(0,"TClose_Tokyo");

   ObjectDelete(0,"Close_Tokyo");



   ObjectDelete(0,"Open_London");

   ObjectDelete(0,"TClose_London");

   ObjectDelete(0,"Close_London");



   ObjectDelete(0,"Open_NewYork");

   ObjectDelete(0,"TClose_NewYork");

   ObjectDelete(0,"Close_NewYork");

}

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

//| Calculation                                              |

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

int OnCalculate(const int rates_total,

                const int prev_calculated,

                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[]) {

   if(rates_total<4) return(0);



   ArraySetAsSeries(high,true);

   ArraySetAsSeries(low,true);

   ArraySetAsSeries(open,true);

   ArraySetAsSeries(close,true);

   ArraySetAsSeries(spread,true);

   ArraySetAsSeries(time,true);

   ArraySetAsSeries(tick_volume,true);



   ArraySetAsSeries(ExtHi1Buffer,true);

   ArraySetAsSeries(ExtLo1Buffer,true);

   ArraySetAsSeries(ExtHi2Buffer,true);

   ArraySetAsSeries(ExtLo2Buffer,true);

   ArraySetAsSeries(ExtHi3Buffer,true);

   ArraySetAsSeries(ExtLo3Buffer,true);

   ArraySetAsSeries(ExtHi4Buffer,true);

   ArraySetAsSeries(ExtLo4Buffer,true);

   ArraySetAsSeries(ExtHi5Buffer,true);

   ArraySetAsSeries(ExtLo5Buffer,true);

   ArraySetAsSeries(ExtHi6Buffer,true);

   ArraySetAsSeries(ExtLo6Buffer,true);

   ArraySetAsSeries(ExtHi7Buffer,true);

   ArraySetAsSeries(ExtLo7Buffer,true);

   ArraySetAsSeries(ExtHi8Buffer,true);

   ArraySetAsSeries(ExtLo8Buffer,true);

   ArraySetAsSeries(ExtHi9Buffer,true);

   ArraySetAsSeries(ExtLo9Buffer,true);

   ArraySetAsSeries(ExtTimeBuffer,true);



   ArraySetAsSeries(ExtHt1Buffer,true);

   ArraySetAsSeries(ExtLt1Buffer,true);

   ArraySetAsSeries(ExtTt1Buffer,true);

   ArraySetAsSeries(ExtBt1Buffer,true);

   ArraySetAsSeries(ExtCt1Buffer,true);



   ArraySetAsSeries(ExtHt2Buffer,true);

   ArraySetAsSeries(ExtLt2Buffer,true);

   ArraySetAsSeries(ExtTt2Buffer,true);

   ArraySetAsSeries(ExtBt2Buffer,true);



   ArraySetAsSeries(ExtHt3Buffer,true);

   ArraySetAsSeries(ExtLt3Buffer,true);

   ArraySetAsSeries(ExtTt3Buffer,true);

   ArraySetAsSeries(ExtBt3Buffer,true);



   ArraySetAsSeries(ExtUp1Buffer,true);

   ArraySetAsSeries(ExtDn1Buffer,true);

   ArraySetAsSeries(ExtUp2Buffer,true);

   ArraySetAsSeries(ExtDn2Buffer,true);

   ArraySetAsSeries(ExtUp3Buffer,true);

   ArraySetAsSeries(ExtDn3Buffer,true);

   ArraySetAsSeries(ExtUp4Buffer,true);

   ArraySetAsSeries(ExtDn4Buffer,true);

   ArraySetAsSeries(ExtCENBuffer,true);

   ArraySetAsSeries(ExtAVGBuffer,true);



   double h1,l1,a1,d1,u1,t1,b1;

   double h2,l2,a2,d2,u2,t2,b2;

   double h3,l3,a3,d3,u3,t3,b3;

   double h4,l4,a4,d4,u4;

   double h5,l5,a5;

   double h6,l6,a6;

   double h7,l7,a7;

   double h8,l8,a8;

   double h9,l9,a9;

   double cen,avg;



   double o_hi1,o_lo1,o_up1,o_dn1,o_to1,o_bo1;

   double o_hi2,o_lo2,o_up2,o_dn2,o_to2,o_bo2;

   double o_hi3,o_lo3,o_up3,o_dn3,o_to3,o_bo3;

   double o_hi4,o_lo4,o_up4,o_dn4;

   double o_hi5,o_lo5;

   double o_hi6,o_lo6;

   double o_hi7,o_lo7;

   double o_hi8,o_lo8;

   double o_hi9,o_lo9;

   double o_cen,o_avg;



   bool done=true;



   int ps=PeriodSeconds();



   int nowPeriod=Period();



   double ask=close[0]+SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)*pixel;

   double bid=close[0];



// Since we are ONLY using Open prices to calculate everything,

// we only need to run calculations if time-frame changes or candle closes.

   if((nowPeriod!=lastPeriod) || (time[0]!=lastTime) || (open[0]!=lastOpen) || (prev_calculated!=rates_total)) {

      for(int j=-ExtraRange,i=0; i<rates_total && !IsStopped(); i++,j++) {

         HighLowX(open,time,j,rates_total,

                  h1,h2,h3,h4,h5,h6,h7,h8,h9,

                  l1,l2,l3,l4,l5,l6,l7,l8,l9,

                  a1,a2,a3,a4,a5,a6,a7,a8,a9);



         bSort9(a1,a2,a3,a4,a5,a6,a7,a8,a9);



         cen=a5;

         avg=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/9.0;

         u1=a6;

         d1=a4;

         u2=a7;

         d2=a3;

         u3=a8;

         d3=a2;

         u4=a9;

         d4=a1;



         o_hi1=ExtHi1Buffer[i];

         ExtHi1Buffer[i]=h1;

         o_lo1=ExtLo1Buffer[i];

         ExtLo1Buffer[i]=l1;

         o_hi2=ExtHi2Buffer[i];

         ExtHi2Buffer[i]=h2;

         o_lo2=ExtLo2Buffer[i];

         ExtLo2Buffer[i]=l2;

         o_hi3=ExtHi3Buffer[i];

         ExtHi3Buffer[i]=h3;

         o_lo3=ExtLo3Buffer[i];

         ExtLo3Buffer[i]=l3;

         o_hi4=ExtHi4Buffer[i];

         ExtHi4Buffer[i]=h4;

         o_lo4=ExtLo4Buffer[i];

         ExtLo4Buffer[i]=l4;

         o_hi5=ExtHi5Buffer[i];

         ExtHi5Buffer[i]=h5;

         o_lo5=ExtLo5Buffer[i];

         ExtLo5Buffer[i]=l5;

         o_hi6=ExtHi6Buffer[i];

         ExtHi6Buffer[i]=h6;

         o_lo6=ExtLo6Buffer[i];

         ExtLo6Buffer[i]=l6;

         o_hi7=ExtHi7Buffer[i];

         ExtHi7Buffer[i]=h7;

         o_lo7=ExtLo7Buffer[i];

         ExtLo7Buffer[i]=l7;

         o_hi8=ExtHi8Buffer[i];

         ExtHi8Buffer[i]=h8;

         o_lo8=ExtLo8Buffer[i];

         ExtLo8Buffer[i]=l8;

         o_hi9=ExtHi9Buffer[i];

         ExtHi9Buffer[i]=h9;

         o_lo9=ExtLo9Buffer[i];

         ExtLo9Buffer[i]=l9;



         o_up1=ExtUp1Buffer[i];

         ExtUp1Buffer[i]=u1;

         o_dn1=ExtDn1Buffer[i];

         ExtDn1Buffer[i]=d1;

         o_up2=ExtUp2Buffer[i];

         ExtUp2Buffer[i]=u2;

         o_dn2=ExtDn2Buffer[i];

         ExtDn2Buffer[i]=d2;

         o_up3=ExtUp3Buffer[i];

         ExtUp3Buffer[i]=u3;

         o_dn3=ExtDn3Buffer[i];

         ExtDn3Buffer[i]=d3;

         o_up4=ExtUp4Buffer[i];

         ExtUp4Buffer[i]=u4;

         o_dn4=ExtDn4Buffer[i];

         ExtDn4Buffer[i]=d4;



         o_cen=ExtCENBuffer[i];

         ExtCENBuffer[i]=cen;



         o_avg=ExtAVGBuffer[i];

         ExtAVGBuffer[i]=avg;



         if(j<0) ExtTimeBuffer[i]=(double)(time[i]+ps*ExtraRange);

         else ExtTimeBuffer[i]=(double)time[j];



         // Skip calculation for old candles

         if(j>0 &&

               nowPeriod==lastPeriod &&



               o_hi1==ExtHi1Buffer[i] &&

               o_lo1==ExtLo1Buffer[i] &&

               o_hi2==ExtHi2Buffer[i] &&

               o_lo2==ExtLo2Buffer[i] &&

               o_hi3==ExtHi3Buffer[i] &&

               o_lo3==ExtLo3Buffer[i] &&

               o_hi4==ExtHi4Buffer[i] &&

               o_lo4==ExtLo4Buffer[i] &&

               o_hi5==ExtHi5Buffer[i] &&

               o_lo5==ExtLo5Buffer[i] &&

               o_hi6==ExtHi6Buffer[i] &&

               o_lo6==ExtLo6Buffer[i] &&

               o_hi7==ExtHi7Buffer[i] &&

               o_lo7==ExtLo7Buffer[i] &&

               o_hi8==ExtHi8Buffer[i] &&

               o_lo8==ExtLo8Buffer[i] &&

               o_hi9==ExtHi9Buffer[i] &&

               o_lo9==ExtLo9Buffer[i] &&



               o_dn1==ExtDn1Buffer[i] &&

               o_up1==ExtUp1Buffer[i] &&

               o_dn2==ExtDn2Buffer[i] &&

               o_up2==ExtUp2Buffer[i] &&

               o_dn3==ExtDn3Buffer[i] &&

               o_up3==ExtUp3Buffer[i] &&

               o_dn4==ExtDn4Buffer[i] &&

               o_up4==ExtUp4Buffer[i] &&



               o_cen==ExtCENBuffer[i] &&

               o_avg==ExtAVGBuffer[i])

            break;

      }



      for(int i=0; i<rates_total && !IsStopped(); i++) {

         getTrend(ExtHi1Buffer,ExtLo1Buffer,i+1,ExtRange1,t1,b1,h1,l1,a1);

         getTrend(ExtHi3Buffer,ExtLo3Buffer,i+1,ExtRange2,t2,b2,h2,l2,a2);

         getTrend(ExtHi5Buffer,ExtLo5Buffer,i+1,ExtRange3,t3,b3,h3,l3,a3);



         cen=(h1+l1+t1+b1)/4.0;

         o_cen=ExtCt1Buffer[i];

         ExtCt1Buffer[i]=cen;



         o_hi1=ExtHt1Buffer[i];

         ExtHt1Buffer[i]=h1;

         o_lo1=ExtLt1Buffer[i];

         ExtLt1Buffer[i]=l1;

         o_to1=ExtTt1Buffer[i];

         ExtTt1Buffer[i]=t1;

         o_bo1=ExtBt1Buffer[i];

         ExtBt1Buffer[i]=b1;



         o_hi2=ExtHt2Buffer[i];

         ExtHt2Buffer[i]=h2;

         o_lo2=ExtLt2Buffer[i];

         ExtLt2Buffer[i]=l2;

         o_to2=ExtTt2Buffer[i];

         ExtTt2Buffer[i]=t2;

         o_bo2=ExtBt2Buffer[i];

         ExtBt2Buffer[i]=b2;



         o_hi3=ExtHt3Buffer[i];

         ExtHt3Buffer[i]=h3;

         o_lo3=ExtLt3Buffer[i];

         ExtLt3Buffer[i]=l3;

         o_to3=ExtTt3Buffer[i];

         ExtTt3Buffer[i]=t3;

         o_bo3=ExtBt3Buffer[i];

         ExtBt3Buffer[i]=b3;



         if(i==ExtraRange) {

            updDir("Dir_1",a1);

            updDir("Dir_2",a2);

            updDir("Dir_3",a3);

         }



         // Skip calculation for old candles

         if(i>ExtraRange &&

               nowPeriod==lastPeriod &&



               o_cen==ExtCt1Buffer[i] &&



               o_hi1==ExtHt1Buffer[i] &&

               o_lo1==ExtLt1Buffer[i] &&

               o_to1==ExtTt1Buffer[i] &&

               o_bo1==ExtBt1Buffer[i] &&



               o_hi2==ExtHt2Buffer[i] &&

               o_lo2==ExtLt2Buffer[i] &&

               o_to2==ExtTt2Buffer[i] &&

               o_bo2==ExtBt2Buffer[i] &&



               o_hi3==ExtHt3Buffer[i] &&

               o_lo3==ExtLt3Buffer[i] &&

               o_to3==ExtTt3Buffer[i] &&

               o_bo3==ExtBt3Buffer[i])

            break;

      }



      lastOpen=open[0];

      lastTime=time[0];

      lastPeriod=nowPeriod;

   }



   int i=ExtraRange;

   if(i>=rates_total) i=rates_total-1;



   u4=ExtUp4Buffer[i];

   d4=ExtDn4Buffer[i];

   cen=ExtCENBuffer[i];

   avg=ExtAVGBuffer[i];



   h1=ExtHt1Buffer[i];

   l1=ExtLt1Buffer[i];

   t1=ExtTt1Buffer[i];

   b1=ExtBt1Buffer[i];



   h2=ExtHt2Buffer[i];

   l2=ExtLt2Buffer[i];

   t2=ExtTt2Buffer[i];

   b2=ExtBt2Buffer[i];



   h3=ExtHt3Buffer[i];

   l3=ExtLt3Buffer[i];

   t3=ExtTt3Buffer[i];

   b3=ExtBt3Buffer[i];



   if(tradeTickValue>0) {

      updRng("BuyRange_1","Top_1",(t1-bid)*defPix*tradeTickValue,t1,time[0]+ps*3);

      updRng("BuyRange_2","Top_2",(t2-bid)*defPix*tradeTickValue,t2,time[0]+ps*3);

      updRng("BuyRange_3","Top_3",(t3-bid)*defPix*tradeTickValue,t3,time[0]+ps*3);



      updRng("SellRange_1","Bot_1",(b1-bid)*defPix*tradeTickValue,b1,time[0]+ps*3);

      updRng("SellRange_2","Bot_2",(b2-bid)*defPix*tradeTickValue,b2,time[0]+ps*3);

      updRng("SellRange_3","Bot_3",(b3-bid)*defPix*tradeTickValue,b3,time[0]+ps*3);



      updRng("","Hig_1",(h1-bid)*defPix*tradeTickValue,h1,time[0]+ps*3);

      updRng("","Hig_2",(h2-bid)*defPix*tradeTickValue,h2,time[0]+ps*3);

      updRng("","Hig_3",(h3-bid)*defPix*tradeTickValue,h3,time[0]+ps*3);



      updRng("","Low_1",(l1-bid)*defPix*tradeTickValue,l1,time[0]+ps*3);

      updRng("","Low_2",(l2-bid)*defPix*tradeTickValue,l2,time[0]+ps*3);

      updRng("","Low_3",(l3-bid)*defPix*tradeTickValue,l3,time[0]+ps*3);



      updRng("","Top_X",(u4-bid)*defPix*tradeTickValue,u4,time[0]+ps*3);

      updRng("","Bot_X",(d4-bid)*defPix*tradeTickValue,d4,time[0]+ps*3);

      updRng("","Cnt_X",(cen-bid)*defPix*tradeTickValue,cen,time[0]+ps*3);

      updRng("","Avg_X",(avg-bid)*defPix*tradeTickValue,avg,time[0]+ps*3);



      string tcost=DoubleToString((ask-bid+comSpread)*defPix*tradeTickValue,2);

      ObjectSetString(0,"Cur_C",OBJPROP_TEXT," > "+tcost);

      ObjectMove(0,"Cur_C",0,time[0]+ps*PriceWid,(ask+bid)/2.0);



      string blnk="";

      StringInit(blnk,StringLen(tcost)+1,'ˆ%');

      ObjectSetString(0,"Cur_Cb",OBJPROP_TEXT,blnk);

      ObjectMove(0,"Cur_Cb",0,time[0]+ps*PriceWid,(ask+bid)/2.0);

   }



   bSort6(h1,t1,h2,t2,h3,t3);

   bSort6(b3,l3,b2,l2,b1,l1);



   ObjectMove(0,"Cur_X",0,time[0],t3);

   ObjectMove(0,"Cur_X",1,time[0],b3);



   if(iAutoScale || (tradeTickValue>0)) {

      VisibleRange=(int)ChartGetInteger(0,CHART_VISIBLE_BARS,0);



      double cu=open[0],cd=open[0];

      int j=VisibleRange;

      if(j>=rates_total) j=rates_total-1;

      for (int k=1; k<=j; k++) {

         if(cu<high[k]) cu=high[k];

         if(cd>low[k]) cd=low[k];

      }

      if(tradeTickValue>0) {

         updRng("","Top_S",(cu-bid)*defPix*tradeTickValue,cu,time[0]+ps*PriceWid);

         updRng("","Bot_S",(cd-bid)*defPix*tradeTickValue,cd,time[0]+ps*PriceWid);

      }



      if(iAutoScale) {

         if(cu<ask) cu=ask;

         if(cu<high[0]) cu=high[0];

         if(cd>low[0]) cd=low[0];



         j=i+VisibleRange;

         if(j>=rates_total) j=rates_total-1;



         for (int k=0; k<=j; k++) {

            if(cu<ExtCENBuffer[k]) cu=ExtCENBuffer[k];

            if(cd>ExtCENBuffer[k]) cd=ExtCENBuffer[k];



            if(cu<ExtAVGBuffer[k]) cu=ExtAVGBuffer[k];

            if(cd>ExtAVGBuffer[k]) cd=ExtAVGBuffer[k];



            if(cu<ExtHt1Buffer[k]) cu=ExtHt1Buffer[k];

            if(cd>ExtLt1Buffer[k]) cd=ExtLt1Buffer[k];

            if(cu<ExtTt1Buffer[k]) cu=ExtTt1Buffer[k];

            if(cd>ExtBt1Buffer[k]) cd=ExtBt1Buffer[k];



            if(cu<ExtHt2Buffer[k]) cu=ExtHt2Buffer[k];

            if(cd>ExtLt2Buffer[k]) cd=ExtLt2Buffer[k];

            if(cu<ExtTt2Buffer[k]) cu=ExtTt2Buffer[k];

            if(cd>ExtBt2Buffer[k]) cd=ExtBt2Buffer[k];



            if(cu<ExtHt3Buffer[k]) cu=ExtHt3Buffer[k];

            if(cd>ExtLt3Buffer[k]) cd=ExtLt3Buffer[k];

            if(cu<ExtTt3Buffer[k]) cu=ExtTt3Buffer[k];

            if(cd>ExtBt3Buffer[k]) cd=ExtBt3Buffer[k];

         }

         double cs=MathAbs(cu-cd+pixel*10)*0.025;

         cu+=comSpread+cs;

         cd-=comSpread+cs;



         ChartSetInteger(ChartID(),CHART_SCALEFIX,true);

         ChartSetDouble(ChartID(),CHART_FIXED_MAX,cu);

         ChartSetDouble(ChartID(),CHART_FIXED_MIN,cd);

      }

   }



   ObjectMove(0,"Cur_Ask",0,time[0]+ps*4,ask);

   ObjectMove(0,"Cur_Ask",1,time[0]+ps*PriceWid,ask);

   ObjectMove(0,"Cur_Bid",0,time[0],bid);

   ObjectMove(0,"Cur_Bid",1,time[0]+ps*(PriceWid-1),bid);

   ObjectMove(0,"Cur_Ask2",0,time[0]+ps*(PriceWid/2+1),ask+comSpread);

   ObjectMove(0,"Cur_Ask2",1,time[0]+ps*(PriceWid-1),ask+comSpread);

   ObjectMove(0,"Cur_Bid2",0,time[0]+ps*PriceWid/2,bid-comSpread);

   ObjectMove(0,"Cur_Bid2",1,time[0]+ps*PriceWid,bid-comSpread);



   ObjectMove(0,"Cur_BA",0,time[0]+ps*(PriceWid-1),bid);

   ObjectMove(0,"Cur_BA",1,time[0]+ps*PriceWid,ask);

   ObjectMove(0,"Cur_BA2",0,time[0]+ps*PriceWid,bid-comSpread);

   ObjectMove(0,"Cur_BA2",1,time[0]+ps*(PriceWid-1),ask+comSpread);



   doUpdateInfo();

   double tgtBuyPrice=0,tgtSellPrice=0,pvtBuyPrice=0,pvtSellPrice=0;

   int wBuy=0,wSell=0;

   if(midBuyPrice>0) {

      tgtBuyPrice=nextBuyTarget(minTradeVol);

      pvtBuyPrice=worstBuyPrice;

      wBuy=PriceWid-1;

      if(tradeTickValue>0)

         updRng("","Cur_ZBuy",(midBuyPrice-bid)*defPix*tradeTickValue,midBuyPrice,time[0]+ps*PriceWid);

   } else {

      if(tradeTickValue>0)

         clrRng("Cur_ZBuy",time[0]+ps*PriceWid);

   }

   if(midSellPrice>0) {

      tgtSellPrice=nextSellTarget(minTradeVol);

      pvtSellPrice=worstSellPrice;

      wSell=PriceWid-1;

      if (tradeTickValue>0)

         updRng("","Cur_ZSell",(midSellPrice-ask)*defPix*tradeTickValue,midSellPrice,time[0]+ps*PriceWid);

   } else {

      if (tradeTickValue>0)

         clrRng("Cur_ZSell",time[0]+ps*PriceWid);

   }



   if(midBuyPrice==0) midBuyPrice=ask;

   if(tgtBuyPrice==0) tgtBuyPrice=midBuyPrice;

   if(pvtBuyPrice==0) pvtBuyPrice=midBuyPrice;



   if(midSellPrice==0) midSellPrice=bid;

   if(tgtSellPrice==0) tgtSellPrice=midSellPrice;

   if(pvtSellPrice==0) pvtSellPrice=midSellPrice;



   ObjectMove(0,"Cur_MBuy",0,time[0]+ps*(PriceWid-1),midBuyPrice);

   ObjectMove(0,"Cur_MBuy",1,time[0]+ps*(PriceWid-1+wBuy),midBuyPrice);

   ObjectMove(0,"Cur_TBuy",0,time[0]+ps*(PriceWid-1),tgtBuyPrice);

   ObjectMove(0,"Cur_TBuy",1,time[0]+ps*(PriceWid-1+wBuy),tgtBuyPrice);

   ObjectMove(0,"Cur_PBuy",0,time[0]+ps*(PriceWid-1),pvtBuyPrice);

   ObjectMove(0,"Cur_PBuy",1,time[0]+ps*(PriceWid-1+wBuy),pvtBuyPrice);



   ObjectMove(0,"Cur_MSell",0,time[0]+ps*(PriceWid-1),midSellPrice);

   ObjectMove(0,"Cur_MSell",1,time[0]+ps*(PriceWid-1+wSell),midSellPrice);

   ObjectMove(0,"Cur_TSell",0,time[0]+ps*(PriceWid-1),tgtSellPrice);

   ObjectMove(0,"Cur_TSell",1,time[0]+ps*(PriceWid-1+wSell),tgtSellPrice);

   ObjectMove(0,"Cur_PSell",0,time[0]+ps*(PriceWid-1),pvtSellPrice);

   ObjectMove(0,"Cur_PSell",1,time[0]+ps*(PriceWid-1+wSell),pvtSellPrice);



   doUpdate();



//--- done

   return(rates_total);

}

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

//|                                                                  |

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

int time2per(datetime t) {

   return((int)((TimeCurrent()-t)/PeriodSeconds()+ExtraRange));

}

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

//|                                                                  |

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

void updLine(string n,datetime t) {

   int len=ArraySize(ExtCENBuffer)-1;

   int i=time2per(t);

   if(i>len) i=len;

   else if(i<0) i=0;

   while(i<len) {

      if(ExtTimeBuffer[i]<=t) break;

      i++;

   }

   while(i>0) {

      if(ExtTimeBuffer[i]>=t) break;

      i--;

   }



   ObjectMove(0,n,0,t,ExtUp4Buffer[i]);

   ObjectMove(0,n,1,t,ExtDn4Buffer[i]);

}

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

//|                                                                  |

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

void getTrend(double &arh[],double &arl[],int i2,int i1,double &tt,double &bt,double &ht,double &lt,double &dif) {

   int len=ArraySize(arh)-1;



   if(i2>len) i2=len;

   else if(i2<0) i2=0;



   datetime et=(datetime)(ExtTimeBuffer[i2]-PeriodSeconds()*i1);

   fixTime(et);



   i1=i2-i1;

   if(i1>len) i1=len;

   else if(i1<0) i1=0;



   while(i1<len) {

      if(ExtTimeBuffer[i1]<=et) break;

      i1++;

   }

   while(i1>0) {

      if(ExtTimeBuffer[i1]>=et) break;

      i1--;

   }



   double h1=arh[i1],h2=arh[i2],hd=h2-h1,hc=(h1+h2)/2.0;

   double l1=arl[i1],l2=arl[i2],ld=l2-l1,lc=(l1+l2)/2.0;



   dif=(hd+ld)/2.0;



   tt=hc+hd;

   ht=hc+(hd+ld)/2.0;

   lt=lc+(hd+ld)/2.0;

   bt=lc+ld;

}

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

//|                                                                  |

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

void updTrend(const string nh,const string nl,const string nc,double &arh[],double &arl[],datetime t1,datetime t2) {

   int i=time2per(t1),j=time2per(t2);

   if(i>=ArraySize(arh)) i=ArraySize(arh)-1;

   else if(i<0) i=0;

   if(j>=ArraySize(arh)) j=ArraySize(arh)-1;

   else if(j<0) j=0;



   double xh=arh[i],xl=arl[i],xc=(xh+xl)/2.0;

   double zh=arh[j],zl=arl[j],zc=(zh+zl)/2.0;

   double xd=MathMax(xh-xl,zh-zl)/2.0;



   ObjectMove(0,nh,0,t1,xc+xd);

   ObjectMove(0,nh,1,t2+(t2-t1)/2,zc+(zc-xc)/2.0+xd);

   ObjectMove(0,nl,0,t1,xc-xd);

   ObjectMove(0,nl,1,t2+(t2-t1)/2,zc+(zc-xc)/2.0-xd);

   ObjectMove(0,nc,0,t1,xc);

   ObjectMove(0,nc,1,t2+(t2-t1)/2,zc+(zc-xc)/2.0);



   if(xc>zc) {

      ObjectSetInteger(0,nh,OBJPROP_WIDTH,2);

      ObjectSetInteger(0,nh,OBJPROP_STYLE,STYLE_DASH);

      ObjectSetInteger(0,nl,OBJPROP_WIDTH,1);

      ObjectSetInteger(0,nl,OBJPROP_STYLE,STYLE_DOT);

      ObjectSetInteger(0,nc,OBJPROP_COLOR,ObjectGetInteger(0,nh,OBJPROP_COLOR));

      ObjectSetInteger(0,nc,OBJPROP_STYLE,STYLE_DASH);

   } else if(xc<zc) {

      ObjectSetInteger(0,nh,OBJPROP_WIDTH,1);

      ObjectSetInteger(0,nh,OBJPROP_STYLE,STYLE_DOT);

      ObjectSetInteger(0,nl,OBJPROP_WIDTH,2);

      ObjectSetInteger(0,nl,OBJPROP_STYLE,STYLE_DASH);

      ObjectSetInteger(0,nc,OBJPROP_COLOR,ObjectGetInteger(0,nl,OBJPROP_COLOR));

      ObjectSetInteger(0,nc,OBJPROP_STYLE,STYLE_DASH);

   } else {

      ObjectSetInteger(0,nh,OBJPROP_WIDTH,2);

      ObjectSetInteger(0,nh,OBJPROP_STYLE,STYLE_DASH);

      ObjectSetInteger(0,nl,OBJPROP_WIDTH,2);

      ObjectSetInteger(0,nl,OBJPROP_STYLE,STYLE_DASH);

      ObjectSetInteger(0,nc,OBJPROP_COLOR,(ObjectGetInteger(0,nh,OBJPROP_COLOR)+ObjectGetInteger(0,nl,OBJPROP_COLOR))/2);

      ObjectSetInteger(0,nc,OBJPROP_STYLE,STYLE_DASH);

   }

}

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

//|                                                                  |

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

void doUpdate() {

   datetime ptime=TimeCurrent();



   updLine("Open_Sydney",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Sydney_O));

   updLine("TClose_Sydney",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Sydney_T));

   updLine("Close_Sydney",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Sydney_C));



   updLine("Open_Tokyo",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Tokyo_O));

   updLine("TClose_Tokyo",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Tokyo_T));

   updLine("Close_Tokyo",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*Tokyo_C));



   updLine("Open_London",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*London_O));

   updLine("TClose_London",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*London_T));

   updLine("Close_London",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*London_C));



   updLine("Open_NewYork",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*NewYork_O));

   updLine("TClose_NewYork",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*NewYork_T));

   updLine("Close_NewYork",(int)MathRound(ptime/(60*60*24))*(60*60*24)+(60*NewYork_C));



   int cnt=0;

   MqlRates mr[5];



   cnt=CopyRates(_Symbol,PERIOD_M1,0,5,mr);

   if(cnt>=5) updPer("Per_dM1",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dM1");

   if(cnt>=4) updPer("Per_cM1",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cM1");

   if(cnt>=3) updPer("Per_bM1",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bM1");

   if(cnt>=2) updPer("Per_M1", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_M1");

   if(cnt>=1) updPer("Per_nM1",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nM1");



   cnt=CopyRates(_Symbol,PERIOD_M5,0,5,mr);

   if(cnt>=5) updPer("Per_dM5",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dM5");

   if(cnt>=4) updPer("Per_cM5",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cM5");

   if(cnt>=3) updPer("Per_bM5",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bM5");

   if(cnt>=2) updPer("Per_M5", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_M5");

   if(cnt>=1) updPer("Per_nM5",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nM5");



   cnt=CopyRates(_Symbol,PERIOD_M15,0,5,mr);

   if(cnt>=5) updPer("Per_dM15",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dM15");

   if(cnt>=4) updPer("Per_cM15",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cM15");

   if(cnt>=3) updPer("Per_bM15",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bM15");

   if(cnt>=2) updPer("Per_M15", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_M15");

   if(cnt>=1) updPer("Per_nM15",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nM15");



   cnt=CopyRates(_Symbol,PERIOD_H1,0,5,mr);

   if(cnt>=5) updPer("Per_dH1",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dH1");

   if(cnt>=4) updPer("Per_cH1",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cH1");

   if(cnt>=3) updPer("Per_bH1",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bH1");

   if(cnt>=2) updPer("Per_H1", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_H1");

   if(cnt>=1) updPer("Per_nH1",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nH1");



   cnt=CopyRates(_Symbol,PERIOD_H4,0,5,mr);

   if(cnt>=5) updPer("Per_dH4",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dH4");

   if(cnt>=4) updPer("Per_cH4",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cH4");

   if(cnt>=3) updPer("Per_bH4",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bH4");

   if(cnt>=2) updPer("Per_H4", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_H4");

   if(cnt>=1) updPer("Per_nH4",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nH4");



   cnt=CopyRates(_Symbol,PERIOD_H8,0,5,mr);

   if(cnt>=5) updPer("Per_dH8",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dH8");

   if(cnt>=4) updPer("Per_cH8",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cH8");

   if(cnt>=3) updPer("Per_bH8",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bH8");

   if(cnt>=2) updPer("Per_H8", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_H8");

   if(cnt>=1) updPer("Per_nH8",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nH8");



   cnt=CopyRates(_Symbol,PERIOD_D1,0,5,mr);

   if(cnt>=5) updPer("Per_dD1",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dD1");

   if(cnt>=4) updPer("Per_cD1",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cD1");

   if(cnt>=3) updPer("Per_bD1",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bD1");

   if(cnt>=2) updPer("Per_D1", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_D1");

   if(cnt>=1) updPer("Per_nD1",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nD1");



   cnt=CopyRates(_Symbol,PERIOD_W1,0,5,mr);

   if(cnt>=5) updPer("Per_dW1",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dW1");

   if(cnt>=4) updPer("Per_cW1",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cW1");

   if(cnt>=3) updPer("Per_bW1",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bW1");

   if(cnt>=2) updPer("Per_W1", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_W1");

   if(cnt>=1) updPer("Per_nW1",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nW1");



   cnt=CopyRates(_Symbol,PERIOD_MN1,0,5,mr);

   if(cnt>=5) updPer("Per_dMN1",mr[cnt-1].close,(mr[cnt-5].high+mr[cnt-5].low+mr[cnt-5].close)/3.0);

   else clrPer("Per_dMN1");

   if(cnt>=4) updPer("Per_cMN1",mr[cnt-1].close,(mr[cnt-4].high+mr[cnt-4].low+mr[cnt-4].close)/3.0);

   else clrPer("Per_cMN1");

   if(cnt>=3) updPer("Per_bMN1",mr[cnt-1].close,(mr[cnt-3].high+mr[cnt-3].low+mr[cnt-3].close)/3.0);

   else clrPer("Per_bMN1");

   if(cnt>=2) updPer("Per_MN1", mr[cnt-1].close,(mr[cnt-2].high+mr[cnt-2].low+mr[cnt-2].close)/3.0);

   else clrPer("Per_MN1");

   if(cnt>=1) updPer("Per_nMN1",mr[cnt-1].close,(mr[cnt-1].high+mr[cnt-1].low+mr[cnt-1].close)/3.0);

   else clrPer("Per_nMN1");

}

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

void perBtnCreate(int cid,const string bname,int xdist,int ydist,int xsize,int ysize,int corner=CORNER_RIGHT_UPPER,const string btext="",bool bstate=false) {

   if(ObjectFind(0,bname)!=cid) {

      ObjectCreate(0,bname,OBJ_BUTTON,cid,0,0);



      ObjectSetInteger(0,bname,OBJPROP_COLOR,clrSilver);

      ObjectSetInteger(0,bname,OBJPROP_FONTSIZE,9);

      ObjectSetInteger(0,bname,OBJPROP_BORDER_TYPE,BORDER_RAISED);

      ObjectSetInteger(0,bname,OBJPROP_BORDER_COLOR,clrNONE);

      ObjectSetInteger(0,bname,OBJPROP_BGCOLOR,C'50,50,50');

      ObjectSetInteger(0,bname,OBJPROP_ZORDER,1000);

      ObjectSetInteger(0,bname,OBJPROP_SELECTABLE,false);



      ObjectSetString(0,bname,OBJPROP_TEXT,btext);

   }



   ObjectSetInteger(0,bname,OBJPROP_CORNER,corner);

   ObjectSetInteger(0,bname,OBJPROP_XSIZE,xsize);

   ObjectSetInteger(0,bname,OBJPROP_YSIZE,ysize);

   ObjectSetInteger(0,bname,OBJPROP_XDISTANCE,xdist);

   ObjectSetInteger(0,bname,OBJPROP_YDISTANCE,ydist);



   ObjectSetInteger(0,bname,OBJPROP_STATE,bstate);

}

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

void perTxtCreate(int cid,const string bname,color clr=clrBlack) {

   if(ObjectFind(0,bname)!=cid) {

      ObjectCreate(0,bname,OBJ_TEXT,cid,0,0);



      ObjectSetInteger(0,bname,OBJPROP_COLOR,clr);

      ObjectSetInteger(0,bname,OBJPROP_FONTSIZE,10);

      ObjectSetInteger(0,bname,OBJPROP_ZORDER,1000);

      ObjectSetInteger(0,bname,OBJPROP_SELECTABLE,false);

   }

   ObjectSetInteger(0,bname,OBJPROP_ANCHOR,ANCHOR_LEFT);

}

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

void OnChartEvent(const int id,         // Event identifier

                  const long& lparam,   // Event parameter of long type

                  const double& dparam, // Event parameter of double type

                  const string& sparam  // Event parameter of string type

                 ) {

   if(id==CHARTEVENT_OBJECT_CLICK) {

      if(ObjectGetInteger(0,sparam,OBJPROP_STATE) && (StringSubstr(sparam,0,4)=="Per_")) {

         if(StringSubstr(sparam,0,5)=="Per_n") {

            ENUM_TIMEFRAMES tf=_Period;

            if(sparam=="Per_nM5")  tf=PERIOD_M5;

            if(sparam=="Per_nM15") tf=PERIOD_M15;

            if(sparam=="Per_nH1")  tf=PERIOD_H1;

            if(sparam=="Per_nH4")  tf=PERIOD_H4;

            if(sparam=="Per_nH8")  tf=PERIOD_H8;

            if(sparam=="Per_nD1")  tf=PERIOD_D1;

            if(sparam=="Per_nW1")  tf=PERIOD_W1;

            if(sparam=="Per_nMN1") tf=PERIOD_MN1;



            MqlRates mr[];

            ArrayResize(mr,ExtRange5+ExtRange4+ExtRange3+ExtRange2+ExtRange1);

            int cnt=CopyRates(_Symbol,tf,0,ArraySize(mr),mr);

         }



         if(sparam=="Per_M1"  || sparam=="Per_nM1"  || sparam=="Per_bM1"  || sparam=="Per_cM1"  || sparam=="Per_dM1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_M1);

         if(sparam=="Per_M5"  || sparam=="Per_nM5"  || sparam=="Per_bM5"  || sparam=="Per_cM5"  || sparam=="Per_dM5")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_M5);

         if(sparam=="Per_M15" || sparam=="Per_nM15" || sparam=="Per_bM15" || sparam=="Per_cM15" || sparam=="Per_dM15") ChartSetSymbolPeriod(0,_Symbol,PERIOD_M15);

         if(sparam=="Per_H1"  || sparam=="Per_nH1"  || sparam=="Per_bH1"  || sparam=="Per_cH1"  || sparam=="Per_dH1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_H1);

         if(sparam=="Per_H4"  || sparam=="Per_nH4"  || sparam=="Per_bH4"  || sparam=="Per_cH4"  || sparam=="Per_dH4")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_H4);

         if(sparam=="Per_H8" || sparam=="Per_nH8" || sparam=="Per_bH8" || sparam=="Per_cH8" || sparam=="Per_dH8") ChartSetSymbolPeriod(0,_Symbol,PERIOD_H8);

         if(sparam=="Per_D1"  || sparam=="Per_nD1"  || sparam=="Per_bD1"  || sparam=="Per_cD1"  || sparam=="Per_dD1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_D1);

         if(sparam=="Per_W1"  || sparam=="Per_nW1"  || sparam=="Per_bW1"  || sparam=="Per_cW1"  || sparam=="Per_dW1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_W1);

         if(sparam=="Per_MN1" || sparam=="Per_nMN1" || sparam=="Per_bMN1" || sparam=="Per_cMN1" || sparam=="Per_dMN1") ChartSetSymbolPeriod(0,_Symbol,PERIOD_MN1);

      }

   } else if(id==CHARTEVENT_CUSTOM) {

      if(sparam=="Per_M1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_M1);

      if(sparam=="Per_M5")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_M5);

      if(sparam=="Per_M15") ChartSetSymbolPeriod(0,_Symbol,PERIOD_M15);

      if(sparam=="Per_H1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_H1);

      if(sparam=="Per_H4")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_H4);

      if(sparam=="Per_H8") ChartSetSymbolPeriod(0,_Symbol,PERIOD_H8);

      if(sparam=="Per_D1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_D1);

      if(sparam=="Per_W1")  ChartSetSymbolPeriod(0,_Symbol,PERIOD_W1);

      if(sparam=="Per_MN1") ChartSetSymbolPeriod(0,_Symbol,PERIOD_MN1);

   }

}

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

void updPer(const string persym,const double closep,const double openp) {

   if(closep>openp) ObjectSetInteger(0,persym,OBJPROP_BGCOLOR,C'0,100,50');

   else if(closep<openp) ObjectSetInteger(0,persym,OBJPROP_BGCOLOR,C'100,0,50');

   else ObjectSetInteger(0,persym,OBJPROP_BGCOLOR,C'50,50,50');

}

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

void clrPer(const string persym) {

   if(StringLen(_Symbol)>3) ObjectSetInteger(0,persym,OBJPROP_BGCOLOR,C'50,50,50');

}

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

void updDir(const string dsym,const double dif) {

   if(dif>0) ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'0,100,50');

   else if(dif<0) ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'100,0,50');

   else ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'50,50,50');

}

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

void clrDir(const string dsym) {

   if(StringLen(_Symbol)>3) ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'50,50,50');

}

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

void updRng(const string dsym,const string dsym2,const double profit,const double price,datetime timex) {

   if(dsym!="") {

      if(profit>0) ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'0,100,50');

      else if(profit<0) ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'100,0,50');

      else ObjectSetInteger(0,dsym,OBJPROP_BGCOLOR,C'50,50,50');

      ObjectSetString(0,dsym,OBJPROP_TEXT,DoubleToString(MathAbs(profit),2));

   }

   if(dsym2!="") {

      string pref="";

      int anchor;



      if(profit>0) {

         pref="²%";

         anchor=ANCHOR_LEFT_LOWER;

      } else if (profit<0) {

         pref="¼%";

         anchor=ANCHOR_LEFT_UPPER;

      } else {

         pref="Ä%";

         anchor=ANCHOR_LEFT;

      }



      ObjectMove(0,dsym2,0,timex,price);

      ObjectSetInteger(0,dsym2,OBJPROP_ANCHOR,anchor);

      ObjectSetString(0,dsym2,OBJPROP_TEXT,pref+" "+DoubleToString(MathAbs(profit),2));



      string blnk="";

      StringInit(blnk,StringLen(DoubleToString(MathAbs(profit),2)),'ˆ%');



      ObjectMove(0,dsym2+"b",0,timex,price);

      ObjectSetInteger(0,dsym2+"b",OBJPROP_ANCHOR,anchor);

      ObjectSetString(0,dsym2+"b",OBJPROP_TEXT,pref+blnk);

   }

}

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

void clrRng(const string dsym2,datetime timex) {

   ObjectSetString(0,dsym2,OBJPROP_TEXT,"");

   ObjectSetString(0,dsym2+"b",OBJPROP_TEXT,"");

   ObjectMove(0,dsym2,0,timex,0);

   ObjectMove(0,dsym2+"b",0,timex,0);

}

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

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---