StopLimit

 

Utilisez-vousStopLimit dans vos transactions réelles ?

Il est clair queStopLimit ne fonctionne pas de manière adéquate dans le testeur.

Est-il judicieux de l'utiliser dans le cadre de transactions réelles ? Quels sont les avantages et les inconvénients ?

 
Sergey Chalyshev:

Utilisez-vousStopLimit dans vos transactions réelles ?

Il est clair queStopLimit ne fonctionne pas correctement dans le testeur.

Est-il judicieux de l'utiliser dans le cadre de transactions réelles ? Quels sont les avantages et les inconvénients ?

Quel est le problème avec le testeur ?
 
Artyom Trishkin:
Quel est le problème avec le testeur ?

Apparemment, personne ne l'utilise,

l'ordre est ouvert à des prix inexistants :

sl

Un exemple simple à vérifier :

//+------------------------------------------------------------------+
//|                                               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
      );
  }
//+------------------------------------------------------------------+
 
Sergey Chalyshev:

Apparemment, personne ne l'utilise,

l'ordre est ouvert à des prix inexistants :

Un exemple simple à vérifier :

Un ordre BuyStopLimit fonctionne de cette façon :

  1. Un ordre BuyStop est placé au-dessus du prix (valeur du prix dans la structure de la demande de transaction = prix + distance de réglage de l'ordre stop).
  2. Lorsqu'un ordre BuyStop se déclenche, un ordre BuyLimit est placé en dessous du prix.
    (au prix stoplimit dans la structure de la demande de transaction qui devrait être correctement calculée : stoplimit = prix - distance de réglage de l'ordre stop)
  3. Lorsqu'un ordre d'achat limite se déclenche, une entrée sur le marché est effectuée au prix de l'ordre d'achat limite.

Exemple :


 
Artyom Trishkin:

Un ordre BuyStopLimit fonctionne de cette façon :

  1. Nous fixons un ordre BuyStop au-dessus du prix (valeur du prix dans la structure de la demande de transaction = prix + distance de fixation de l'ordre stop).
  2. Lorsque le BuyStop est déclenché, un ordre BuyLimit est placé sous le prix .
    (au prix stoplimit dans la structure de la demande de transaction qui devrait être correctement calculée : stoplimit = prix - distance de réglage de l'ordre stop)
  3. Lorsqu'un ordre d'achat limite se déclenche, une entrée sur le marché est effectuée au prix de l'ordre d'achat limite.

Exemple :


LorsqueBuyLimit est inférieur au prix, cela fonctionne bien dans le testeur.

Lorsquela BuyLimit est supérieure au prix, elle doit s'ouvrir au prix Ask. Sur l'échange, sur le réel, ça marche comme ça.

Cela n'a pas desens d'utiliser StopLimit pour fixerBuyLimit en dessous du prix.

 
Sergey Chalyshev:

LorsqueBuyLimit est inférieur au prix, cela fonctionne bien dans le testeur.

Lorsquela BuyLimit est supérieure au prix, il doit s'ouvrir au prix Ask. Sur l'échange, sur le réel, ça marche comme ça.

Utiliser une StopLimite pour mettre la BuyLimit en dessous du prix n'a aucun sens.

Champ

Description

action

Type d'opération commerciale. Lavaleur peut être une des valeurs de l'énumération ENUM_TRADE_REQUEST_ACTIONS.

magie

Identifiant du conseiller expert. Permet d'organiser le traitement analytique des commandes commerciales. Chaque conseiller expert peut afficher son propre identifiant unique lorsqu'il envoie une demande de transaction.

commander

Commander un billet. Requis pour la modification des ordres en cours

symbole

Nom du symbole pour lequel la commande est passée. Non nécessaire pour la modification des ordres et la fermeture des positions.

Volume

Volume demandé d'un marché en lots. La valeur réelle du volume lors de l'ouverture d'une position dépend du type d'ordre exéc uté.

prix

Il s'agit du prix auquel l'ordre doit être exécuté. Le prix n'est pas requispour les ordres de marché du type "Exécution sur le marché" ( SYMBOL_TRADE_EXECUTION_MARKET ) avec le typeTRADE_ACTION_DEAL

stoplimite

Prix auquel l'ordre Limit en attente sera placé une fois que le prix aura atteint la valeur du prix (cette condition est obligatoire). Jusqu'à ce moment, l'ordre en suspens n'est pas placé dans le système de négociation.

sl

Prix auquel un ordre Stop Loss sera déclenché lorsque le prix du titre évolue dans une direction défavorable.

tp

Prix auquel l'ordre Take Profit est déclenché par le mouvement du prix dans la direction favorable.

déviation

Écart maximal acceptable par rapport au prix demandé, exprimé en points.

type

Type de commande. La valeur peut être l'une des valeurs de l'énumération ENUM_ORDER_TYPE

type_filling

Type d'ordre à exécuter. Lavaleur peut être l'une des valeurs deENUM_ORDER_TYPE_FILLING.

type_temps

Type de commande_temps de remplissage. Lavaleur peut être une des valeurs deENUM_ORDER_TYPE_TIME

expiration

Heure d' expirationde l'ordre en attente (pour les ordres ORDER_TIME_SPECIFIED)

commentaire

Commentaire sur l'ordonnance

position

Ticket to position. Ce formulaire doit être rempli lorsqu'un poste est modifié et fermé afin de l'identifier clairement. Cela correspond généralement au ticket de l'ordre qui a entraîné l'ouverture de la position.

position_by

Un billet pour une contre-position. Utilisé lors de la fermeture d'une contre-position - ouverte pour le même instrument, mais dans la direction opposée.


J'espère que vous savez ce qu'est un ordre limite. Et un ordre stop aussi, j'espère que vous n'avez pas de doutes.

Et voici ce qui est dit ici sur le fonctionnement d'un ordre StopLimit: lorsque le cours atteint le niveau d'un ordre Stop (et qu'il est placé au-dessus du prix d'achat), ce n'est qu'à ce moment-là qu'un ordre Limit sera placé (et il est placé en dessous du prix d'achat).

 
Sergey Chalyshev:

LorsqueBuyLimit est inférieur au prix, cela fonctionne bien dans le testeur.

Lorsquela BuyLimit est supérieure au prix, il doit s'ouvrir au prix Ask.Sur l'échange, sur le réel, ça marche comme ça.

Utiliser StopLimit pour mettre la BuyLimit en dessous du prix n'a aucun sens.

Je suis désolé, comment mettre l'ordre BuyLimit au-dessus du prix ?

Il ne devrait pas être réglé du tout dans ce scénario.

Si vous utilisez une classe de trading SB, il y a une vérification des paramètres erronés, et dans une telle situation, un ordre en attente n'est pas placé, mais un ordre au marché est ouvert.

 
Artyom Trishkin:

Champ

Description

action

Type d'opération commerciale. Lavaleur peut être l'une des valeurs de l'énumération ENUM_TRADE_REQUEST_ACTIONS.

magie

Identifiant du conseiller expert. Permet d'organiser le traitement analytique des commandes commerciales. Chaque conseiller expert peut afficher son propre identifiant unique lorsqu'il envoie une demande de transaction.

commander

Commander un billet. Requis pour la modification des ordres en cours

symbole

Nom du symbole pour lequel la commande est passée. Non nécessaire pour la modification des ordres et la fermeture des positions.

Volume

Volume demandé d'un marché en lots. La valeur réelle du volume lors de l'ouverture d'une position dépend du type d'ordre exéc uté.

prix

Il s'agit du prix auquel l'ordre doit être exécuté. Le prix n'est pas requispour les ordres de marché du type "Exécution sur le marché" ( SYMBOL_TRADE_EXECUTION_MARKET ) avec le typeTRADE_ACTION_DEAL

stoplimite

Prix auquel l'ordre Limit en attente sera placé une fois que le prix aura atteint la valeur du prix (cette condition est obligatoire). Jusqu'à ce moment, l'ordre en suspens n'est pas placé dans le système de négociation.

sl

Prix auquel un ordre Stop Loss sera déclenché lorsque le prix du titre évolue dans une direction défavorable.

tp

Prix auquel l'ordre Take Profit est déclenché par le mouvement du prix dans la direction favorable.

déviation

Écart maximal acceptable par rapport au prix demandé, exprimé en points.

type

Type de commande. La valeur peut être l'une des valeurs de l'énumération ENUM_ORDER_TYPE

type_filling

Type d'ordre à exécuter. Lavaleur peut être l'une des valeurs deENUM_ORDER_TYPE_FILLING.

type_temps

Type de commande_temps de remplissage. Lavaleur peut être une des valeurs deENUM_ORDER_TYPE_TIME

expiration

Heure d' expirationde l'ordre en attente (pour les ordres ORDER_TIME_SPECIFIED)

commentaire

Commentaire sur l'ordonnance

position

Ticket to position. Ce formulaire doit être rempli lorsqu'un poste est modifié et fermé afin de l'identifier clairement. Cela correspond généralement au ticket de l'ordre qui a entraîné l'ouverture de la position.

position_by

Un billet pour une contre-position. Il est utilisé pour fermer une position avec une contre-position - ouverte pour le même instrument, mais dans la direction opposée.


J'espère que vous savez ce qu'est un ordre limite. Et un ordre stop aussi, j'espère que vous n'avez pas de doutes.

Et voici ce qui est dit ici sur le fonctionnement d'un ordre StopLimit: lorsque le cours atteint le niveau de l'ordre Stop (et qu'il est placé au-dessus du prix d'achat), dans ce cas seulement, un ordre Limit sera placé (et il est placé en dessous du prix d'achat).

Qu'est-ce qui vous fait penser que l'ordre BuyLimit doit nécessairement être en dessous du prix ?

Je parle du marché boursier, le forex n'est pas intéressant.

 
Artyom Trishkin:

Je suis désolé, que faites-vous en plaçant l'ordre BuyLimit au-dessus du prix ?

Il ne devrait pas être réglé du tout dans cette situation.

Si vous utilisez la classe SB-trading, il y a une vérification des paramètres invalides et dans une telle situation, l'ordre en attente n'est pas ouvert, et la position est ouverte par un ordre au marché.

Je vous ai donné un exemple de code ci-dessus.

Il devrait être fixé et il l'est.

S'il était ouvert par le marché, il n'y aurait aucun problème dans le testeur ; il serait ouvert par le prix Ask. Mais il serait ouvert à un prix inexistant, vous pouvez le voir sur la photo ci-dessus.

p.s. Essayez vous-même le code ci-dessus dans un compte d'échange.
 
Un stoplimite "génial" dans la bibliothèque standard, pas de mots :))
la limite doit fixer le slippage d'un ordre au marché, pas la fixation d'un ordre à cours limité :))
 
Roman:
Le "génial" stoplimit de la bibliothèque standard, pas de mots :))
la limite doit définir le slippage de l'ordre au marché, et non le paramètre de l'ordre limite :))

Le slippage est fixé par le paramètre de déviation dans la demande de transaction.

Et le niveau stoplimite est le niveau auquel l'ordre limite est fixé par rapport au niveau de l'ordre stop.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...