Ошибки, баги, вопросы - страница 934

CTrade::OrderSend: buy stop 0.94 USDCHF at 0.93366 sl: 0.93016 tp: 0.94816 [invalid volume]

Почему при выставлении объема 0,94 лота по USDCHF выдало ошибку неправильный объем?

Это некорректный объем или денег нехватило на выставлении такого объема?

Konstantin83:
CTrade::OrderSend: buy stop 0.94 USDCHF at 0.93366 sl: 0.93016 tp: 0.94816 [invalid volume]

Почему при выставлении объема 0,94 лота по USDCHF выдало ошибку неправильный объем?

Это некорректный объем или денег нехватило на выставлении такого объема?

А какой шаг объема в настройках инструмента? 0.10 или 0.01 лота? Если 0.10, то все правильно - неверный объем
Renat:
А какой шаг объема в настройках инструмента? 0.10 или 0.01 лота? Если 0.10, то все правильно - неверный объем

демо сервер от метаквотов, у Вас 0,01 шаг.

лот проходит проверку



CSymbolInfo       Exp_Symbol_Info;              // symbol info object

...
double CBaseTrade::GetCorrectLot(double pLot)
 {
      double   dLot   = pLot;
      double   dLotMin   = Exp_Symbol_Info.LotsMin();
      double   dLotMax   = Exp_Symbol_Info.LotsMax();
      double   dLotStep  = Exp_Symbol_Info.LotsStep();
    
      dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
 
      if(dLot < dLotMin) dLot=dLotMin;
 
      if(dLot > dLotMax && dLotMax !=0) dLot=dLotMax;

 
  return(dLot);
 }

Распечатайте значение объема до 4-8 знака, пожалуйста.

Явная ошибка отсутствия округления до второго знака вот тут:

dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
Renat:

Распечатайте значение объема до 4-8 знака, пожалуйста.

Явная ошибка отсутствия округления до второго знака вот тут:

да но почему там не округления?

Допустим шаг лота 0,01

Входной лот 2,111

результат = 0,01 * NormalizeDouble(2.111/0.01)=0.01*NormalizeDouble(211.1)=0.01*211=2.11

или есть брокеры где шаг лота 0,25 там нельзя просто взять округлить результат до 2-го знака.

Допустим шаг лота 0,25

Входной лот 2,3

результат = 0,25 * NormalizeDouble(2.3/0.25)=0.25*NormalizeDouble(9.2)=0.25*9=2.25


В тестере проблем нет. Просто сегодня на демо пара раз вылезла эта ошибка.

Шаг объема из класа CSymbolInfo нормализованный?

Подскажите пжл !

Как  перекрасить  фон валютных пар в обзоре рынка

или  вообще убрать цвет

Заранее спс ! 

Konstantin83: результат = 0,01 * NormalizeDouble(2.111/0.01)=0.01*NormalizeDouble(211.1)=0.01*211=2.11
 Произведение двух double-чисел есть число ненормализованное.            0.01*NormalizeDouble(211.1)=0.01*211.***********=2.11*************
Konstantin83:

да но почему там не округления?

Потому что результат мат операций самых-самых нормализованных значений не есть нормализованное число.

Поэтому это и есть место ошибки.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
Yedelkin:
 Произведение двух double-чисел есть число ненормализованное.            0.01*NormalizeDouble(211.1)=0.01*211.***********=2.11*************
Renat:

Потому что результат мат операций самых-самых нормализованных значений не есть нормализованное число.

Поэтому это и есть место ошибки.

Спасибо.

Из справки:

Справочник MQL5 / Стандартная библиотека / Классы для создания панелей и диалогов / CWnd / StateFlagsSet

StateFlagsSet

Устанавливает флаги свойств элемента управления. ...

Каких свойств?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5