#(t_s_r)-daily range calculator 2.3.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «#(t_s_r)-daily range calculator 2.3.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот файл представляет собой пользовательский индикатор для MetaTrader 5, несмотря на то, что в исходнике встречаются устаревшие вызовы и имя файла с расширением mq5. По коду видно, что он предназначен для отображения в отдельном окне информации о дневных диапазонах цены. Индикатор рассчитывает текущий дневной диапазон, диапазоны за предыдущие дни и усреднённые значения за несколько периодов, а также разницу между текущим и средним диапазоном.
На основе этих данных индикатор вычисляет условные зоны «Room Up» и «Room Down» и ориентировочные уровни максимального стоп-лосса для длинных и коротких позиций с учётом заданного соотношения риска к прибыли. Все результаты выводятся в виде текстовых меток на графике, включая значения дневного максимума и минимума, а также текущее значение цены. Индикатор не совершает торговых операций и не управляет позициями.
Настройки позволяют задать соотношение риска к прибыли и три периода усреднения дневного диапазона. Язык реализации — MQL5, однако часть функций и свойств соответствует более старому стилю MQL4, что отражено в коде.
Настройки программы
| Настройка | Описание |
|---|---|
| Risk_to_Reward_ratio | Коэффициент соотношения риска к прибыли, применяемый при расчёте ориентировочных уровней максимального стоп-лосса для длинных и коротких позиций. Значение по умолчанию 3.0. |
| First_av | Количество предыдущих дней, используемых для расчёта первого усреднённого дневного диапазона. Значение по умолчанию 5. |
| Second_av | Количество предыдущих дней, используемых для расчёта второго усреднённого дневного диапазона. Значение по умолчанию 10. |
| Third_av | Количество предыдущих дней, используемых для расчёта третьего усреднённого дневного диапазона. Значение по умолчанию 20. |
Поиск по коду файла
#property indicator_separate_window
extern double Risk_to_Reward_ratio = 3.0;
extern int First_av = 5;
extern int Second_av = 10;
extern int Third_av = 20;
int nDigits;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int R1=0,R5=0,R10=0,R20=0,RAvg=0,Rtoday=0,Pointdiffernce=0;
int RoomUp=0,RoomDown=0,StopLoss_Long=0,StopLoss_Short=0;
double SL_Long=0,SL_Short=0;
double low0=0,high0=0;
string Text="";
int i=0;
Rtoday =(iHigh(NULL,PERIOD_D1,0)-iLow(NULL,PERIOD_D1,0))/Point;
R1 = (iHigh(NULL,PERIOD_D1,1)-iLow(NULL,PERIOD_D1,1))/Point;
for(i=1;i<=First_av;i++)
R5 = R5 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
for(i=1;i<=Second_av;i++)
R10 = R10 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
for(i=1;i<=Third_av;i++)
R20 = R20 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
R5 = R5/First_av;
R10 = R10/Second_av;
R20 = R20/Third_av;
RAvg = (R1+R5+R10+R20)/4; //RAvg = (R5+R10+R20)/3;new setting
Pointdiffernce = Rtoday - RAvg;
low0 = iLow(NULL,PERIOD_D1,0);
high0 = iHigh(NULL,PERIOD_D1,0);
RoomUp = RAvg - (Bid - low0)/Point;
RoomDown = RAvg - (high0 - Bid)/Point;
StopLoss_Long = RoomUp/Risk_to_Reward_ratio;
SL_Long = Bid - StopLoss_Long*Point;
StopLoss_Short = RoomDown/Risk_to_Reward_ratio;
SL_Short = Bid + StopLoss_Short*Point;
Text = "Range Difference: " + Pointdiffernce + "\n" +
"Today's Current Range: " + Rtoday + "\n" +
"Average Day Range: " + RAvg + "\n" +
"Prev 01 Day Range: " + R1 + "\n" +
"Prev 05 Days Range: " + R5 + "\n" +
"Prev 10 Days Range: " + R10 + "\n" +
"Prev 20 Days Range: " + R20 + "\n";
Text = Text +
"Room Up: " + RoomUp + "\n" +
"Room Down: " + RoomDown + "\n" +
"Maximum StopLosses :" + "\n" +
"Long: " + StopLoss_Long + " Pips at " + DoubleToStr(SL_Long,nDigits) + "\n" +
"Short: " + StopLoss_Short + " Pips at " + DoubleToStr(SL_Short,nDigits) + "\n" ;
string P=Period();
ObjectCreate("TSR", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR",StringSubstr(Symbol(),0),12, "Arial Bold", CadetBlue);
ObjectSet("TSR", OBJPROP_CORNER, 0);
ObjectSet("TSR", OBJPROP_XDISTANCE, 25);
ObjectSet("TSR", OBJPROP_YDISTANCE, 2);
ObjectCreate("TSR1", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR1",StringSubstr(P,0),12, "Arial Bold", CadetBlue);
ObjectSet("TSR1", OBJPROP_CORNER, 0);
ObjectSet("TSR1", OBJPROP_XDISTANCE, 100);
ObjectSet("TSR1", OBJPROP_YDISTANCE, 2);
ObjectCreate("TSR2", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR2","Average Daily Range:", 10, "Arial Bold", CadetBlue);
ObjectSet("TSR2", OBJPROP_CORNER, 0);
ObjectSet("TSR2", OBJPROP_XDISTANCE, 150);
ObjectSet("TSR2", OBJPROP_YDISTANCE, 2);
ObjectCreate("TSR3", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR3",DoubleToStr(RAvg ,0),12, "Arial Bold", Orange);
ObjectSet("TSR3", OBJPROP_CORNER, 0);
ObjectSet("TSR3", OBJPROP_XDISTANCE, 300);
ObjectSet("TSR3", OBJPROP_YDISTANCE, 2);
ObjectCreate("TSR4", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR4","Prev 1 Day Range:", 10, "Arial ", LightSteelBlue);
ObjectSet("TSR4", OBJPROP_CORNER, 0);
ObjectSet("TSR4", OBJPROP_XDISTANCE, 25);
ObjectSet("TSR4", OBJPROP_YDISTANCE, 20);
ObjectCreate("TSR5", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR5",DoubleToStr(R1,0),12, "Arial Bold", Orange);
ObjectSet("TSR5", OBJPROP_CORNER, 0);
ObjectSet("TSR5", OBJPROP_XDISTANCE, 170);
ObjectSet("TSR5", OBJPROP_YDISTANCE, 20);
ObjectCreate("TSR6", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR6","Prev "+First_av+" Days Range:", 10, "Arial ", LightSteelBlue);
ObjectSet("TSR6", OBJPROP_CORNER, 0);
ObjectSet("TSR6", OBJPROP_XDISTANCE, 25);
ObjectSet("TSR6", OBJPROP_YDISTANCE, 35);
ObjectCreate("TSR7", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR7",DoubleToStr(R5,0),12, "Arial Bold", Orange);
ObjectSet("TSR7", OBJPROP_CORNER, 0);
ObjectSet("TSR7", OBJPROP_XDISTANCE, 170);
ObjectSet("TSR7", OBJPROP_YDISTANCE, 35);
ObjectCreate("TSR8", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR8","Prev "+Second_av+" Days Range:", 10, "Arial ", LightSteelBlue);
ObjectSet("TSR8", OBJPROP_CORNER, 0);
ObjectSet("TSR8", OBJPROP_XDISTANCE, 220);
ObjectSet("TSR8", OBJPROP_YDISTANCE, 20);
ObjectCreate("TSR9", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR9",DoubleToStr(R10,0),12, "Arial Bold", Orange);
ObjectSet("TSR9", OBJPROP_CORNER, 0);
ObjectSet("TSR9", OBJPROP_XDISTANCE, 365);
ObjectSet("TSR9", OBJPROP_YDISTANCE, 20);
ObjectCreate("TSR10", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR10","Prev "+Third_av+" Days Range:", 10, "Arial ", LightSteelBlue);
ObjectSet("TSR10", OBJPROP_CORNER, 0);
ObjectSet("TSR10", OBJPROP_XDISTANCE, 220);
ObjectSet("TSR10", OBJPROP_YDISTANCE, 35);
ObjectCreate("TSR11", OBJ_LABEL, WindowFind("TSR"), 0, 0);
ObjectSetText("TSR11",DoubleToStr(R20,0),12, "Arial Bold", Orange);
ObjectSet("TSR11", OBJPROP_CORNER, 0);
ObjectSet("TSR11", OBJPROP_XDISTANCE, 365);
ObjectSeПоказано первые 50% кода (символов: 9760)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.