Рассчет лота в зависимости от текущей просадки при фиксированном ТП

 
Я новичок в программировании помогите пожалуйста разобраться. Ситуация: советник открывает сделку BUY лотом 0.01 и тейкпрофитом 15 пкт по цене price, цена прошла не в моём направлении N пунктов, как посчитать размер лота чтобы открыть ещё одну сделку BUY с тем же ТП при достижении которого я бы компенсировал убытки первого ордера и вышел например в 0 или получил небольшую прибыль?
 

lot=lotstep*MathRound((MathAbs(loss)/(pips*tickvalue))/lotstep);

loss - убыток в валюте депозита

pips - пункты в минус

tickvalue - стоимость пункта

lotstep - шаг лота, допустимый в конкретном ДЦ

 

спасибо! 

 
evillive:

lot=lotstep*MathRound((MathAbs(loss)/(pips*tickvalue))/lotstep);

loss - убыток в валюте депозита

pips - пункты в минус

tickvalue - стоимость пункта

lotstep - шаг лота, допустимый в конкретном ДЦ

а разве в формуле не должно быть тейкпрофита?
 
cdover:
а разве в формуле не должно быть тейкпрофита?
ТП постоянный, сами говорили.
 
evillive:
ТП постоянный, сами говорили.
постоянны, задаётся в параметрах советника
 
evillive:

lot=lotstep*MathRound((MathAbs(loss)/(pips*tickvalue))/lotstep);

loss - убыток в валюте депозита

pips - пункты в минус

tickvalue - стоимость пункта

lotstep - шаг лота, допустимый в конкретном ДЦ

MathAbs(loss)/(pips*tickvalue) - это разве не единица? loss по идее ведь должен быть равен pips*tickvalue или я ошибаюсь?
 
cdover:
MathAbs(loss)/(pips*tickvalue) - это разве не единица? loss по идее ведь должен быть равен pips*tickvalue или я ошибаюсь?

Да, верно, извиняюсь перепутал. pips = ТП. Формула будет работать только при соотношении ТП/СЛ<1, иначе расчётный лот будет всегда равен начальному. 

Пример: пара EURUSD начальный лот 0.01, СЛ=100п, ТП=15п, продали по 1.1234, закрыли по 1.1334, убыток -100п или -10$ (для упрощения комиссия, проскальзывание и свопы не учтены).

lot=lotstep*MathRound((MathAbs(loss)/(pips*tickvalue))/lotstep)=0,01*MathRound(10/(15*10)/0,01)=0,01*7=0,07 - что даст 10,5$ при ТП=15п, опять же не учитывая подводные камни.

Если же ТП/СЛ>=1, то lot=0,01*MathRound(10/(150*10)/0,01)=0,01*MathRound(0,666666)=0,01


Это при условии, что на 1 убыточную сделку приходится 1 прибыльная. Но ведь так происходит вовсе не всегда.

Чаще всё хуже - 1 прибыль на несколько убытков. Тогда лот считать надо с учётом убытка всей серии, а не только от последней сделки. Вот тогда лот будет увеличен, чтобы компенсировать все потери.

Например, имеем 3 убытка по 50п (суммарно -15$), ТП=100.

lot=0,01*MathRound(15/(100*10)/0,01)=0,02 - что при срабатывании ТП даст 20$

 
evillive:

Да, верно, извиняюсь перепутал. pips = ТП. Формула будет работать только при соотношении ТП/СЛ<1, иначе расчётный лот будет всегда равен начальному. 

Пример: пара EURUSD начальный лот 0.01, СЛ=100п, ТП=15п, продали по 1.1234, закрыли по 1.1334, убыток -100п или -10$ (для упрощения комиссия, проскальзывание и свопы не учтены).

lot=lotstep*MathRound((MathAbs(loss)/(pips*tickvalue))/lotstep)=0,01*MathRound(10/(15*10)/0,01)=0,01*7=0,07 - что даст 10,5$ при ТП=15п, опять же не учитывая подводные камни.

Если же ТП/СЛ>=1, то lot=0,01*MathRound(10/(150*10)/0,01)=0,01*MathRound(0,666666)=0,01


Это при условии, что на 1 убыточную сделку приходится 1 прибыльная. Новедь так происходит вовсе не всегда.

Чаще всё хуже - 1 прибыль нанесколько убытков. Тогда лот считать надо с учётом убытка всей серии, ане только от последней сделки. Вот тогда лот будет увеличен, чтобы компенсировать все потери.

Например, имеем 3 убытка по 50п (суммарно -15$), ТП=100.

lot=0,01*MathRound(15/(100*10)/0,01)=0,02 - что при срабатывании ТП даст 20$

СЛ вообще нет. Открывается ордер в BUY ТП 15п, цена идёт вниз, не закрывая первый ордер, открывается второй в BUY ТП 15п, и так далее, лот в первой сделке 0.01, а вот во всех последующих уже нужно рассчитать так чтобы при достижении ТП в 15п последним открытым ордером прибыль бы компенсировала убыток по всем открытым ордерам BUY и все ордера в BUY закрываются.
 
cdover:
СЛ вообще нет. Открывается ордер в BUY ТП 15п, цена идёт вниз, не закрывая первый ордер, открывается второй в BUY ТП 15п, и так далее, лот в первой сделке 0.01, а вот во всех последующих уже нужно рассчитать так чтобы при достижении ТП в 15п последним открытым ордером прибыль бы компенсировала убыток по всем открытым ордерам BUY и все ордера в BUY закрываются.

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

Хотя нет, всё равно лучше ТП подставлять, а убыток считать со всей серии.

 
evillive:
А, ну тогда вместо pips нужно подставлять среднее расстояние между усреднениями, также в пипсах. А текущий убыток считать со всей серии.
у меня ордера эти открываются в среднем на расстоянии N друг от друга, этот параметр задаётся пользователем в пипсах, получается этот и есть pips? Текущий убыток считаю как сумма OrderProfit() по всем открытым ордерам BUY.
Причина обращения: