Кол-во значащих после запятой - страница 2

 

Понятно что минилот здесь не причём...
Он лишь как средство определения точности.

Впрочем я видел тока один ДЦ с шагом 0.01 но самый малый лот 0.1
Остальные, что используют 0.2, так и шагают по 0.2
0.4, 0.6, 0.8 и т.д...

Хотя ДэЦэв стока, что всех не посчитаешь. :)))

 
Registr:
kombat:

Кстати! попутно... что выгоднее\лучше
свич или if ?

switch работает с константами, if может работать с диапазонами...


Эт понятно...
Вопрос был в плане затраты "вычислислительных мощностей".
Сорри за оффтоп...

 
//+--------------------------------------------------------------------+
//| LotDigits() - возвращает количество цифр после запятой в корректно 
//| нормализованном размере лота
//+--------------------------------------------------------------------+
int LotDigits()
{
    int       digits = 0;
    double    tmp = MarketInfo( Symbol(), MODE_LOTSTEP );
 
    while ( NormalizeDouble( 1.0 - tmp, 4 ) > 0.0 )
    {
        tmp *= 10;
        digits ++;
    }
    return(digits);
}
 
double d=LOTSTEP; while(d<1) { d=d*10; l++; }
 
Cronex:
kombat:

Да, такое тоже может быть...
Есть ДЦ с минилотом напримр 0.2

А так-же и минилотом 10 ! ;) да-да, например центовые сервера...

Видимо выходом будет просто расширить список возможных вариантов,
правда что делать с мнилотом 10 ??? пока ничё в голову не лезет...

Кстати! попутно... что выгоднее\лучше
свич или if ?


Да вопрос не в мин лоте, с этим нет проблем. Вопрос в шаге изменения лота, а это значение не всегда равно мин лоту.

В голову точно ни черта не лезет.... выходные что ли влияют :-)


Вычесть минимальный лот, оставшееся поделить на шаг лота, округлить (или оставить целую часть), умножить на шаг лота, прибавить минимальный лот. В результате получится нормализовнный для этого дц лот.
 
Integer:
Вычесть минимальный лот, оставшееся поделить на шаг лота, округлить (или оставить целую часть), умножить на шаг лота, прибавить минимальный лот. В результате получится нормализовнный для этого дц лот.
Спасибо за алгоритм, я подобный использую при вычислении части позиции в процентах при закрытии. Цель не получить нормализованный лот для торговли, а получение переменной типа Gigit для конкретных условий конкретного ДЦ.
 
Уже не раз писал формулу... Может в кодебейсе внести ? :)

nLotsDigits = MathCeil(MathAbs(MathLog( MarketInfo(Symbol(),MODE_MINLOT))/MathLog(10)));

Количество значащих цифр после запятой в размере позиции. В МаркетИнфо можно использовать и МИНЛОТСТЕП (или как там сейчас это называется ?) - результат равнозначен.

Успехов.
 
VladislavVG:
Уже не раз писал формулу... Может в кодебейсе внести ? :)

nLotsDigits = MathCeil(MathAbs(MathLog( MarketInfo(Symbol(),MODE_MINLOT))/MathLog(10)));

Количество значащих цифр после запятой в размере позиции. В МаркетИнфо можно использовать и МИНЛОТСТЕП (или как там сейчас это называется ?) - результат равнозначен.

Успехов.



Аааа вот спасибо, я же помню что есть способ, я такую же вещь писал лет десять назад для перевода цифр в слова. !!! Спасибо за помощь.
 
Cronex:
VladislavVG:


Аааа вот спасибо, я же помню что есть способ, я такую же вещь писал лет десять назад для перевода цифр в слова. !!! Спасибо за помощь.

Та нема за що... В смысле всегда пожалуйста.

Успехов.
 

Спасибо, спасибо... за готовый код.
Я с утреца ещё алгоритм увидел, а щас было сел привести всё это к виду,
а тут вона как... уже расписали... ещё раз всем большой сенкс...

В особенности компостеру... за очередной урок...;)))
теперь занят разбором чем и как строки его кода.
Логико-последовательные действия в общем...