durdurma limiti - sayfa 7

 
Sergey Chalyshev :

Anlaşılan kimse kullanmıyor

sipariş var olmayan fiyatlarla açılır:

kontrol etmek için basit bir örnek:

 //+------------------------------------------------------------------+
//|                                               StopLimit_Test.mq5 |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;

input int Deviation = 100 ;
//+------------------------------------------------------------------+
void OnTick ()
  {
   MqlTick tick;
   SymbolInfoTick ( _Symbol ,tick);
   trade.SetTypeFilling( ORDER_FILLING_RETURN );
   double ticksise= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE );

   if ( OrdersTotal ()== 0 )
      trade.OrderOpen(
         _Symbol ,                       // символ
         ORDER_TYPE_BUY_STOP_LIMIT ,     // тип ордера
         1.0 ,                           // объем ордера
         tick.ask+Deviation*ticksise,   // цена исполнения
         tick.ask+ 10 *ticksise,         // цена стоплимита
         0 ,                             // цена stop loss
         0                              // цена take profit
      );
  }
//+------------------------------------------------------------------+

Ama doğru mu? Önce stop limit fiyatı, ardından uygulama fiyatı gelir. Belgelere bakın:

 bool   OrderOpen(
   const string           symbol,           // символ
   ENUM_ORDER_TYPE        order_type,       // тип ордера
   double                 volume,           // объем ордера
   double                 limit_price,     // цена стоплимита
   double                 price,           // цена исполнения
   double                 sl,               // цена stop loss
   double                 tp,               // цена take profit
   ENUM_ORDER_TYPE_TIME   type_time,       // тип по истечению
   datetime               expiration,       // истечение
   const string           comment= ""        // комментарий
   )
 

Topikstarter kodu biraz değiştirildi.

 //+------------------------------------------------------------------+
//|                                               StopLimit_Test.mq5 |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;

input int Deviation = 5 ;
//+------------------------------------------------------------------+
void OnTick ()
  {
   MqlTick tick;
   SymbolInfoTick ( _Symbol ,tick);
   trade.SetTypeFilling( ORDER_FILLING_RETURN );
   double ticksise= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE );
   if ( OrdersTotal ()== 0 )
     {
       ENUM_ORDER_TYPE ord_type= ORDER_TYPE_BUY_STOP_LIMIT ;
       double ord_vol= 0.1 ;
       double ask_pr= NormalizeDouble (tick.ask, _Digits );
       double ord_pr= NormalizeDouble (tick.ask+Deviation*ticksise, _Digits );
       double limit_pr= NormalizeDouble (tick.ask+ 10 *ticksise, _Digits );
       string ord_comment= StringFormat ( "%0." + IntegerToString ( _Digits )+ "f;%0." +
                                       IntegerToString ( _Digits )+ "f;%0." +
                                       IntegerToString ( _Digits )+ "f" ,ask_pr,limit_pr,ord_pr);
      trade.OrderOpen(
         _Symbol ,                     // символ
         ord_type,                     // тип ордера
         ord_vol,                     // объем ордера
         limit_pr,                     // цена стоплимита
         ord_pr,                       // цена исполнения
         0 .,                           // цена stop loss
         0 .,                           // цена take profit
         0 ,                           // тип по истечению
         0 ,                           // истечение
         ord_comment                   // комментарий
      );
     }
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction & trans,
                         const MqlTradeRequest & request,
                         const MqlTradeResult & result)
  {
   PrintFormat ( " %s" , EnumToString (trans.type));
//---
   /*if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
     {
      DebugBreak();
     }
   else
      if(trans.type==TRADE_TRANSACTION_ORDER_UPDATE)
        {
         ENUM_ORDER_TYPE curr_ord_type=trans.order_type;
         if(curr_ord_type!=ORDER_TYPE_BUY_STOP_LIMIT)
            DebugBreak();
        }*/
  }
//+------------------------------------------------------------------+

EURUSD forex enstrümanına bir örnek veriyorum.

Önemli: durdurma limiti fiyatı daha kötü ayarlanır. Bu hisse senedi uygulaması içindir.

Limit emri olarak etkinleştirilen ve açılan bir satın alma durdurma limiti yerleştirildi.




Ekran görüntüsü, fiyatların yorumlarda belirtildiğini gösteriyor. İlk fiyat (1.10258) emir verirken talep, ikincisi (1.10268) emrin limit kısmının aktivasyon fiyatı, üçüncüsü (1.10263) emrin stop kısmının aktivasyon fiyatıdır.

 

Mantık şu şekildedir: piyasa satış fiyatı 1.10263'e ulaşırsa emrin stop kısmı (idam fiyatı) aktif olur. Ve teoride, siparişin limit kısmı hemen çalışmalıdır, çünkü. kullanım fiyatı piyasa fiyatından (1.10268) daha kötü.

Günlüklere bakalım:

 2019.12 . 12 21 : 08 : 10.306 2019.12 . 02 00 : 00 : 11    buy stop limit 0.10 EURUSD at 1.10263 ( 1.10268 ) ( 1.10239 / 1.10258 )
