← К каталогу
Исходный код · ID 924

breakoutboxesv2.06.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Пользовательский индикатор для MetaTrader 4, отображающий ценовые коробки (breakout boxes) для основных торговых сессий: Токио, Лондон и Нью-Йорк. Коробки строятся на основе максимума и минимума за сессию с заданными уровнями Take Profit и Stop Loss, а также дополнительной торговой зоной с отступом Margin. Индикатор поддерживает автоматический выбор количества знаков после запятой, учёт перехода на летнее время в Великобритании и США, расчёт среднесуточного диапазона (ADR) за 30 дней и текущего спреда брокера.

Настройки программы

НастройкаОписание
Margin Отступ маржи — Целочисленный отступ в пунктах от верхней и нижней границы коробки для расчёта уровней входа и стоп-лосса.
TP1 Тейк-профит 1 — Первый уровень фиксации прибыли в пунктах от границы коробки.
TP2 Тейк-профит 2 — Второй уровень фиксации прибыли в пунктах от границы коробки.
TP3 Тейк-профит 3 — Третий уровень фиксации прибыли в пунктах от границы коробки.
SL Стоп-лосс — Уровень стоп-лосса в пунктах от границы коробки; при включённом Auto_SL перезаписывается значением для текущей пары.
Auto_SL Автостоп-лосс — Переключатель автоматического подбора стоп-лосса по текущей торговой паре из предустановленных значений.
IIIIIIIIIII Список сессий — Текстовая подсказка, отображающая доступные номера сессий: 1 — Азия, 2 — Лондон, 3 — Нью-Йорк.
iSession Номер сессии — Целое число, выбирающее торговую сессию для отрисовки коробки: 1 — Токио, 2 — Лондон, 3 — Нью-Йорк.
GMT_Offset Смещение GMT — Часовой сдвиг в часах относительно GMT для корректировки времени начала и окончания сессии на графике.
UK_DST Летнее время Великобритании — Переключатель учёта перехода на летнее время в Великобритании для корректировки времени лондонской сессии.
US_DST Летнее время США — Переключатель учёта перехода на летнее время в США для корректировки времени нью-йоркской сессии.
NumberOfDays Количество дней — Количество предыдущих дней, для которых отрисовываются коробки на графике; ограничивается значением iMaxNoOfDays.
iMaxNoOfDays Максимум дней — Максимально допустимое значение параметра NumberOfDays; при превышении NumberOfDays автоматически приравнивается к этому значению.
SL_GU Стоп-лосс GBPUSD — Значение стоп-лосса в пунктах для пары GBPUSD при включённом Auto_SL.
SL_GJ Стоп-лосс GBPJPY — Значение стоп-лосса в пунктах для пары GBPJPY при включённом Auto_SL.
SL_EU Стоп-лосс EURUSD — Значение стоп-лосса в пунктах для пары EURUSD при включённом Auto_SL.
SL_EJ Стоп-лосс EURJPY — Значение стоп-лосса в пунктах для пары EURJPY при включённом Auto_SL.
SL_GBPCHF Стоп-лосс GBPCHF — Значение стоп-лосса в пунктах для пары GBPCHF при включённом Auto_SL.
SL_USDCHF Стоп-лосс USDCHF — Значение стоп-лосса в пунктах для пары USDCHF при включённом Auto_SL.
ChartHasBlkBgd Тёмный фон графика — Переключатель, определяющий цветовую схему индикатора: жёлтый текст на тёмном фоне или синий текст на светлом.
BoxColor Цвет коробки — Целевой цвет основной ценовой коробки сессии.
TradingBoxColor Цвет торговой зоны — Целевой цвет дополнительной торговой зоны, отображаемой после окончания основной коробки.
Pop_Up_Box Всплывающее окно — Переключатель способа оповещения: при true отображается всплывающее окно Alert; при false воспроизводятся звуковые файлы.
Alert_Time_Out Тайм-аут оповещения — Время в секундах, в течение которого повторные оповещения о пробое уровня блокируются после срабатывания.
IIIIIIII Подсказка оповещений — Текстовая подсказка, описывающая поведение оповещений при выключенном TP1.
Alert_On_TP1 Оповещение по TP1 — Переключатель: при true оповещение срабатывает на уровне TP1, при false — на границе коробки (buy/sell level).
Alert_on Оповещения включены — Главный переключатель активности звуковых и текстовых оповещений о пробое уровней.
Получить полный код

