Исполнение TakeProfit в лимитниках

 

МТ5. Брокер Открытие.


В тестере пишу советника.

Ставит лимитники с SL и TP.

Открываются четко по нужной цене. Так же и SL проходит по точной цене. (пока делал скриншот, обнаружил, что и SL бывает проскакивает)

А вот TP всегда меньше закрывается.

Есть у кого-нибудь идеи почему и как решить? (увеличение TP как-то не подходит)

//--- объявление и инициализация запроса и результата
         MqlTradeRequest request={0};
         MqlTradeResult  result={0};
         request.action=TRADE_ACTION_PENDING;                     // тип торговой операции
         request.symbol=_Symbol;                              // символ
         request.volume=1;                                   // объем 
         request.type=signal;                        // тип ордера
         request.type_time=ORDER_TIME_DAY;
         request.type_filling=ORDER_FILLING_FOK;
         request.expiration=0;
         request.sl = dSL;
         request.tp = dTP;
         request.price=lNeedOpeningPrice; // цена для открытия
         request.deviation=0;                                    // допустимое отклонение от цены
         request.magic=ExpertMagic;                          // MagicNumber ордера

         if(signal==ORDER_TYPE_BUY_LIMIT)
           {
            //ExtTrade.BuyLimit(1,lNeedOpeningPrice,_Symbol,dSL,dTP,ORDER_TIME_GTC);
            //ExtTrade.BuyStop(1,lNeedOpeningPrice,_Symbol,dSL,dTP,ORDER_TIME_GTC);            
            if(!OrderSend(request,result)) PrintFormat("OrderSend error %d",GetLastError());
           }

С type_filling и deviation эксперементировал. Это последний вариант.


123

 

ТП это такой же рыночный приказ, как и СЛ.

Если хотите без проскальзывания, то ставьте вместо ТП лимитник. Но, тогда - без гарантии исполнения)

 
Dmitriy Skub:

ТП это такой же рыночный приказ, как и СЛ.

Если хотите без проскальзывания, то ставьте вместо ТП лимитник. Но, тогда - без гарантии исполнения)

ТП - это лимитный ордер. Исполнение не гарантирован пе текущей цене. только  лучше. 

 
Dmitiry Ananiev:

ТП - это лимитный ордер. Исполнение не гарантирован пе текущей цене. только  лучше. 

Прежде чем отвечать, прочитайте вопрос)) Не путайте форекс с биржей.
 
Тип исполнения Fill or kill предполагает закрытие всего лота по конкретной цене. Проскальзывание возможно только при Immediate or cancel. Теоретически при указании FOK сделка должна или закрываться по указанной цене, или не закрываться вовсе. То, что она закрывается по более низкому профиту, означает косяк дилера.
 
Sergey Vradiy:
Тип исполнения Fill or kill предполагает закрытие всего лота по конкретной цене. Проскальзывание возможно только при Immediate or cancel. Теоретически при указании FOK сделка должна или закрываться по указанной цене, или не закрываться вовсе. То, что она закрывается по более низкому профиту, означает косяк дилера.

Теоретически, возможно)

Практически, при достижении уровня ТП, сервер брокера посылает рыночный ордер, противоположный по направлению, который может проскользить как угодно.

 
Alexander Konovalov:

МТ5. Брокер Открытие.

В тестере пишу советника. Ставит лимитники с SL и TP.

Открываются четко по нужной цене. Так же и SL проходит по точной цене. (пока делал скриншот, обнаружил, что и SL бывает проскакивает)

А вот TP всегда меньше закрывается.

Есть у кого-нибудь идеи почему и как решить? (увеличение TP как-то не подходит)

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

Например для BUY ... if ( ( текущая цена BID ) > ( цена открытия позиции + ТП ) ==> ордер на закрытие;

Можете пробовать разные величины deviation , включая =0.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Dmitriy Skub:

Теоретически, возможно)

Практически, при достижении уровня ТП, сервер брокера посылает рыночный ордер, противоположный по направлению, который может проскользить как угодно.

Ордер может закрываться либо частями, когда и происходит проскальзывание, либо целиком по одной и той же цене. Но параметр FOK как раз и показывает, что допускается только протокол fill or kill:  исполнить или аннулировать, т.к. закрытие всего лота по конкретной цене. Если встречной заявки, способной перекрыть данный объём нет, сделка вовсе не закрывается.

 
Sergey Vradiy:

Ордер может закрываться либо частями, когда и происходит проскальзывание, либо целиком по одной и той же цене. Но параметр FOK как раз и показывает, что допускается только протокол fill or kill:  исполнить или аннулировать, т.к. закрытие всего лота по конкретной цене. Если встречной заявки, способной перекрыть данный объём нет, сделка вовсе не закрывается.

Теперь понятно)
Причина обращения: