Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1331

 
Aleksei Stepanenko:
Извините, встрял тут в разговор, не заметил...

Тема общая, а твои коды всегда интересные...

много взял себе на вооружение)

 
Iurii Tokman:
MakarFX:

.

 
Iurii Tokman:

українською технічне завдання розуміється краще

Я таким уровнем пока не обладаю, мой родной язык русский :)

...але на побутовому рівні розумію
 
Aleksei Stepanenko:

Я таким уровнем пока не обладаю, мой родной язык русский :)

Я из СССР...у меня два родных языка)
 
MakarFX:
Я из СССР...у меня два родных языка)
.
 
MakarFX:
Я из СССР...у меня два родных языка)

а у нас три, суржик еще

 
DanilaMactep:

С математикой у меня плоховасто- каким образом в коде высчитать растояние от открытия ордера до стопа, чтобы подставить вместо sl? вывод сделал вот так

Анормализовал значение лота вот так

Получается остаётся понять как в коде высчитать растояние от открытия до стопа?

Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.

  int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;

и это значение sl пойдёт в формулу.

Учитывая, что вы ставите стоп рассчитанный по индикатору ATR, то достаточно

double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
И это будет уже нормализованный размер лота.
 
MakarFX:

цена открытия покупок

цена стоплосса покупок

спред  

Понятней стало, осталось только понять в цену покупок и продаж присваиваю какое значение. по коду у меня открытие ордера идёт вот таким макаром.

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?

 
DanilaMactep:

Понятней стало, осталось только понять в цену покупок и продаж присваиваю какое значение. по коду у меня открытие ордера идёт вот таким макаром.

Тобишь переменным  цена открытия покупак присваиваю Ask,f переменной цена открытия продаж присваиваю Bid?

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

Судя по этой функции тебе стоплосс уже известен...не пойму в чем вопрос

 
Alexey Viktorov:

Абсолютную величину разницы цены открытия и цены стопа разделить на шаг цены.

и это значение 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; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ

Всё скомпилировалось без ошибок. А при запуске теста в журнале вылетает ошибка что происходит деление на ноль насколько я понимаю и тест прекращается. Где я тут накосячил-то или чего не сделал правильно?

ОШИБКА ПРИ СТАРТЕ ТЕСТИРОВАНИЯ

Причина обращения: