Не правильное возвращаемое значение SymbolInfoDouble

 

Функция возвращает не то значение. Как с этим бороться?

   double stts =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE) ;

результат  1

Так же было что _Point также возвращал подобное значение, но поменял терминал и проблема исчезла. Теперь неожиданно возникла эта, хотя сначала работала нормально.

 
А что не то в этом значении?
 
Dmitry Fedoseev #:
А что не то в этом значении?

При пересчете делении расчет из за этого не правильный как я понял. (может значение и правильное но формат видно не тот)

 double tickValue = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);

   double stts =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE) ;

 

  

( tickValue / stts * SymbolInfoDouble(sDirect, SYMBOL_BID));

Результат стоимости пункта   ы

цц ццц

 

По-моему, значение вполне правильное. 

А вот что расчитывается - я не соображу. Берется величина тика, делится на размер тика, и умножается на бид.  Для чего? Что получаем при этом? Стоимость пункта? Ну, вроде все посчитано правильно... 

 

Экспоненциальный формат отображает число в экспоненциальном виде, заменяя часть числа на E+n, в котором E (показатель экспоненты) умножает предыдущее число на 10 до n-йточки.

0.00001 = 1*10^-5 = 1е-5

100000 = 1*10^5 = 1e5

0.0000179999 = 1.8*10^-5 = 1.8е-5

Просто способ отображения длинных чисел.

 
Georgiy Merts #:

По-моему, значение вполне правильное. 

А вот что расчитывается - я не соображу. Берется величина тика, делится на размер тика, и умножается на бид.  Для чего? Что получаем при этом? Стоимость пункта? Ну, вроде все посчитано правильно... 

SYMBOL_TRADE_TICK_VALUE

Значение SYMBOL_TRADE_TICK_VALUE_PROFIT

double

SYMBOL_TRADE_TICK_VALUE_PROFIT

Рассчитанная стоимость тика для прибыльной позиции

double

Стоимость тика берется и делиться на минимальное изменение цены 

SYMBOL_TRADE_TICK_SIZE

Минимальное изменение цены

double

Получается вот такое значение Может ли тик во столько раз изменять цену. 

фф  (может я не то считаю мне нужно стоимость пункта или пипса  )

 

Я так понял, нужно в итоге это:

//лот = процент риска от баланса / (размер стоплосса * Размер минимального изменения цены в валюте депозита / Минимальный шаг изменения цены в пунктах)
lot=balance*max_risk/100/(stoploss*point*SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
 
Aleksei Stepanenko #:

Я так понял, нужно в итоге это:

Вставил Ваш код, понял что значение

SYMBOL_TRADE_TICK_VALUE

показывает так же . Мне нужно было просто цену пипса в валюте счета. Попробовал вот так  

double pips=(_Point*SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE));
 

пока показывает вроде правильно (буду смотреть дальше), видно лишние движения были в коде. 

Спасибо за подсказки.