Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Sartakov
1287
Sergey Sartakov  

В 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.

hrenfx
3672
hrenfx  

Реализовано

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

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

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

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

Sergey Sartakov
1287
Sergey Sartakov  
zhuki:

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

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

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


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

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

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

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

hrenfx
3672
hrenfx  
zhuki:

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

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

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

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

hrenfx
3672
hrenfx  

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

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

igor
1144
igor  
hrenfx:

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

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

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

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

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

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

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.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий