Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Name := Trailing Stop
Author := Copyright © 2002, MetaQuotes Software Corp.
Link := https://www.metaquotes.net/
Notes := Automatically trailing stops
Lots := 1
Stop Loss := 57
Take Profit := 0
Trailing Stop := 60
]]*/
vars : i(0),cnt(0);
//Defines:shag(0),level(0);
if TrailingStop<5 then { print("Invalid trailing stop"); Exit; };
/* Проверяем ранее открытые позиции.
Трейлинг стоп работает через модификацию Stop Loss. */
//---------------------удаление ордеров по границам каналов---------------------------------------------
for i=1 to TotalTrades
Begin
// удаляем ордера верхней границы канала, если открыта buy в нутрь канала
If Ord(i,VAL_TYPE)=OP_BUY and Ord(i,VAL_SYMBOL) = Symbol then
for cnt=1 to TotalTrades {
If OrderValue(cnt,VAL_TYPE)=OP_BUYSTOP or OrderValue(cnt,VAL_TYPE)=OP_SELLLIMIT then
DeleteOrder(OrderValue(cnt,VAL_TICKET),Yellow);
};
end;
for i=1 to TotalTrades
Begin
// удаляем ордера нижней границы канала, если открыта sell в нутрь канала
If Ord(i,VAL_TYPE)=OP_SELL and Ord(i,VAL_SYMBOL) = Symbol then
for cnt=1 to TotalTrades {
If OrderValue(cnt,VAL_TYPE)=OP_SELLSTOP or OrderValue(cnt,VAL_TYPE)=OP_BUYLIMIT then
DeleteOrder(OrderValue(cnt,VAL_TICKET),Yellow);
};
end;
//-----------------установка первоначального StopLoss---------------------------------------------------
for i=1 to TotalTrades
Begin
If Ord(i,VAL_TYPE)=OP_BUY /*and Ord(i,VAL_SYMBOL) = Symbol*/ then
{
if Ord(i,VAL_STOPLOSS)=0*Point then
// меняем стоплосс на уровень Low-StopLoss
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
low-StopLoss*Point,Ord(i,VAL_TAKEPROFIT),Red);exit;
};
end;
for i=1 to TotalTrades
Begin
If Ord(i,VAL_TYPE)=OP_SELL/* and Ord(i,VAL_SYMBOL) = Symbol*/ then
{
if Ord(i,VAL_STOPLOSS)=0*Point then
// меняем стоплосс на уровень Low-StopLoss
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
high+StopLoss*Point,Ord(i,VAL_TAKEPROFIT),Red);exit;
};
end;
//----------------------TrailingStop через StopLoss на уровне TrailingStop------------------------------
for i=1 to TotalTrades
Begin
//это длинная позиция?
If Ord(i,VAL_TYPE)=OP_BUY then // длинная позиция
{
// сначала проверим - есть ли профит у этой сделки больше чем
// уровень трейлинг стопа? проверяем Bid, так как позиция BUY
If (Bid-Ord(i,VAL_OPENPRICE))=(TrailingStop*Point) then
// меняем стоплосс на уровень Bid-10*Point
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
Bid-10*Point,Ord(i,VAL_TAKEPROFIT),Red);
};
end;
//---------------------------TrailingStop 10 через 20 пунктов-------------------------------------------
for i=1 to TotalTrades
begin
If Ord(i,VAL_TYPE)=OP_BUY and Ord(i,VAL_STOPLOSS)>0*Point then
{
if Ord(i,VAL_STOPLOSS)<Bid-20*Point then
{
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
Bid-10*Point,Ord(i,VAL_TAKEPROFIT),Green);exit;
};
};
end;
//----------------------TrailingStop через StopLoss на уровне TrailingStop------------------------------
/* это короткая позиция? */
If Ord(i,VAL_TYPE)=OP_SELL then
{
// сначала проверим - есть ли профит у этой сделки больше чем
// уровень трейлинг стопа? проверяем Ask, так как позиция SELL
If (Ord(i,VAL_OPENPRICE)-Ask)=(TrailingStop*Point) then
{
// меняем стоплосс на уровень Ask+10*Point
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
Ask+10*Point,Ord(i,VAL_TAKEPROFIT),Red);
};
};
//---------------------------TrailingStop 10 через 20 пунктов-------------------------------------------
for i=1 to TotalTrades
begin
If Ord(i,VAL_TYPE)=OP_SELL and Ord(i,VAL_STOPLOSS)>0*Point then
{
if Ord(i,VAL_STOPLOSS)>ask+20*Point then
{
ModifyOrder(Ord(i,VAL_TICKET),Ord(i,VAL_OPENPRICE),
Ask+(10*Point),Ord(i,VAL_TAKEPROFIT),Red);
};
};
end;
exit;