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

 
uncleVic:
Как-то так.

Огромное спасибо за помощь! Всё просто и красиво )

Изначально и пробовал Event map, но до конца не разобрался, посему и решил сам перегрузить OnEvent()...

P.S. Было бы неплохо, если бы или в кодах, поставляемых с терминалом, или в документации были приведены примеры использования карты событий (от ON_EVENT до ON_EXTERNAL_EVENT) - так будет гораздо проще разобраться. Ведь есть только примеры ON_EVENT - Experts/Examples/Controls/ControlsDialog.mq5 и Indicators/Examples/Panels/PanelDialog.mq5 - другого, по крайней мере я, не нашёл. Да и поиск по сайту за исключением нескольких слов в статье ничего не дал.

 
Rone:

Огромное спасибо за помощь! Всё просто и красиво )

Изначально и пробовал Event map, но до конца не разобрался, посему и решил сам перегрузить OnEvent()...

P.S. Было бы неплохо, если бы или в кодах, поставляемых с терминалом, или в документации были приведены примеры использования карты событий (от ON_EVENT до ON_EXTERNAL_EVENT) - так будет гораздо проще разобраться. Ведь есть только примеры ON_EVENT - Experts/Examples/Controls/ControlsDialog.mq5 и Indicators/Examples/Panels/PanelDialog.mq5 - другого, по крайней мере я, не нашёл. Да и поиск по сайту за исключением нескольких слов в статье ничего не дал.


1. Пожалуйста. Обращайтесь.

2. Добавим.

 
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
Причина обращения: