Объем сделки и NormalizeDouble(); - страница 3

 
Alexandr Bryzgalov:

если не сложно, приведите пример при каких параметрах так может случится

я не разбираюсь до  конца как это работает, но этот пример заставляет меня так думать

Print(76.671)=76.67100000000001
 
Pavel Kolchin:

вопрос был в первом посту, нужно или не обязательно приводить объем

На этот вопрос вам без меня давно ответили. А пост я ваш увидел о том, что вы не можете теперь любые вопросы свои туда кидать. Объяснил вам причину закрытия сервисдеск. Что не по теме вашего поста, который в цитате моего ответа?
 
SeriousRacoon:

(int )-MathLog(MarketInfo(NULL, MODE_LOTSTEP))

т.е. получаем не кол-во знаков у 0.10000000, а второй аргумент для NormalizeDouble.

это не работает если например шаг 0,25

 
Artyom Trishkin:
На этот вопрос вам без меня давно ответили. А пост я ваш увидел о том, что вы не можете теперь любые вопросы свои туда кидать. Объяснил вам причину закрытия сервисдеск. Что не по теме вашего поста, который в цитате моего ответа?

если все мне ответили правильно, и это обязательно, то почему все работает без приведения объема к шагу? любую цифру объема пиши и даже предупреждения не будет, в отличии от цены

 

Не надо так мучиться.

Напишите так:

double Lot(double lot)
{
  double MINLOT = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
  double STEP=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);

   int k= int (lot/STEP);
   if(k==0) return MINLOT;
   else
    return ( k*STEP);
}
 
Pavel Kolchin:

я не разбираюсь до  конца как это работает, но этот пример заставляет меня так думать

это совсем другая история

пример что привел выше работает на практике,

затыков не встречалось, 

потому и попросил параметры при которых не будет нормализации

 
Petros Shatakhtsyan:

Не надо так мучиться.

Напишите так:

Годно, лайк.
 
Pavel Kolchin:

если все мне ответили правильно, и это обязательно, то почему все работает без приведения объема к шагу? любую цифру объема пиши и даже предупреждения не будет, в отличии от цены

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
 

Вот в этой статье все есть. И как нормализовать объем, тоже. https://www.mql5.com/ru/articles/2555

//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Корректное значение объема";
   return(true);
  }
Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
 
да, я вижу, это более менее официальный ответ, в принципе тоже самое что предложил Alexandr Bryzgalov, думаю подойдет