breakoutboxesv2.06.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.