С математикой у меня плоховасто- каким образом в коде высчитать растояние от открытия ордера до стопа, чтобы подставить вместо sl? вывод сделал вот так
Анормализовал значение лота вот так
Получается остаётся понять как в коде высчитать растояние от открытия до стопа?
Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.
int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;
и это значение sl пойдёт в формулу.
Учитывая, что вы ставите стоп рассчитанный по индикатору ATR, то достаточно
double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
Понятней стало, осталось только понять в цену покупок и продаж присваиваю какое значение. по коду у меня открытие ордера идёт вот таким макаром.
OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕРOrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp ,"ДИВЕРГЕНЦИЯ НА СЕЛ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
Тобишь переменным цена открытия покупак присваиваю Ask,f переменной цена открытия продаж присваиваю Bid?
Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.
и это значение sl пойдёт в формулу.
Учитывая, что вы ставите стоп рассчитанный по индикатору ATR, то достаточно
И это будет уже нормализованный размер лота.
Сделал по коду так как советовали. Вначале по коду у меня идёт условие на выбор типа стопа - по атр или фиксированный
if(tip_sl==en_po_atr)
{ //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР//Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССАPrint("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
}
else//ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
{
Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
}
Далее свою нормализацию я закомментировал, а присвоил вот таким образом
sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;// ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ//sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ
Далее по коду у меня идёт вычисление профита- там проблем не было и после вычисления профита добавил страшную формулу которую советовали
double lot =MathFloor((Free*MaxRisk/100)/(sl/Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ
Всё скомпилировалось без ошибок. А при запуске теста в журнале вылетает ошибка что происходит деление на ноль насколько я понимаю и тест прекращается. Где я тут накосячил-то или чего не сделал правильно?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Извините, встрял тут в разговор, не заметил...
Тема общая, а твои коды всегда интересные...
много взял себе на вооружение)
українською технічне завдання розуміється краще
Я таким уровнем пока не обладаю, мой родной язык русский :)
...але на побутовому рівні розуміюЯ таким уровнем пока не обладаю, мой родной язык русский :)
Я из СССР...у меня два родных языка)
Я из СССР...у меня два родных языка)
а у нас три, суржик еще
С математикой у меня плоховасто- каким образом в коде высчитать растояние от открытия ордера до стопа, чтобы подставить вместо sl? вывод сделал вот так
Анормализовал значение лота вот такПолучается остаётся понять как в коде высчитать растояние от открытия до стопа?
Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.
и это значение sl пойдёт в формулу.
Учитывая, что вы ставите стоп рассчитанный по индикатору ATR, то достаточно
И это будет уже нормализованный размер лота.цена открытия покупок
цена стоплосса покупок
спред
Понятней стало, осталось только понять в цену покупок и продаж присваиваю какое значение. по коду у меня открытие ордера идёт вот таким макаром.
Тобишь переменным цена открытия покупак присваиваю Ask,f переменной цена открытия продаж присваиваю Bid?
Понятней стало, осталось только понять в цену покупок и продаж присваиваю какое значение. по коду у меня открытие ордера идёт вот таким макаром.
Тобишь переменным цена открытия покупак присваиваю Ask,f переменной цена открытия продаж присваиваю Bid?
Судя по этой функции тебе стоплосс уже известен...не пойму в чем вопрос
Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.
и это значение sl пойдёт в формулу.
Учитывая, что вы ставите стоп рассчитанный по индикатору ATR, то достаточно
И это будет уже нормализованный размер лота.Сделал по коду так как советовали. Вначале по коду у меня идёт условие на выбор типа стопа - по атр или фиксированный
Далее свою нормализацию я закомментировал, а присвоил вот таким образом
Далее по коду у меня идёт вычисление профита- там проблем не было и после вычисления профита добавил страшную формулу которую советовали
Всё скомпилировалось без ошибок. А при запуске теста в журнале вылетает ошибка что происходит деление на ноль насколько я понимаю и тест прекращается. Где я тут накосячил-то или чего не сделал правильно?