5 знаков в 4

 

Подскажите пожалуйста как технически и финансово грамотно транспонировать пяти значные котировки в 4 значные для работы робота. Спасибо

думаю вот так чтобы было 4 знака по аску (аналогично и по биду) NormalizeDouble(MathFloor(MathPow(10,Digits-1)*Ask)/MathPow(10,Digits-1),Digits-1) 

 
protr:

Подскажите пожалуйста как технически и финансово грамотно транспонировать пяти значные котировки в 4 значные для работы робота. Спасибо

думаю вот так чтобы было 4 знака по аску (аналогично и по биду) NormalizeDouble(MathFloor(MathPow(10,Digits-1)*Ask)/MathPow(10,Digits-1),Digits-1) 

Думаю достаточно будет NormalizeDouble(Ask,Digits()-1). 
 
Vitalii Ananev:
Думаю достаточно будет NormalizeDouble(Ask,Digits()-1). 

К сожалению округляет... до 1,0004

void OnTick()
  {
Print ("1.00038    ",NormalizeDouble(1.00038,4));


  }
 
Ну так правильно же. Округляет 5-значные котировки до четвёртого знака. А вам что нужно? Округлять всегда в меньшую сторону, что ли? Тогда ваш вариант правильный.
 

Парни, дело не только и не столько в округлении, сколько в том, как этот алгоритм может сказаться на кошельке трейдера. 

Все очень просто, но совсем не так...  

 

Да никак, можно округлять математически, вверх, вниз, с точки зрения рынка это не имеет никакого значения.

В одном случае, тот или иной метод округления вам может принести большую прибыль, а в другом больший убыток. 

 
Alexander Bereznyak:

Да никак, можно округлять математически, вверх, вниз, с точки зрения рынка это не имеет никакого значения.

В одном случае, тот или иной метод округления вам может принести большую прибыль, а в другом больший убыток. 

Вы прочли мою фразу, но не вдумались в ее смысл. Это почти цитата замечания очень умного человека. 

Вас вообще кто/что об округлении заговорить надоумил? Здесь тема об округлении, или о том, как бы не потерять последнее, установив 4-х значный Грааль на 5-ти значный терминал и при этом просто округлив котировки?  

 

Я прочел вашу фразу, вдумываться не во что, там нет смысла. В том то и дело, что почти, одно слово или один знак препинания и фраза уже не та.

Я в своем посте не переходил на личности, а вы перешли и начали хамить. А вас кто надоумил. Тот кто думает о потере последнего, последнее потеряет

и еще останется многократно должен. А тема вообще ни о чем. 

 
Alexander Bereznyak:

Я прочел вашу фразу, вдумываться не во что, там нет смысла. В том то и дело, что почти, одно слово или один знак препинания и фраза уже не та.

Я в своем посте не переходил на личности, а вы перешли и начали хамить. А вас кто надоумил. Тот кто думает о потере последнего, последнее потеряет

и еще останется многократно должен. А тема вообще ни о чем. 

Alexander Bereznyak
:

Я прочел вашу фразу, вдумываться не во что, там нет смысла. В том то и дело, что почти, одно слово или один знак препинания и фраза уже не та.

Я в своем посте не переходил на личности, а вы перешли и начали хамить. А вас кто надоумил. Тот кто думает о потере последнего, последнее потеряет

и еще останется многократно должен. А тема вообще ни о чем. 

Странно... хамить, вроде, не начинал. Извините, если что.  А насчет темы Вы не правы, имхенько. 
 
Алексей Тарабанов:
 

Вас вообще кто/что об округлении заговорить надоумил? Здесь тема об округлении, или о том, как бы не потерять последнее, установив 4-х значный Грааль на 5-ти значный терминал и при этом просто округлив котировки?  

А чем отличаются 4 или 5 значные котировки, кроме как округлением ?

Вам правильно сказали, как из одних котировок получить другие. Что не так ?

Ну а разговоры о том, что "при округлении будет потеряна большая часть депозита" говорит о том, что советник используют явно зашкаливающую нагрузку депозита, и слив - гарантирован в любом случае, даже вобще без округлений.

 
protr:

К сожалению округляет... до 1,0004

Тогда попробуйте Ask разделить на 0,0001 потом получившееся число преобразовать в целое число (так что бы отбросить последний знак после запятой) после чего результат умножить на 0,0001.

Например int Price =(int)Ask/(Digits()-1);

                 double PriceAsk = Price*(Digits()-1) 

 

1,12345 / 0,0001 = 11234,5 преобразуем в целое получается 11234 и умножаем на 0,0001 получаем 1,1234 

Причина обращения: