Как получить усредненную цену позиции по двум (или более) лотам с разными ценами? - страница 2

 
Михаил:
NormalizeDouble( price_in / volume_in, _Digits )

Тут бы не округлять, а выводить всю точность.

Хотя, смотря для каких целей. 

 
Vitalii Ananev:

Можно и так.

Без MatchAbs(), можно просто минус заменить на плюс. :)  


Нельзя, нет никаких гарантий, что очередной ДЦ не заплюсует.
И, кстати, почему на этом форуме все юзеры называют ДЦ брокерами? Для меня брокер это банк, то есть кукла, определяющая котировки, а ДЦ просто работают от них . А то тут часто вижу фразы типа брокер телетрейд и тд.тд
 
Andrey Khatimlianskii:

Тут бы не округлять, а выводить всю точность.

Хотя, смотря для каких целей. 

Андрей!

Зачем цена, например: 10,826547 руб.?

10,83 руб. вполне достаточно :) 

 
Alexey Volchanskiy:
Нельзя, нет никаких гарантий, что очередной ДЦ не заплюсует.
И, кстати, почему на этом форуме все юзеры называют ДЦ брокерами? Для меня брокер это банк, то есть кукла, определяющая котировки, а ДЦ просто работают от них . А то тут часто вижу фразы типа брокер телетрейд и тд.тд

Разве бывает и такое, что, я обычно их так называю форекс брокер (а для краткости иногда просто брокер), делают комиссию плюсовой? Я не знал, не разу не сталкивался с таким, у меня все счета без комиссий.

 
Всем спасибо за интересные наработки. Я решил проблему через установку объекта типа OBJ_HLINE на уровень цены при открытии, соответственно решается проблема с переходами через ночь, когда меняется PRICE_OPEN при rollover. Затем при доливе, старая OBJ_HLINE удаляется, а новая цена безубытка с учетом долива высчитывается и ставится новый объект OBJ_HLINE. Такой вариант удобен, т.к. в своей стратегии я часто ссылаюсь на эту цену уровня безубытка для расчетов.
 
Alexey Volchanskiy:
Нельзя, нет никаких гарантий, что очередной ДЦ не заплюсует.
И, кстати, почему на этом форуме все юзеры называют ДЦ брокерами? Для меня брокер это банк, то есть кукла, определяющая котировки, а ДЦ просто работают от них . А то тут часто вижу фразы типа брокер телетрейд и тд.тд

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

 

Михаил:

Андрей!

Зачем цена, например: 10,826547 руб.?

10,83 руб. вполне достаточно :) 

Я же говорю - смотря для каких целей.

Точная цена нужна, например, чтоб точно рассчитать текущую прибыль

 
basler:
Всем спасибо за интересные наработки. Я решил проблему через установку объекта типа OBJ_HLINE на уровень цены при открытии, соответственно решается проблема с переходами через ночь, когда меняется PRICE_OPEN при rollover. Затем при доливе, старая OBJ_HLINE удаляется, а новая цена безубытка с учетом долива высчитывается и ставится новый объект OBJ_HLINE. Такой вариант удобен, т.к. в своей стратегии я часто ссылаюсь на эту цену уровня безубытка для расчетов.

Если советник для реала, советую на объекты не полагаться. При аварийном закрытии терминала они могут не сохраниться в текущий профиль.

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

 
basler:

Добрый день!

Прошу совета как можно получить необходимую усредненную цену. Известно, что по запросу ObjectGetDouble(0,"PRICE",OBJPROP_PRICE,0) мы получаем цену открытия позиции, не зависимо от перехода через ночь.

В случае с двумя (или более) лотами в одном направлении, но по разной цене (доливка), по запросу ObjectGetDouble(0,"PRICE",OBJPROP_PRICE,0) мы получаем цену открытия последнего лота, а не усредненную цену всей позиции.

Внимание вопрос:

Как получить усредненную цену позиции по двум (или более) лотам с разными ценами. Другими словами среднюю цену открытия позиции, при наличии нескольких лотов по разной цене. 

 

Заранее спасибо! 

Если вопрос о расчёте цены общего безубытка по всем открытым (разнонаправленным) позициям по одной паре, то:

((ЦБ1 * ЛБ1 + ЦБ2 * ЛБ2 + ... + ЦБi * ЛБi) - (ЦС1 * ЛС1 + ЦС2 * ЛС2 + ... + ЦСi * ЛБi)) / (ЛБ1 + ЛБ2 + ... + ЛБi) - (ЛС1 + ЛС2 + ... + ЛСi) , где ЦБi - цена открытия i-го длинного ордера, ЛБi - лот открытия i-го длинного ордера, ЦСi и ЛСi - соответственно i-го короткого ордера.

Важно помнить два момента:

1. При нахождении точки безубытка направления СЕЛЛ ниже точки безубытка направления БАЙ общий безубыток имеет место при любых ценах, т.к. это лок. Это соответствует делению на ноль в указанной формуле. Ставьте проверку перед расчётом общего безубытка.

2. Поскольку ордера по разным направлениям открываются по разным типам цен (BID и ASK), полученное значение цены является приблизительным (из-за колебаний спреда), но со вполне достаточной точностью годным для решения прикладных задач.