Поиск по коду файла

#property indicator_separate_window

extern int    Margin        = 8;
extern int    TP1           = 25;
extern int    TP2           = 50;
extern int    TP3           = 80;
extern int    SL            = 30;
extern bool   Auto_SL       = true;

extern string IIIIIIIIIII = "1=Asia 2=LON 3=NY";  
extern int  iSession      = 2;
extern int  GMT_Offset    = 0;
extern bool UK_DST        = true;      
extern bool US_DST        = true;      
extern int  NumberOfDays  = 10;         
extern int  iMaxNoOfDays  = 14; 

extern int SL_GU = 45;    
extern int SL_GJ = 50;    
extern int SL_EU = 35;    
extern int SL_EJ = 35;    
extern int SL_GBPCHF = 30;    
extern int SL_USDCHF = 30;    

extern bool   ChartHasBlkBgd   = true;
extern color  BoxColor         = LightGoldenrod;      
extern color  TradingBoxColor  = DarkSalmon; 

extern bool       Pop_Up_Box = true;
extern double  Alert_Time_Out = 16;
extern string        IIIIIIII = "..if TP1 false, alert @ Buy/Sell levels.";
extern bool      Alert_On_TP1 = false;
extern bool         Alert_on = false;

string   editor="Grath 2.06";
double   top, bottom;
string   sLeft, sBoxEnd, sBoxEndNew, temp, WindowName;
string   sFridayClose = "22:00", sTimeLondonOpen;
datetime dtRight, dtLeft, dtTempTime, dtTradingBoxEnd, dtFridayClose;
int      BoxLength, TradingBoxWidth, iSpread ;
bool     IsAllowed = true;
bool     twiddle = false;
bool     twiddle2 = false;

double bep, btp1, btp2, btp3, btp4, bsl;
double sep, stp1, stp2, stp3, stp4, ssl;
double drange, dLinePrice, dHeight, dSpread;
double AVG = 0;
string average;            // for ADR

double timecur=-1; //this is the time current for the pauses between movements
double timeloc=-1;
double timeloc2= -1;//this is a smaller lock out just for displaying the breach message

void init()
   {
      // код доступен только после оплаты
   }  // init()

void deinit() 
{
  DeleteObjects();
}   

void DeleteObjects() 
{
   datetime dtTradeDate=TimeCurrent();

   for (int i=0; i<iMaxNoOfDays; i++) 
   {
      if ( TimeDayOfWeek(dtTradeDate) == 5 && dtTradingBoxEnd > dtFridayClose ) dtTradeDate = decrementTradeDate(dtTradeDate);     // Tokyo on Fridays!

      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBAT");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBATL");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP1");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP1L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP2");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP2L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP3");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineBTP3L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSAT");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSATL");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP1");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP1L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP2");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP2L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP3");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " LineSTP3L");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TheBox");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TheBox2");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TimevlActiveRight");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TimevlLeft");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TimevlRight");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " TimevlLondonOpen");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneBuyTP1");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneBuyTP2");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneBuyTP3");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneBuyZone");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneSellTP1");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneSellTP2");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneSellTP3");   // 
      ObjectDelete(TimeToStr(dtTradeDate,TIME_DATE) + " ZoneSellZone");   // 

      dtTradeDate=decrementTradeDate(dtTradeDate);
      while (TimeDayOfWeek(dtTradeDate) > 5 || TimeDayOfWeek(dtTradeDate) < 1 ) dtTradeDate = decrementTradeDate(dtTradeDate);     // Removed Sundays from plots
   }
   ObjectsDeleteAll(0,OBJ_TEXT);
   ObjectDelete("B1");
   ObjectDelete("B11");
   ObjectDelete("B12");
   ObjectDelete("B13");
   ObjectDelete("B14");
   ObjectDelete("B15");
   ObjectDelete("B16");
   ObjectDelete("B17");
   ObjectDelete("B18");
   ObjectDelete("B19");
   ObjectDelete("B2");
   ObjectDelete("B20");
   ObjectDelete("B210");
   ObjectDelete("B3");
   ObjectDelete("B4");
   ObjectDelete("B5");
   ObjectDelete("B6");
   ObjectDelete("B7");
   ObjectDelete("B8");
   ObjectDelete("ADR");
   ObjectDelete("SPREAD");
   ObjectDelete("Ydb");
   ObjectDelete("sBoxRange");
   ObjectDelete("sPricelabel");
   ObjectDelete("sPrice");
   ObjectDelete("WHICHBOX");
   ObjectDelete("ALERT_ONOFF");
   ObjectDelete("SHOW_MARGIN");

}  // DeleteObjects()

void getADR(bool ChartHasBlkBgd)
{

      AVG = (iHigh(NULL,PERIOD_D1,30)-iLow(NULL,PERIOD_D1,30));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,29)-iLow(NULL,PERIOD_D1,29));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,28)-iLow(NULL,PERIOD_D1,28));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,27)-iLow(NULL,PERIOD_D1,27));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,26)-iLow(NULL,PERIOD_D1,26));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,25)-iLow(NULL,PERIOD_D1,25));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,24)-iLow(NULL,PERIOD_D1,24));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,23)-iLow(NULL,PERIOD_D1,23));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,22)-iLow(NULL,PERIOD_D1,22));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,21)-iLow(NULL,PERIOD_D1,21));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,20)-iLow(NULL,PERIOD_D1,20));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,19)-iLow(NULL,PERIOD_D1,19));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,18)-iLow(NULL,PERIOD_D1,18));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,17)-iLow(NULL,PERIOD_D1,17));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,16)-iLow(NULL,PERIOD_D1,16));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,15)-iLow(NULL,PERIOD_D1,15));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,14)-iLow(NULL,PERIOD_D1,14));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,13)-iLow(NULL,PERIOD_D1,13));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,12)-iLow(NULL,PERIOD_D1,12));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,11)-iLow(NULL,PERIOD_D1,11));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,10)-iLow(NULL,PERIOD_D1,10));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,9)-iLow(NULL,PERIOD_D1,9));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,8)-iLow(NULL,PERIOD_D1,8));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,7)-iLow(NULL,PERIOD_D1,7));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,6)-iLow(NULL,PERIOD_D1,6));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,5)-iLow(NULL,PERIOD_D1,5));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,4)-iLow(NULL,PERIOD_D1,4));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,3)-iLow(NULL,PERIOD_D1,3));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,2)-iLow(NULL,PERIOD_D1,2));
      AVG = AVG + (iHigh(NULL,PERIOD_D1,1)-iLow(NULL,PERIOD_D1,1));
      AVG = AVG/30;
      switch(Digits)
      {
         case 5: AVG = AVG*10000;  break;   // Deal with the extra one
         case 4: AVG = AVG*10000;  break;
         case 3: AVG = AVG*100;  break;    // Deal with the extra one
         case 2: AVG = AVG*100;  break;
      }
      ObjectCreate ("ADR",OBJ_LABEL, 0,0,0);
      if (ChartHasBlkBgd)
      {
         ObjectSetText("ADR", "ADR: "+ DoubleToStr(AVG,0) + " pips.", 9,"Georgia", Yellow);
      }
      else 
      {
         ObjectSetText("ADR", "ADR: "+ DoubleToStr(AVG,0) + " pips.", 9,"Georgia", Blue);
      }
      ObjectSet("ADR", OBJPROP_CORNER, 1);
      ObjectSet("ADR", OBJPROP_XDISTANCE, 5);
      ObjectSet("ADR", OBJPROP_YDISTANCE, 40);
}      

int getSpread(bool ChartHasBlkBgd)
{

      iSpread=MarketInfo(Symbol(),MODE_SPREAD);
      if (Digits==5 || Digits==3)
      {
         iSpread = iSpread/10;
      }

      ObjectCreate ("SPREAD",OBJ_LABEL, 0,0,0);
      if (ChartHasBlkBgd)
      {
         ObjectSetText("SPREAD", "Spread: "+ iSpread + " pips.", 9,"Georgia", Yellow);
      }
      else 
      {
         ObjectSetText("SPREAD", "Spread: "+ iSpread + " pips.", 9,"Georgia", Blue);
      }
      ObjectSet("SPREAD", OBJPROP_CORNER, 1);
      ObjectSet("SPREAD", OBJPROP_XDISTANCE, 5);
      ObjectSet("SPREAD", OBJPROP_YDISTANCE, 60);

      return(iSpread);
}

void start()
{
      // код доступен только после оплаты
   }    //start()

void DrawObjects(datetime dtTradeDate, string sObjName, string sTimeBegin, string sTimeEnd, string sTimeTradeEnd, bool BlkBgd, color cObjColor1, color cObjColor2, int iMargin, int Session, int iGMT_Offset, int iSpread, bool DateFix, bool DateFix2, int iCtr, bool Alert_on, bool Pop_Up_Box, double Time_Out, int iForm) 
{ 
   datetime dtTimeBegin, dtTimeEnd, dtTimeObjEnd, dtLineEnd, dtTimeLondonOpen;
   double   dPriceHigh,  dPriceLow, dPriceOpen, dPriceClose, dPriceMid;
   int      iBarBegin,   iBarEnd;
   string   sObjDesc;

   dtTimeBegin = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeBegin);
   dtTimeEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeEnd);
   if (DateFix) dtTimeBegin = dtTimeBegin - 86400;
   dtTimeObjEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeTradeEnd);
   if (DateFix2) dtTimeObjEnd = dtTimeObjEnd + 86400;

   dtLineEnd = StrToTime(TimeToStr ( dtTimeEnd + D'1970.01.01 1'* 3 ));   // for the price trendlines
   dtTimeLondonOpen = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeLondonOpen);

      iBarBegin = iBarShift(NULL, 0, dtTimeBegin) + 1;  
      iBarEnd = iBarShift(NULL, 0, dtTimeEnd) + 1;  

      dPriceHigh  = High[Highest(NULL, 0, MODE_HIGH, (iBarBegin)-iBarEnd, iBarEnd)];
      dPriceLow   = Low [Lowest (NULL, 0, MODE_LOW , (iBarBegin)-iBarEnd, iBarEnd)];

      top    = dPriceHigh;
      bottom = dPriceLow;

      bep  = top+(iMargin * Point);
      btp1 = bep+(TP1*Point);
      btp2 = bep+(TP2*Point); 
      btp3 = bep+(TP3*Point);
      if (Digits==5 || Digits==3)
      {
         btp4 = btp3+(200*Point);
      }
      else
      {
         btp4 = btp3+(20*Point);
      }
      bsl  = bep-(SL*Point); 

      sep  = bottom-(iMargin*Point);
      stp1 = sep-(TP1*Point);
      stp2 = sep-(TP2*Point); 
      stp3 = sep-(TP3*Point);
      if (Digits==5 || Digits==3)
      {
         stp4 = stp3-(200*Point);
      }
      else
      {
         stp4 = stp3-(20*Point);
      }
      ssl  = sep+(SL*Point); 

   if (iCtr == 0)
   {
      drange = (top-bottom)/Point;
      switch (Digits)
      {
       case 5: drange = drange/10; dSpread = iSpread*Point*10; break; 
       case 4: drange = drange;    dSpread = iSpread*Point; break;
       case 3: drange = drange/10; dSpread = iSpread*Point*10; break;
       case 2: drange = drange;    dSpread = iSpread*Point; break;
      }
   }

   if (Alert_On_TP1)
   {
   if (Close[0] >= btp1  &&  TimeCurrent() > timeloc  && Alert_on == true  && iCtr == 0 && TimeCurrent() >= dtTimeEnd &&  TimeCurrent() <= dtTimeObjEnd)
     {
      timeloc2=TimeCurrent()+4.5; //this is a smaller lock out just for displaying the breech message           
      timeloc= TimeCurrent();  //done just for a slight pause
      if (Pop_Up_Box==False)
        {
         PlaySound("Alert2.wav");
         for(double asdfff =1;asdfff <1900.0239 ;) asdfff+=.91231; //a little pause
         while(TimeCurrent()<=timeloc) asdfff=0; //another little pause
         PlaySound("Alert.wav");
        }
      else {Alert("Breakout North ", Symbol()," ",DoubleToStr(bep, Digits));}
      timeloc=TimeCurrent()+Time_Out;   //how many seconds do we lock out the Alert
     }
   if (Close[0] <= stp1  &&  TimeCurrent() > timeloc  && Alert_on ==true && iCtr == 0 && TimeCurrent() >= dtTimeEnd &&  TimeCurrent() <= dtTimeObjEnd)
     {
      timeloc2=TimeCurrent()+4.5;//this is a smaller lock out just for displaying the breech message
      timeloc =TimeCurrent();   //just for a slight, unofficial pause
      if (Pop_Up_Box==False)
        {
         PlaySound("Alert.wav");
         for(double asdf =1;asdf <1200.0239 ;) asdf+=.91231; //a little pause
         while(TimeCurrent()<=timeloc) asdf=0; //another little pause
         PlaySound("Alert2.wav");
        }
      else {Alert("Breakout South ",Symbol()," ",DoubleToStr(sep, Digits));}
      timeloc=TimeCurrent()+Time_Out;   //how many seconds do we lock out the Alert
     }
   }
   else
   {
   if (Close[0] >= bep  &&  TimeCurrent() > timeloc  && Alert_on == true  && iCtr == 0 && TimeCurrent() >= dtTimeEnd &&  TimeCurrent() <= dtTimeObjEnd)
     {
      timeloc2=TimeCurrent()+4.5; //this is a smaller lock out just for displaying the breech message           
      timeloc= TimeCurrent();  //done just for a slight pause
      if (Pop_Up_Box==False)
        {
         PlaySound("Alert2.wav");
         for(double lasdfff =1;lasdfff <1900.0239 ;) lasdfff+=.91231; //a little pause
         while(TimeCurrent()<=timeloc) lasdfff=0; //another little pause
         PlaySound("Alert.wav");
        }
      else {Alert("Breakout North ", Symbol()," ",DoubleToStr(bep, Digits));}
      timeloc=TimeCurrent()+Time_Out;   //how many seconds do we lock out the Alert
     }
   if (Close[0] <= bep  &&  TimeCurrent()  > timeloc  && Alert_on ==true && iCtr == 0 && TimeCurrent() >= dtTimeEnd &&  TimeCurrent() <= dtTimeObjEnd)
     {
      timeloc2=TimeCurrent()+4.5;//this is a smaller lock out just for displaying the breech message
      timeloc =TimeCurrent();   //just for a slight, unofficial pause
      if (Pop_Up_Box==False)
        {
         PlaySound("Alert.wav");
         for(double lasdf =1;lasdf <1200.0239 ;) lasdf+=.91231; //a little pause
         while(TimeCurrent()<=timeloc) lasdf=0; //another little pause
         PlaySound("Alert2.wav");
        }
      else {Alert("Breakout South ",Symbol()," ",DoubleToStr(sep, Digits));}
      timeloc=TimeCurrent()+Time_Out;   //how many seconds do we lock out the Alert
     }
   }

   if(iForm==1)
   {

      ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0);
      ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeBegin);
      ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeEnd);
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor1);
      ObjectSet(sObjName, OBJPROP_WIDTH, 1);

      ObjectCreate(sObjName+"2", OBJ_RECTANGLE, 0, 0, 0, 0);
      ObjectSet(sObjName+"2", OBJPROP_TIME1 , dtTimeEnd);
      ObjectSet(sObjName+"2", OBJPROP_TIME2 , dtTimeObjEnd);  //dtTimeObjEnd
      ObjectSet(sObjName+"2", OBJPROP_PRICE1, dPriceHigh);  
      ObjectSet(sObjName+"2", OBJPROP_PRICE2, dPriceLow);
      ObjectSet(sObjName+"2", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName+"2", OBJPROP_COLOR, cObjColor2);
      ObjectSet(sObjName+"2", OBJPROP_BACK, 1);

      if(ObjectFind("sBoxRange") == -1) 
      {
         ObjectCreate ("sBoxRange",OBJ_LABEL, 0, 0, 0);
      }
      if (BlkBgd)
      {
         ObjectSetText("sBoxRange", "Box Range: "+ DoubleToStr(drange,Point) + " pips.", 10,"Georgia", Yellow);
      }
      else 
      {
         ObjectSetText("sBoxRange", "Box Range: "+ DoubleToStr(drange,Point) + " pips.", 10,"Georgia", Blue);
      }
      ObjectSet("sBoxRange", OBJPROP_CORNER, 1);
      ObjectSet("sBoxRange", OBJPROP_XDISTANCE, 5);
      ObjectSet("sBoxRange", OBJPROP_YDISTANCE, 20);

      if(ObjectFind("sPriceLabel") == -1)
      { 
         ObjectCreate ("sPriceLabel",OBJ_LABEL, 0, 0, 0);
         if (BlkBgd)
         {
            ObjectSetText("sPriceLabel", "PRICE", 10,"Arial Bold", Silver);
         }
         else 
         {
            ObjectSetText("sPriceLabel", "PRICE", 10,"Arial Bold", SlateGray);
         }
         ObjectSet("sPriceLabel", OBJPROP_CORNER, 0);
         ObjectSet("sPriceLabel", OBJPROP_XDIST

Показано первые 50% кода (символов: 36486)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
3 648,60₽ ≈ $44.60