Обобщенная формула вычисления уровня "безубытка"

 

В codebase имеются скрипты и индикаторы вычислений уровня "безубытка", но общей формулы нет,

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

Пусть в рынке имеем

Buy – количество открытых ордеров вверх

BuyPrice[i] - цена открытия i-ого ордера вверх, i=1,…buy

BuyLot[i] - Количество лотов i-ого ордера вверх, i=1,…buy

Sell – количество открытых ордеров вниз

SellPrice[i] - цена открытия i-ого ордера внизх, i=1,… Sell

SellLot[i] - Количество лотов i-ого ордера вниз, i=1,… Sell

Пусть далее

TicValue – значение одного пункта в валюте депозита,

Т.е., TicValue = MarketInfo(Symbol(),MODE_TICKVALUE)

Pointзначение одного пункта в валюте котировки,

Т.е., Point = MarketInfo(Symbol(),MODE_POINT)

Пусть далее

TargetPrice – цена, при достижение которой суммарный профит всех открытых

Ордеров в валюте депозита будет равен

TargetProfit

Очевидно, что можно составить такое вот уравнение

СУММА[i=1,…buy]( TargetPrice- BuyPrice[i] )* TicValue* BuyLot[i] / Point

+

СУММА[i=1,… Sell]( SellPrice [i] - TargetPrice)* TicValue* SellLot [i] / Point

= TargetProfit

Отсюда, после очевидных преобразований получим искомую формулу

Для вычислений TargetPrice

TargetPrice =(TargetProfit* Point + СУММА[i=1,…buy]( BuyPrice[i]* TicValue* BuyLot[i]) - СУММА[i=1,… Sell](SellPrice [i]*TicValue* SellLot [i] ) )/

(TicValue*( СУММА[i=1,…buy]( BuyLot[i]) - СУММА[i=1,… Sell]( SellLot [i]) )

В частном случае, для получения «безубытка» в данной формуле TargetProfit = 0.

 

Реализовано

P.S. Уровень безубытка в идеале должен учитывать свопы и комиссии. Но на практике важны такие харктеристики: нетто-цена открытия, нетто-баланс, нетто-эквити. В вышеприведенно реализации учитываются комиссии, но не учитываются нетто-свопы.
 
Всё оно вроде бы так. А где учёт накопленных свопов?
 

Вот ситуация в терминале, наверху данные скрипта NettoTrading,внизу жёлтая линия правильно вычисленный уровень безубытка.

Принцип отличный от того который приведён выше. Мой метод подсчитывает и накопившиеся свопы.

Надо изменить формулу она не правильная.

 
zhuki:

Вот ситуация в терминале, наверху данные скрипта NettoTrading,внизу жёлтая линия правильно вычисленный уровень безубытка.

Принцип отличный от того который приведён выше. Мой метод подсчитывает и накопившиеся свопы.

Надо изменить формулу она не правильная.


Копить не надо.
 
more:

Копить не надо.

Ну тогда и локировать не стоит. Все твердят лок это плохо.

В жизни разные ситуации бывают и к ним надо быть готовым с правильными инструментами.

 
zhuki:

Надо изменить формулу она не правильная.

Вы прочтите P.S., который много раньше вашего примера был написан.
 
hrenfx:
Вы прочтите P.S., который много раньше вашего примера был написан.

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

Одно не понятно в чём я не прав. Если считать уровень,то считать правильно. А не правильно вычисленный уровень (как в приведённом мною примере) никому не нужен. Он ведь ошибочный.

 

На практике автоматических ТС не понимаю необходимость в логике нахождения уровня безубыка, с учетом накладных расходов (спреды, комиссии и свопы).

Для АТС скорее важна цена открытия текущей нетто-позиции. Для ручной торговли, конечно, полноценный уровень безубытка, т.к. завязана логика еще и на психологических моментах.

 
hrenfx:

На практике автоматических ТС не понимаю необходимость в логике нахождения уровня безубыка, с учетом накладных расходов (спреды, комиссии и свопы).

Для АТС скорее важна цена открытия текущей нетто-позиции. Для ручной торговли, конечно, полноценный уровень безубытка, т.к. завязана логика еще и на психологических моментах.

Вам сложно,что либо объяснить,вы всё равно никого не хотите слышать. Завершим на этом.
 

При сочинение очередного Мартина оказалось, что спрэд играет существенную роль.

При учете спрэда получим такую вот формулу:

Пусть в рынке имеем

b – количество открытых ордеров вверх

BuyPrice[i] - цена открытия i-ого ордера вверх, i=1,…buy

BuyLot[i] - Количество лотов i-ого ордера вверх, i=1,…buy

s – количество открытых ордеров вниз

SellPrice[i] - цена открытия i-ого ордера внизх, i=1,… Sell

SellLot[i] - Количество лотов i-ого ордера вниз, i=1,… Sell

Пусть далее

TicValue – значение одного пункта в валюте депозита,

Т.е., TicValue = MarketInfo(Symbol(),MODE_TICKVALUE)

Pointзначение одного пункта в валюте котировки,

Т.е., Point = MarketInfo(Symbol(),MODE_POINT)

Spread – значение спрэда в пунктах,

Т.е., Spread = MarketInfo(Symbol(),MODE_SPREAD)

Пусть далее

TargetPrice – цена, при достижение которой суммарный профит всех открытых

Ордеров в валюте депозита будет равен

TargetProfit

Очевидно, что можно составить такое вот уравнение

С[i=1,…b]( TargetPrice- BuyPrice[i]- Spread*Point )* TicValue* BuyLot[i] / Point

+

С[i=1,… s]( SellPrice [i] - Spread*Point - TargetPrice)* TicValue* SellLot [i] / Point

= TargetProfit

С[i=1,…b]( TargetPrice- BuyPrice[i]- Spread*Point )* BuyLot[i]

+

С[i=1,… s]( SellPrice [i] - Spread*Point - TargetPrice)* SellLot [i]

= TargetProfit * Point/TicValue

С[i=1,…b]( TargetPrice* BuyLot[i] - BuyPrice[i] * BuyLot[i] - Spread*Point * BuyLot[i] )

+

С[i=1,… s]( SellPrice [i] * SellLot [i] - Spread*Point* SellLot [i] - TargetPrice* SellLot [i] )

= TargetProfit * Point/TicValue

TargetPrice*( С[i=1,…b] BuyLot[i] - С[i=1,…s] SellLot [i]) =

TargetProfit * Point/TicValue +

С[i=1,…b]( BuyPrice[i] * BuyLot[i] + Spread*Point * BuyLot[i] ) +

С[i=1,… s](- SellPrice [i] * SellLot [i] + Spread*Point* SellLot [i] )

TargetPrice =

{TargetProfit * Point/TicValue +

С[i=1,…b]( BuyPrice[i] * BuyLot[i] + Spread*Point * BuyLot[i] ) +

С[i=1,… s](- SellPrice [i] * SellLot [i] + Spread*Point* SellLot [i] )}/

( С[i=1,…b] BuyLot[i] - С[i=1,…s] SellLot [i])

В частном случае, для получения «безубытка» в данной формуле TargetProfit = 0.

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