StopLimit - page 6

 

Un squeeze de prix disponible après la pause, à l'ouverture de la séance du jour, le lendemain.
C'est une pression comme ça, à l'ouverture du marché.
La seule confusion est de savoir pourquoi l'exécution n'a pas été faite au prix de l'offre.
Je soupçonne que les cotes de la jauge de profondeur dans le testeur mentent ou que les cotes sont courbes.
La simulation par ticks réels a-t-elle été sélectionnée ?

Dans le trading réel, les 1 à 5 premières minutes de l'ouverture du marché sont généralement manquées.
Sinon, il y aura de tels resserrements, au premier prix disponible, et une volatilité avec un écart fou.
Pour cette raison, avant la fermeture du marché, par exemple à 23.40, retirez tous vos ordres stop-limit.
Et permettre de passer des ordres après 10.01 avec contrôle du spread.

Vous avez un ordre stoplimit qui a été émis hier et qui saute à l'ouverture du marché alors qu'il n'y a pas de liquidité.
Pourquoi avez-vous fixé la limite de 100 ticks ? Mettez une limite de 5 ticks pour l'entrée.


 
Dmitry Fedoseev:

C'est pourquoi vous tirez des conclusions étranges - par paresse. Je n'en ai pas besoin, vous en avez besoin pour comprendre ce qui se passe.

Le dernier prix sur le graphique était le 2 décembre à 23:48. Les journaux montrent l'exécution de l'ordre le 3 à 10 heures. Qu'est-ce que c'est ?

Encore une fois, je n'en ai pas besoin, j'ai tout compris depuis longtemps. Ne comprenez-vous vraiment pas ou faites-vous semblant ?

Legraphique du 2 décembre à 23:48 n'est pas le dernier prix, c'est la ligne de temps, c'est comme ça que le terminal fonctionne ))))))))))))


 
Sergey Chalyshev:

Encore une fois, je n'ai pas besoin de ça, j'ai tout compris depuis longtemps. Ne comprenez-vous vraiment pas ou faites-vous semblant ?

Sur legraphique du 2 décembre, à 23:48, ce n'est pas le dernier prix, c'est la chronologie, c'est ainsi que fonctionne le terminal )))))))))))).


Une expression très profonde : 23:48 n'est pas le prix.

Eh bien... Je m'en vais... Je vais essayer de ne plus m'immiscer dans vos sujets.

 
Dmitry Fedoseev:

Une expression très profonde : 23:48 n'est pas le prix.

Eh bien... Je m'en vais... Je vais essayer de ne plus m'immiscer dans vos fils.

Dimitri, ne vous éloignez pas trop et n'intervenez pas sur l'affaire ;))

Vous aidez parfois, et vous m'avez personnellement aidé à comprendre certains problèmes.

Voulez-vous que je vous donne un login et un mot de passe pour mon compte de trading ? A la condition de ne pas drainer beaucoup et de ne pas changer le mot de passe.

 
Sergey Chalyshev:

Dimitri, ne vous éloignez pas trop et n'intervenez pas sur l'affaire ;))

Vous aidez parfois, et vous m'avez personnellement aidé à comprendre certaines questions.

Voulez-vous que je vous donne le login et le mot de passe de mon compte de trading ? A la condition de ne pas drainer beaucoup et de ne pas changer le mot de passe.

Oui. J'essaierais aussi quelques commandes dans le testeur.

 
Dmitry Fedoseev:

Oui. J'essaierais aussi quelques commandes dans le testeur.

Je vous écrirai en personne

 
Sergey Chalyshev:

Apparemment, personne ne l'utilise,

l'ordre est ouvert à des prix inexistants :

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

Et c'est là que se situe le véritable problème : le prix et la limite de l'arrêt de production sont confondus. En fait, le paramètre limit_price est mélangé en premier, et ensuite le prix. Par conséquent, si vous définissez un buy-stop-limit, le prix doit être supérieur au limit_price. Mais dans le code de la citation au contraire, le premier déclenchement se produit au prix de clôture tick.ask+10*ticksise et le bylite apparaît quelque part là-haut (au-dessus du prix du marché) et il se déclenche immédiatement.

Mais dans le testeur, au début de la période de test, le prix baisse, alors j'ai vérifié avec un stoplimit, ce type de code fonctionne bien :

void OnTick()
  {

   static int x=0;
   
   if(x==1)return;
   
   x=1;
  

   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   trade.SetTypeFilling(ORDER_FILLING_RETURN);
   double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   if(OrdersTotal()==0){
      Comment(GetTickCount()," ",ticksise);
      trade.OrderOpen(
         _Symbol,                      // символ
         ORDER_TYPE_SELL_STOP_LIMIT,    // тип ордера
         1.0,                          // объем ордера
         tick.bid-100*ticksise,  // цена исполнения
         tick.bid-1000*ticksise,         // цена стоплимита
         0,                            // цена stop loss
         0                             // цена take profit
      );
   }

  }

après le premier déclenchement, la limite apparaît...

 
Dmitry Fedoseev:

Voici le problème réel : le prix et la limite du stoploom sont confond us. En fait, le paramètre limit_price est le premier et ensuite le prix. Par conséquent, si vous définissez un buy-stop-limit, le prix doit être supérieur au limit_price. Mais dans le code de la citation au contraire, le premier déclenchement se produit au prix de clôture tick.ask+10*ticksise et le bylite apparaît quelque part là-haut (au-dessus du prix du marché) et il se déclenche immédiatement.

Mais dans le testeur, au début de la période de test, le prix baisse, donc j'ai vérifié avec un stoplimit, ce type de code fonctionne bien :

après le premier déclenchement, la limite apparaît...

Rien n'est mélangé dans mon exemple, BuyLimit est fixé plus haut que Ask et il devrait être exécuté à Ask et non au prix qui est spécifié dans BuyLimit.

Relisez toute la branche, fatiguée pour expliquer.

Essayez de fixer la BuyLimit au-dessus de l'Ask sans la StopLimit.

Il suffit de remplacerORDER_TYPE_BUY_STOP_LIMIT parORDER_TYPE_BUY_LIMIT .

BuyLimit est déclenché de manière adéquate au prix Ask, et en cas de BuyStopLimit de manière inadéquate au prix spécifié dansBuyLimit.

 
Sergey Chalyshev:

Dans mon exemple, rien n'est mélangé, BuyLimit est placé au-dessus de Ask et il devrait être exécuté à Ask, pas au prix qui est spécifié dans BuyLimit.

Relisez toute la branche, fatiguée pour expliquer.

Essayez de fixer la BuyLimit au-dessus de l'Ask sans la StopLimit.

Il suffit de remplacerORDER_TYPE_BUY_STOP_LIMIT par ORDER_TYPE_BUY_LIMIT .

Le BuyLimit est déclenché de manière adéquate au prix Ask, tandis que dans le cas du BuyStopLimit, il est déclenché de manière inadéquate au prix spécifié dans leBuyLimit.

C'est clair maintenant.

 

Un ordre stop limite peut être vérifié dans le testeur pour le Forex également. Il suffit de définir "Exécution" = Échange.



J'ai vérifié la limite d'achat comme suit : j'ai fixé le prix de l'ordre limite plus bas que le prix d'activation. L'ordre s'est ouvert au prix du marché (prix demandé) lors de l'activation. Il semble donc que la fonctionnalité du testeur fonctionne.