Détecter le déclenchement du stop dans le backtest OnTradeTransaction - page 2

 
chinaski:

Bonjour angevoyageur,

Je trouve ci-joint un EA simple qui démontre le problème. L'EA s'ouvre long avec stop et cible puis court, puis long et ainsi de suite.

Une méthode de dump est également contenue. Il suffit d'appliquer EUR.USD 1 minute 1 semaine et de regarder les dumps de transaction dans le journal de backtest.

Merci pour votre aide.

Ici votre stoploss est déclenché :

2013.05.03 16:52106EURUSDachetersur0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDvendreout0.011.310401070.000.00-2.009 976.84sl 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

 
angevoyageur:

Ici, votre stoploss est déclenché :

2013.05.03 16:52106EURUSDachetersur0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDvendreout0.011.310401070.000.00-2.009 976.84sl 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

Bonjour,

mais il s'agit d'uneentrée de type=IN , pas d'une sortie....

 
chinaski:

Bonjour,

mais il s'agit d'uneentrée de type=IN , et non d'une sortie.....

Peut-être, mais c'est votre sl déclenché néanmoins. Ne croyezjamaisreligieusement ce qu'un programme vous dit;-)
 
angevoyageur:
Peut-être, mais c'est néanmoins votre sl déclenché. Ne croyezjamaisreligieusement ce qu'un programme vous dit;-)

Vous avez raison, d'un autre côté, comment puis-je savoir que je peux compter sur le fait que sl=0.0 et tp=0.0 signifie qu'il s'agit d'un ordre stop ou cible et non : sl et tp simplement manqués (dans la structure de la transaction)... ?

 
chinaski:

Vous avez raison, d'un autre côté, comment puis-je savoir que je peux compter sur sl=0.0 et tp=0.0 signifie qu'il s'agit d'un ordre stop ou cible et non : sl et tp simplement manqués (dans la structure de la transaction)... ?

Une structure ne peut pas avoir de champ manquant. Il s'agit d'une transaction sur une transaction(DEAL_TYPE_SELL), une transaction ne peut pas avoir un SL/TP, cela n'a aucun sens. Un SL (ou TP) est un ordre (une sorte d'ordre spécial en attente), lorsqu'il est déclenché, l'ordre donne lieu à une transaction. Vous pouvez vérifier tout cela dans OnTradeTransaction.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
angevoyageur:

Une structure ne peut pas avoir de champ manquant. Il s'agit d'une transaction concernant une transaction(DEAL_TYPE_SELL), une transaction ne peut pas avoir de SL/TP, cela n'a aucun sens. Un SL (ou TP) est un ordre (une sorte d'ordre spécial en attente), lorsqu'il est déclenché, l'ordre donne lieu à une transaction. Vous pouvez vérifier tout cela dans OnTradeTransaction.

Je ne parle pas des membres de la structure, bien sûr, mais des valeurs.
 
chinaski:
Je ne parle pas des membres de la structure, bien sûr, mais des valeurs.
Alors? C'est un peu confus, puis-je encore aider ?
 
angevoyageur:
Alors? C'est un peu confus, puis-je encore aider ?

Oui, ça m'a aidé. Que voulez-vous dire par "confus" ? Je m'interrogeais sur le fait d'obtenir toujours ENTRY_IN. Vous avez dit de ne jamais croire ce que le programme me dit. Je dis que vous avez raison, donc sl=0.0 ou tp=0.0 (valeurs manquées) pourrait aussi être une erreur du serveur - il a oublié d'écrire les valeurs.

Ce qui est important pour moi, c'est une méthode de sauvegarde pour déterminer quelle transaction est en arrêt. MT est génial mais à bien des égards, il est déroutant et ne fait pas ce que l'on attend normalement, comme dans ce cas.

Vous comprenez ce que je veux dire ?

 
chinaski:

Oui, ça m'a aidé. Que voulez-vous dire par "confus" ? Je m'interrogeais sur le fait d'obtenir toujours ENTRY_IN. Vous avez dit de ne jamais croire ce que le programme me dit. Je dis que vous avez raison, donc sl=0.0 ou tp=0.0 (valeurs manquées) pourrait aussi être une erreur du serveur - il a oublié d'écrire les valeurs.

Ce qui est important pour moi, c'est une méthode de sauvegarde pour déterminer quelle transaction est en arrêt. MT est génial mais à bien des égards, il est déroutant et ne fait pas ce que l'on attend normalement, comme dans ce cas.

Vous comprenez ce que je veux dire ?

C'est moi qui suis confus;-) Je lis et réponds à de nombreux sujets. Je comprends ce que vous dites, il faut être capable de changer les habitudes avec MT4.
 
chinaski:

Oui, ça m'a aidé. Que voulez-vous dire par "confus" ? Je m'interrogeais sur le fait d'obtenir toujours ENTRY_IN. Vous avez dit de ne jamais croire ce que le programme me dit. Je dis que vous avez raison, donc sl=0.0 ou tp=0.0 (valeurs manquées) pourrait aussi être une erreur du serveur - il a oublié d'écrire les valeurs.

Ce qui est important pour moi, c'est une méthode de sauvegarde pour déterminer quelle est la transaction qui fait l'objet d'un arrêt. MT est génial mais à bien des égards, il est déroutant et ne fait pas ce que l'on attend normalement, comme dans ce cas.

Vous comprenez ce que je veux dire ?

J'ai vérifié. Quand un SL/TP est déclenché, vous avez ces transactions :

  1. TRADE_TRANSACTION_POSITION avec un SL et un TP définis (mais pas encore de transaction), puis
  2. TRADE_TRANSACTION_DEAL_ADD

TRADE_TRANSACTION_POSITION

Modification d'une position non liée à l'exécution d'une transaction. Ce type de transaction montre qu'une position a été modifiée du côté du serveur de transactions. Le volume de la position, le prix ouvert, les niveaux de Stop Loss et Take Profit peuvent être modifiés. Les données sur les changements sont soumises dans la structure MqlTradeTransaction via le gestionnaire OnTradeTransaction. Le changement de position (ajout, modification ou fermeture), à la suite de l'exécution d'une transaction, n'entraîne pas l'apparition de la transaction TRADE_TRANSACTION_POSITION.

Raison: