Подсчет OrderProfit. - страница 3

 

Если вам нужно посчитать прибыль каждого ордера отдельно, на текущий момент времени, то используйте ОрдерПрофит ---> это понятно, но задача маленько другая.

если вам нужно посчитать прибыль в синтетической точке, тогда вместо ОрдерКлозеПрайс нужно подставить синтетическую цену закрытия. Нужно не забыть, что ордера закрываются по разным ценам Бид/Аск ---> в коде это реализовано в виде линий аск и бид

и при плавающем спреде нужно учесть и это ---> пока до этой точки дойдет, ну не знаю, надо подумать (это я все про индикатор свой).

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

На самом деле это уже коды продвинутого уровня. ---> эх, знать бы формулу еще

Я могу дать вам код моего индикатора, но разобраться в нем будет довольно сложно (код без комментариев) --->Дайте пожалуйста?

Изменил формулу, результат радует, остались только цифры с пятеркой на третьем знаке после запятой, которые при нормализации немножко сифонят, попробую исключить их расчета и проверить это дело на истории!


 
Просто внимательно прочитайте в доке метод округления для этого языка. и потом,это же доли цента...
 
FAQ:
Просто внимательно прочитайте в доке метод округления для этого языка.

Не понял в чем фишка?

Но если использовать отсечку по DoubleToStr, то тоже не выйдет.

 
fore-x:

Не понял в чем фишка?

Но если использовать отсечку по DoubleToStr, то тоже не выйдет.


будет то же самое, единственный выход перевести число в строку, убрать лишние символы сзади, и перевести обратно в число

так
double in  = 1.256;
string str = DoubleToStr(in,3);
str = StringSubstr(str,0,StringLen(str)-1);
in  = StrToDouble(str);
или так
in = StrToDouble(StringSubstr(DoubleToStr(in,3),0,StringLen(DoubleToStr(in,3))-1));

 
хотя можно еще умножить на 100, отсечь дробную часть, и разделить на 100
 
FAQ:


будет то же самое, единственный выход перевести число в строку, убрать лишние символы сзади, и перевести обратно в число

или так
in = StrToDouble(StringSubstr(DoubleToStr(in,3),0,StringLen(DoubleToStr(in,3))-1));

Не выйдет!


P.S спасибо за код!

 
выведите на печать все три значения до округления, после и реальное. Хочу посмотреть, я вроде решал эту проблему.
 
FAQ:
выведите на печать все три значения до округления, после и реальное. Хочу посмотреть, я вроде решал эту проблему.


Alert(profit,"   ",
            StrToDouble(StringSubstr(DoubleToStr(profit,3),0,StringLen(DoubleToStr(profit,3))-1)),"   ",
            NormalizeDouble(profit,2),"   ",
            DoubleToStr(profit,2),"   ",
            OrderProfit());
Ой, ладно, пойду спать - завтра на работу, спасибо за оказанную помощь.
 
FAQ:
выведите на печать все три значения до округления, после и реальное. Хочу посмотреть, я вроде решал эту проблему.
Я тоже решал, помоему делал через MathFloor и MathCeil, но там немножко другая проблема была, завтра погляжу.
Причина обращения: