Трейлинг-стопы и трейлинг-профит

 

Мне нужно использовать трейлинг-стопы и трейлинг-профит.

Мой план:

Для трейлинг-стопа:

*После достижения определенного предела прибыли, скажем 10 пунктов, стоп-лосс переместится на 5 пунктов. Теперь, если сделка вернется к 5 пунктам, то "две трети" сделки будут закрыты.

*Оставшаяся "одна треть" будет продолжать работать, и "трейлинг-стоп" для нее не будет применяться.

Для трейлинг-профита:

*Если сделка продвинется еще на 5 пунктов (т.е. 10+5=15 пунктов), то "одна треть" сделки будет закрыта, а оставшиеся "две трети" будут продолжать работать.

*А затем, скажем, после 10 пунктов больше, (т.е. 15+10=25 пунктов) "Половина" оставшейся сделки будет закрыта, а оставшаяся "половина" будет продолжать работать без ограничения тейк-профита.

Но я не уверен, что это можно сделать для "одиночной" сделки. Вот почему я думал немного по-другому.

---> Три разных сделки будут открыты "одинаковым" лотом в "одинаковое" время.

---> Две из них будут закрыты, если цена вернется к уровню трейлинг стоп лосс, а оставшаяся одна будет продолжать работать по трейлинг стоп части.

---> Первая сделка будет закрыта на "TP-1", вторая сделка будет закрыта на "TP-2", а последняя будет продолжать работать для части трейлинг-профита.

Но как отличить эти сделки? Можно использовать 'Order Ticket', но нет никакой гарантии, что все эти три сделки будут иметь последовательные серии Ticket, поскольку будут и другие сделки пары.

Это похоже на то, как если бы для одной сделки первоначальный Stop Loss не двигался.
 

Вы программист?

Вы учитесь программировать?

Вы заинтересованы в том, чтобы научиться программировать свои идеи?

Если ваш ответ "Нет", то, пожалуйста, попробуйте поискать в базе кода то, что вы ищете.

Arav007:

Мне нужно использовать трейлинг-стопы и трейлинг-профит.

Мой план:

Для трейлинг-стопа:

*После достижения определенного предела прибыли, скажем, 10 пунктов, стоп-лосс переместится на 5 пунктов. Теперь, если сделка вернется к 5 пунктам, то "две трети" сделки будут закрыты.

*Оставшаяся "одна треть" будет продолжать работать, и "трейлинг-стоп" для нее не будет применяться.

Для трейлинг-профита:

*Если сделка продвинется еще на 5 пунктов (т.е. 10+5=15 пунктов), то "одна треть" сделки будет закрыта, а оставшиеся "две трети" будут продолжать работать.

*А затем, скажем, после 10 пунктов больше, (т.е. 15+10=25 пунктов) "половина" оставшейся сделки будет закрыта, а оставшаяся "половина" будет продолжать работать без ограничения тейк-профита.

Но я не уверен, что это можно сделать для "одиночной" сделки. Вот почему я думал немного по-другому.

---> Три разных сделки будут открыты "одинаковым" лотом в "одинаковое" время.

---> Две из них будут закрыты, если цена вернется к уровню трейлинг стоп лосс, а оставшаяся одна будет продолжать работать по трейлинг стоп части.

---> Первая сделка будет закрыта по "TP-1", вторая - по "TP-2", а последняя - по трейлинг-профиту.

Но как отличить эти сделки? Можно использовать 'Order Ticket', но нет никакой гарантии, что все эти три сделки будут иметь последовательные серии Ticket, поскольку будут и другие сделки пары.

Это похоже на то, как если бы для одной сделки первоначальный Stop Loss не двигался.

 
ubzen:

Вы программист?

Вы учитесь программировать?

Вы заинтересованы в том, чтобы научиться программировать свои идеи?

Если ваш ответ "Нет", то, пожалуйста, попробуйте поискать в базе кода то, что вы ищете.



Я искал, а потом опубликовал это.

Здесь есть сообщения о "трейлинг-стопах", но я не смог найти "именно то", что мне нужно. Возможно, я пропустил его там. Если вы знаете ссылку, пожалуйста, дайте мне ее.

 
Arav007: Я искал, а потом разместил это. Есть сообщения о "трейлинг-стопах", но не смог найти "именно то", что мне нужно. Возможно, я пропустил его там. Так что если вы знаете ссылку, пожалуйста, дайте мне ее.
К сожалению, я тоже не могу найти для вас. Пожалуйста, будьте терпеливы, возможно, кто-то придет и напишет код для вас.
 
ubzen:
К сожалению, я не могу найти такой способ и для вас. Пожалуйста, будьте терпеливы, возможно, кто-то придет и напишет код для вас.


На самом деле мне не нужен весь код. Мне просто нужно знать, какая "логика" может быть реализована здесь с помощью какой"функции(й)"?

У меня в голове есть некоторые логические схемы, но мне нужен способ "различать" сделки по 1,2,3.

 
Arav007:


На самом деле мне не нужен весь код. Мне просто нужно знать, какая "логика" может быть реализована здесь с помощью какой "функции(й)"?

У меня в голове есть логика, но нужен способ "различать" сделки на 1,2,3.


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

Самый простой способ - открыть 3 сделки "по новому сигналу", а затем выполнить свой план.

 

Я думал примерно так:

Будет три торговли.

for(cnt=3;cnt>0;cnt--)

{

if (cnt==1)

{ 

 Disable Trailing Stop and Trailing Step

}

else

{

Enable Trailing Stop and Trailing Step

}

} 

//Trailing Profit:

for(cnt=3;cnt>0;cnt--)

{

if (cnt==3)

{ 

Set take profit=TP1

}

if (cnt==2)

{

Set take profit= TP2

} 

else

{

Disable Take Profit

}

}  

Это просто схема. На этом скелете будет плоть, если "логика" сработает.

 
Arav007:

Я думал примерно так:

Будет три торговли.

Это просто схема. На этом скелете будет плоть, если "логика" сработает.


нет вы получаете сигнал на открытие продажи или покупки

Теперь вы должны сделать логику, вы открываете 3 сделки

с одинаковым стоплоссом

1 с тейкпрофитом на вашем первом уровне

1 с тейкпрофитом на втором уровне

1 без уровня тейкпрофита

 
deVries:


нет, вы получаете сигнал на продажу или покупку

теперь вам нужно сделать логику вы открываете 3 сделки

с одинаковым стоплоссом

1 с тейкпрофитом на вашем первом уровне

1 с тейкпрофитом на вашем втором уровне

1 без уровня тейкпрофита


Значит, это должно быть что-то вроде этого?

double dTakeProfitPrice_1=10;

double dTakeProfitPrice_2=20;

double dTakeProfitPrice_3=0;

if (Buy Condition Met)

{

if(iOpenOrders_Buy < iMaxOrders)

{

if(iOpenOrders_Buy ==0) // there is no 'Open' Buy orders

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);

BuyOrder_2=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_2, "Buy Order",MagicNumber, 0,Blue);

BuyOrder_3=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_3, "Buy Order",MagicNumber, 0,Blue);

}

А что насчет стоп-лосса?

 
Arav007:


Значит, это должно быть что-то вроде этого?

А как насчет Stop Loss?


стоплосс вы изменяете для двух сделок, когда цена переместилась на > 10 пунктов выше orderopenprice

double dTakeProfitPrice_1=10;

double dTakeProfitPrice_2=20;

double dTakeProfitPrice_3=0;
double BuyOrder_1,.......,.......;
if (Buy Condition Met && iOpenOrders_Buy == 0)
{

iOpenOrders_Buy = 3;

{

if(iOpenOrders_Buy  > 0) // we have to open new Buy orders

{

if(iOpenOrders_Buy == 3)
         {
         BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);
         if(BuyOrder_1 > 0).......
         

         }
if(iOpenOrders_Buy == 2)
         {
         BuyOrder_2=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_2, "Buy Order",MagicNumber, 0,Blue);
....



if(iOpenOrders_Buy == 1)
         {
         BuyOrder_3=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_3, "Buy Order",MagicNumber, 0,Blue);
....
}
 
deVries:


стоплосс вы изменяете для двух сделок, когда цена переместилась на 10 пунктов выше orderopenprice


Извините, на самом деле я немного запутался.

if(iOpenOrders_Buy = 3)

Если общее количество открытых ордеров на покупку равно '3', то код переходит к следующей части.

if(iOpenOrders_Buy > 0 )

Если количество всего открытых ордеров на покупку больше '0', то код переходит к следующей части.

if(iOpenOrders_Buy == 3)

Тогда если количество открытых ордеров на покупку равно 3, то откроется BuyOrder_1, если равно '2', то откроется BuyOrder_2 и затем BuyOrder_3, если количество открытых ордеров на покупку равно 1.

Я прав?

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