Функция расчета лота от размера депозита. - страница 2

 
Alexey Viktorov:

х.з. Лично я таким не пользовался, но где-то уже встречал такое, вроде-бы есть, или было у какого-то ДЦ.

Хочу предложить универсальную формулу для нормализации лота

выше уже было написано про эту универсальность
 
Похожая формула, но что-то слишком замудрёная и я её не увидел.
 

Задачка такая интересная - как вычислить количество знаков после запятой. MathAbs(MathLog10(0.05)) равно 1, а надо бы 2. На практике можно и обойтись, но интересно.

 
В принципе да, задачка интересная, но в теме речь идёт о шаге размера лота на рынке форекс. На фондовом рынке, я не знаю, но что-то сомневаюсь что есть шаг отличный от кратности 10 в какой-либо степени. Хотя... х.з. (Хотел-бы Знать).
 
Dmitry Fedoseev:

Задачка такая интересная - как вычислить количество знаков после запятой. MathAbs(MathLog10(0.05)) равно 1, а надо бы 2. На практике можно и обойтись, но интересно.

int fnDgts(string smb)
   {
      double num=0;
      if (!SymbolInfoDouble(smb,SYMBOL_VOLUME_STEP,num)) return(-1);
      
      int cnt=0;      
      while(!IsStopped() && cnt<=8){
         if (NormalizeDouble(num*MathPow(10,cnt),0)==1) return(cnt);
         cnt++;
      }
      return(2);
   }
Для округления лотов всегда пользуюсь такой функцией. Она как раз и определяет количество знаков после запятой. В приницпе на вход вместо smb можно подать число, предварительно внеся минимальные коррективы.
Но по сравнению с делением и умножением на MinLot  она медленнее в 4 раза кажется (давно замерял)
 
Alexey Oreshkin:
Для округления лотов всегда пользуюсь такой функцией. Она как раз и определяет количество знаков после запятой. В приницпе на вход вместо smb можно подать число, предварительно внеся минимальные коррективы.
Но по сравнению с делением и умножением на MinLot  она медленнее в 4 раза кажется (давно замерял)
Эффект этой функции можно получить через логарифм. Если уж делать цикл, то сделать, чтобы работало с шагом не кратным 10. 
 
Dmitry Fedoseev:
Эффект этой функции можно получить через логарифм. Если уж делать цикл, то сделать, чтобы работало с шагом не кратным 10. 
а как количество знаков после запятой может быть не кратно степени 10 ? И опять же вопрос то был как определить количество знаков после запятой.....или мы говорим о разных вещах.
 
Alexey Oreshkin:
а как количество знаков после запятой может быть не кратно степени 10 ? И опять же вопрос то был как определить количество знаков после запятой.....или мы говорим о разных вещах.
Число по которому определяем количество знаков может быть 0.2, 0.3, 0.004, 0.008 и т.п.
 
Dmitry Fedoseev:
Эффект этой функции можно получить через логарифм. Если уж делать цикл, то сделать, чтобы работало с шагом не кратным 10. 
Да и эффект можно получить разными способами, можно число в строку перевести и посчитать количество букв после запятой :)
 
Dmitry Fedoseev:
Число по которому определяем количество знаков может быть 0.2, 0.3, 0.004, 0.008 и т.п.
ну и что. Мы говорим о разных вещах. Приведённая мною функция считает количество знаков после запятой, а не кратность одного числа другому.
Поэтому что 0.004 что 0.008 в ответ получим 3.