2019.12 . 12 21 : 08 : 10.310 2019.12 . 02 00 : 00 : 11    CTrade:: OrderSend : buy stop limit 0.10 EURUSD at 1.10263 ( 1.10268 ) [done]
2019.12 . 12 21 : 08 : 10.310 2019.12 . 02 00 : 00 : 11     TRADE_TRANSACTION_ORDER_ADD
2019.12 . 12 21 : 08 : 10.310 2019.12 . 02 00 : 00 : 11     TRADE_TRANSACTION_REQUEST
2019.12 . 12 21 : 08 : 10.312 2019.12 . 02 00 : 02 : 15    order [ # 2 buy stop limit 0.10 EURUSD at 1.10263 ( 1.10268 )] triggered
2019.12 . 12 21 : 08 : 10.312 2019.12 . 02 00 : 02 : 15     TRADE_TRANSACTION_ORDER_UPDATE
2019.12 . 12 21 : 09 : 18.333 2019.12 . 02 00 : 02 : 15    order [ # 2 buy limit 0.10 EURUSD at 1.10268 ] triggered
2019.12 . 12 21 : 09 : 18.333 2019.12 . 02 00 : 02 : 15    deal # 2 buy 0.10 EURUSD at 1.10265 done (based on order # 2 )
2019.12 . 12 21 : 09 : 18.333 2019.12 . 02 00 : 02 : 15    deal performed [ # 2 buy 0.10 EURUSD at 1.10265 ]
2019.12 . 12 21 : 09 : 18.333 2019.12 . 02 00 : 02 : 15    order performed buy 0.10 at 1.10265 [ # 2 buy limit 0.10 EURUSD at 1.10268 ]

00:02:15 de görüyoruz _ _ sipariş bir limite dönüştü (durdurma kısmı tetiklendi). Ve hemen bir piyasa pozisyonuna dönüştü. Ve ilginç olan, logların ilk satırda (1.10239 / 1.10258) olduğu gibi alış-satış fiyatını vermemesidir. Ve uygunsuz. Evet, pozisyon 1.10265'te açık. 1.10263'te açılması bekleniyordu . Burada sanırım 2 pp'lik bir kayma oldu.

Kene tabanına bakalım. Evet, testler 2 Aralık 2019'dan beri gerçek keneler üzerinde yapılıyor.

Kenemizin (1.10265) olduğunu görüyoruz. Ekran görüntüsünde vurguladı. Ve 00:02: 15'ten itibaren üçüncü tik oldu . Önceki soru = 1.10271 ( 00 : 02 : 15.428 'den itibaren ) daha da yüksekti. Bizim kene ile aynı zamanda olmasına rağmen. Onlar. en iyi fiyata girdi. Sonuç: Beklendiği gibi, siparişin stop kısmı için 2 pp'lik bir kayma elde ettik .   

 
Denis Kirichenko :

Ama doğru mu? Önce stop limit fiyatı, ardından uygulama fiyatı gelir. Belgelere bakın:

Bu, özellikle durdurma limiti limite girdiğinde limitin hemen çalışması için yapılır. Tetiklendiğinde, durdurma limitini etkinleştiren (gerçekten de) değil, uygulamada belirtilen fiyata çok uzak bir yerde olduğu ortaya çıkıyor.

 
Denis Kirichenko :

Mantık şu şekildedir: piyasa satış fiyatı 1.10263'e ulaşırsa emrin stop kısmı (idam fiyatı) aktif olur. Ve teoride, siparişin limit kısmı hemen çalışmalıdır, çünkü. kullanım fiyatı piyasa fiyatından (1.10268) daha kötü.

123 fiyat var. BUY_STOP_LIMIT. Stop fiyatı 133. Limit fiyatı 111.

Fiyat durdurma işaretini geçmişse, limit etkinleştirilir. Fiyat 111'e dönerse, bir pozisyon açılacaktır .

Fiyat stopa ulaşmamış ve limite dönmüş ise pozisyon açılmayacaktır.

Değil mi?

 
Denis Kirichenko :

Stop limit emri, Test Cihazında ve Forex için kontrol edilebilir. "Execution" = Exchange olarak ayarlamanız yeterlidir.



Buy stop limitini şu şekilde kontrol ettim: Limit emrinin fiyatını aktivasyon fiyatından daha kötü ayarladım. Etkinleştirildiğinde, emir piyasada açıldı (fiyat sor). Yani Tester'daki işlevsellik çalışıyor gibi görünüyor.

Evet, borsa yürütme ile forex araçlarında düzgün çalışır.

Ve şimdi "Yerleştirme Yöntemi"=FORTS Vadeli İşlemlerini değiştirin ve bunun değişim enstrümanlarında nasıl çalıştığını göreceksiniz.

BSL_Forex FORTS

Bir takas enstrümanında Takas yöntemini = Forex'i ayarlarsanız, doğru şekilde çalışır, ancak marj doğru hesaplanmaz.

 
Sergey Chalyshev :

Canlı ticarette StopLimit kullanıyor musunuz?

StopLimit'in test cihazında yeterince çalışmadığı açıktır.

Gerçek ticarette kullanmak mantıklı mı? avantajları ve dezavantajları nelerdir?

Bu tür siparişleri kullanmak için hiçbir neden göremiyorum.

Bekleyen bir siparişi hemen vermek çok daha kolaydır, çünkü sipariş ömrünün herhangi bir dönemini belirtebilirsiniz.

MQ sunucusunda değil borsada olmak, bu siparişin içinde belirtilen fiyattan çalışması garanti edilir .

Ve sunucu "aksaklık" yapabilir

Neden: