Statistiques sur le slippage des ordres à cours limité sur le marché boursier - page 5

 

Je n'ai pas créé de fil inutile car le sujet de discussion est lié au sujet. Toutefois, je tracerai une ligne rouge pour qu'il soit immédiatement clair qu'il n'est pas nécessaire de lire AVANT.

LA DISCUSSION JUSQU'À CE POINT N'A RIEN À VOIR AVEC CELLE QUI SUIT.

 
Une demande a été soumise au SD reproduisant un bogue - slippage dans le testeur d'un ordre limite sur actions.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.04.07 17:21

Conseiller expert pour le testeur (Metaquotes-Demo)
#include <MT4Orders.mqh>

// Скольжение лимитника на RTS-6.17
void OnTick()
{
  MqlTick Tick;    
  SymbolInfoTick(_Symbol, Tick);

// 2017.04.06 10:00:00                [time]   [bid]   [ask]  [last] [volume]    [time_msc] [flags]  
// 2017.04.06 10:00:00   2017.04.06 10:00:00  114200  114260  114200        2 1491472800335      56  
  if (Tick.time_msc == 1491472800335)
    OrderSend(_Symbol, OP_BUYLIMIT, 1, 114250, 0, 0, 0);
}

Résultat

2017.04.07 18:18:45.366 RTS-6.17 : real ticks begin from 2017.04.06 00:00:00
2017.04.07 18:18:45.778 2017.04.06 10:00:00   buy limit 1.00 RTS-6.17 at 114250 (114200 / 114260 / 114200)
2017.04.07 18:18:46.051 2017.04.06 10:00:00   order [#2  buy limit 1.00 RTS-6.17 at 114250] triggered
2017.04.07 18:18:46.051 2017.04.06 10:00:00   deal #2  buy 1.00 RTS-6.17 at 114240 done (based on order #2)
2017.04.07 18:18:46.051 2017.04.06 10:00:00   deal performed [#2  buy 1.00 RTS-6.17 at 114240]
2017.04.07 18:18:46.051 2017.04.06 10:00:00   order performed buy 1.00 at 114240 [#2  buy limit 1.00 RTS-6.17 at 114250]

Limite de glissement sur le symbole boursier - BAG !

Voici une conversation
Support Team 2017.04.10 18:04

fxsaber

La limite de glissement sur un symbole boursier est un BAG !

Sur quelle base ces conclusions sont-elles fondées ?

Supposons que le marché actuel soit de 114300 / 114280.

Vous définissez un ordre d'achat limite 114250. Quelqu'un sur le marché a décidé de vendre à un prix garanti et a fixé une limite de vente de 114200. En conséquence, il a rassemblé tous les ordres à cours limité d'achat dans la fourchette du marché à 114200.

C'est une situation tout à fait normale sur le marché boursier.

Équipe de soutien2017.04.11 09:58

fxsaber

  1. C'était à propos du testeur.
  2. Dans ce scénario, le slippage positif ne concerne que les personnes qui ont fixé une limite de vente inférieure à celle du marché. Et les limites d'achat correspondantes seront exécutées sans dérapage.

1. il est clair.

2. Que voulez-vous dire par "seulement" ? Pour ceux qui font du commerce sur la bourse, ce sera un désagrément, c'est le moins qu'on puisse dire. D'ailleurs, ils ont déjà été dissidents.

Équipe de soutien2017.04.11 11:00

fxsaber

Je suggère que cette discussion soit portée devant le public. Comme vous avez certaines connaissances et expériences, j'en ai d'autres. Leur corrélation avec les autres ne peut être vue qu'en public. Vous me soutenez ?

Dans ce cas, "s'adresser au public" ne servira à rien - il existe une réalité objective - le marché boursier fonctionne, il ne dépend pas de l'appel à la majorité. Cette décision n'a pas été prise pour rien, mais sur la base des demandes de ceux qui négocient effectivement sur la bourse.

Et comme pour le sous-marin, il ne devrait pas y avoir de glissement de limite dans le testeur. Je pense que vous serez d'accord avec moi sur ce point.
Je ne suis pas d'accord - voir les réponses précédentes.

Voici le discours.


Les développeurs affirment que si vous envoyez une limite de vente sur une bourse à un prix inférieur au prix actuel, les meilleures limites d'achat seront exécutées avec un slippage positif. Je ne suis pas d'accord avec ça.

Il n'est pas clair sur quelle logique les développeurs concluent que glisser des ordres limites (aussi bons que le marché) dans le TESTER est OK.


Il est évident qu'un point de vue est faux. Je vous serais reconnaissant de bien vouloir faire des commentaires constructifs sur ce sujet.

 

ici ? https://www.metatrader5.com/ru/terminal/help/general_concept#order_type

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

(для ордеров на покупку) и ниже цены Sell (для ордеров на продажу). При выставлении ордера с такой ценой он практически сразу срабатывает и превращается в рыночный. Однако в отличие от рыночных ордеров, где трейдер фактически соглашается на сделку по неуказанной текущей рыночной цене, лимитный ордер будет исполнен по цене не худшей, чем указанная.

c'est-à-dire que dans ce cas la limite de vente ne sera pas exécutée à un prix inférieur à114200, et collectera toute la limite d'achat au-dessus, mais elle se transforme en un ordre au marché, pourquoi cela affecte-t-il la limite d'achat ? c'est au meilleur prix pour la limite de vente, qui est dans la définition d'un ordre à cours limité (à un prix qui n'est pas inférieur à celui spécifié) auquel la limite de vente sera exécutée.

 
Voici la conversation
Support Team 2017.04.10 18:04

fxsaber

La limite de glissement sur le symbole boursier est BAG !

Sur quoi se fondent ces conclusions ?

Supposons que le marché actuel soit de 114300 / 114280.

Vous placez un ordre à cours limité pour acheter la limite 114250. Quelqu'un sur le marché a décidé de vendre à un prix garanti et a fixé une limite de vente de 114200. En conséquence, il a rassemblé tous les ordres à cours limité d'achat dans la fourchette du marché à 114200.

C'est une situation tout à fait normale sur le marché des changes.

Les ordres limités d'échange ne peuvent pas glisser dans le sens positif ou négatif. Il y a une erreur logique dans l'exemple ci-dessus. Le fait que la contrepartie ait fixé un ordre limite à 114200 (ce qui est pire que le marché) ne signifie pas que la limite d'achat sera exécutée à 114240 au lieu de 114250. Dans ce cas, la contrepartie recevra un meilleur prix de notre part à 114250 et descendra plus bas dans le carnet d'ordres, gagnant le volume requis et détériorant son prix moyen. Mais notre ordre sera exécuté sans slippage.
 
Vasiliy Sokolov:
Voici une conversation
Les ordres limités d'échange ne peuvent pas glisser en plus ou en moins. Il y a une erreur logique dans l'exemple ci-dessus. Ce n'est pas parce que la contrepartie place un ordre de vente à cours limité à 114200 (qui est inférieur au marché) que la limite d'achat pourra être exécutée à 114240 au lieu de 114250. Dans ce cas, la contrepartie recevra un meilleur prix de notre part à 114250 et descendra plus bas dans le carnet d'ordres, gagnant le volume requis et détériorant son prix moyen. Mais notre ordre sera exécuté sans slippage.
Je suis d'accord avec l'intervenant précédent. La seule chose avec laquelle je ne suis pas d'accord est "pas de glissement").
 
 
Vasiliy Sokolov:
Voici une conversation
Les ordres à cours limité ne peuvent pas glisser vers le haut ou vers le bas. Dans cet exemple, il y a une erreur logique. Le fait que la contrepartie ait placé un ordre de vente à cours limité à 114200 (ce qui est pire que le prix du marché) ne signifie pas que la limite d'achat sera exécutée à 114240 au lieu de 114250. Dans ce cas, la contrepartie recevra un meilleur prix de notre part à 114250 et descendra plus bas dans le carnet d'ordres, gagnant le volume requis et détériorant son prix moyen. Mais notre ordre sera exécuté sans slippage.

Je suis d'accord. J'ai sauté le pas avec cet exemple.

Considérons un cas comme celui-ci :

Voici un tel conseiller expert :

//+------------------------------------------------------------------+
//|                                               MarketBuyLimit.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>

int ExtLastHour=0;
int ExtOverMarket=1000;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime dt;
   TimeTradeServer(dt);
//---
   if(dt.hour!=ExtLastHour)
     {
      CTrade  trade;
      MqlTick tick;
      double  point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);
      //--- получим тик
      SymbolInfoTick(Symbol(),tick);
      //--- есть позиции?
      if(!PositionsTotal())
        {
         if(!trade.BuyLimit(1.0,tick.ask+ExtOverMarket*point,Symbol()))
           Print("BuyLimit setup failed");
        }
      else
        {
         if(!trade.SellLimit(1.0,tick.bid-ExtOverMarket*point,Symbol()))
           Print("BuyLimit setup failed");
        }
      ExtLastHour=dt.hour;
     }
  }

C'est-à-dire que nous ouvrons et fermons avec des ordres à cours limité 1000 pips mieux que le marché (prix supérieur à l'ask pour la limite d'achat, et prix inférieur à l'bid pour la limite de vente).

Voici à quoi ressemblera le graphique d'une transaction dans le cas d'une exécution sans slippage :

Et voici à quoi cela ressemblera lorsqu'il sera exécuté avec un glissement :


Essayons de réfléchir à la manière de combiner le fonctionnement correct des deux options.

 

Nous avons apporté les modifications nécessaires pour traiter correctement les deux cas d'ordres limités en mode échange - meilleur que le marché et pire que le marché.

Sera disponible après la mise à jour de MetaQuotes-Demo dans les prochains jours.

 
MQ Alexander:

Nous avons apporté les modifications nécessaires pour traiter correctement les deux cas d'ordres limités en mode échange - meilleur que le marché et pire que le marché.

Il sera disponible après la mise à jour de MetaQuotes-Demo dans les prochains jours.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

FORTS. Questions sur l'exécution

fxsaber, 2017.02.22 23:32

Il existe deux "types" de limiteurs - la cotation et l'exécution. Le prix coté est aussi bon que le prix actuel (et non égal). Les autres sont l'exécution.

Les limites indiquées doivent être exécutées dans le testeur exactement au prix indiqué.

Limites d'exécution - au prix du tick sur lequel il est fixé (SellLimit - Bid, BuyLimit - Ask), comme s'il ne s'agissait pas de limites, mais de marques.


Y aura-t-il cette logique ?

 
fxsaber:

Les limiteurs cotés doivent être exécutés dans le testeur exactement au prix indiqué.

Oui

Limites d'exécution - au prix du tick, sur lequel il est fixé (SellLimit - Bid, BuyLimit - Ask), comme s'il ne s'agissait pas de limites, mais de marchés.
Pour être plus précis, dans le cas d'un échange, les ordres à cours limité placés au meilleur prix du marché (le prix supérieur de l'Ask pour BuyLimit et le prix inférieur de l'Bid pour SellLimit) seront exécutés (activés) immédiatement après avoir été placés (sans attendre le prix suivant) au prix actuel du marché (Ask pour BuyLimit, Bid pour SellLimit).
Raison: