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

 
angevoyageur:

Donc, nous parlons uniquement de backtesting. J'ai testé avec mon propre code et j'ai obtenu 3 transactions lorsqu'un stop est déclenché :

2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_HISTORY_ADD(3)

Avec le DEAL_ADD j'obtiens le prix de la transaction, donc le SL dans mon cas. Tout me semble correct. Je vous suggère de m'envoyer le code que vous utilisez, le journal du backtest (sous forme de fichier) et une capture d'écran des paramètres du testeur de stratégie. Je pourrai alors reproduire exactement le même test que le vôtre et analyser le résultat. Vous pouvez m'envoyer un MP si vous préférez.

Bonjour,

pouvez-vous me dire où est stocké exactement le stop ou le prix cible exécuté :

a) MqlTradeTransaction

b) MqlTradeRequest

c) MqlTradeResult

avec le membre. Quel serveur MetaTrader ?

Merci

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
angevoyageur:

Donc, nous parlons uniquement de backtesting. J'ai testé avec mon propre code et j'obtiens 3 transactions lorsqu'un stop est déclenché :

2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_HISTORY_ADD(3)

Avec le DEAL_ADD, j'obtiens le prix de la transaction, donc le SL dans mon cas. Tout me semble correct. Je vous suggère de m'envoyer le code que vous utilisez, le journal du backtest (sous forme de fichier) et une capture d'écran des paramètres du testeur de stratégie. Je pourrai alors reproduire exactement le même test que le vôtre et analyser le résultat. Vous pouvez m'envoyer un MP si vous préférez.

Si vous voulez dire TRADE_TRANSACTION_DEAL_ADD et MqlTradeTransaction.price, ce prix est toujours 0.

Même si je ne filtre pas pourTRADE_TRANSACTION_DEAL_ADD, le prix est toujours 0, après l'envoi de l'ordre d'entrée.

J'utilise

CTrade.Buy(...)  // place entry

et

CTrade.PositionModify // to attach stop and target

et

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
...
}

pour attraper les transactions.

 
chinaski:

Si vous voulez dire TRADE_TRANSACTION_DEAL_ADD et MqlTradeTransaction.price, ce prix est toujours 0.

Même si je ne filtre pas pourTRADE_TRANSACTION_DEAL_ADD, le prix est toujours 0, après l'envoi de l'ordre d'entrée.

J'utilise

et

et

pour attraper les transactions.

C'est avec MqlTradeTransaction.price, ce n'est pas toujours 0.

2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   stop loss triggered buy 0.10 EURUSD 1.30163 sl: 1.29663 tp: 1.30663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal #47  sell 0.10 EURUSD at 1.29663 done (based on order #47)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal performed [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   order performed sell 0.10 at 1.29663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   ----------------TRANSACTION START---------------------------
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Order #47   type : ORDER_TYPE_BUY(0)  state : ORDER_STATE_STARTED(0)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Deal #47  type : DEAL_TYPE_SELL(1)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Price = 1.29663 Volume = 0.1 SL = 0.0 TP = 0.0 Activation price = 0.0

Il y a quelque chose de bizarre dans vos résultats, mais je ne peux pas voir quoi avec le code que vous fournissez.

 

Voici le journal avec votre EA tc_ea_trans :

2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   take profit triggered buy 0.01 EURUSD 1.31553 sl: 1.31503 tp: 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #331  sell 0.01 EURUSD at 1.31603 done (based on order #331)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   price corrected from 1.31609 to 1.31604, deviation: 10 (instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559)(1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   instant sell 0.01 EURUSD at 1.31604 sl: 1.31659 tp: 1.31559 (1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #332  sell 0.01 EURUSD at 1.31604 done (based on order #332)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31604 [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559 [done at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_DEAL_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.31603 00 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 deal=331 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
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_ORDER_DELETE
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 prof
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_HISTORY_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.00 sl=0.0000000 tp=0.0000000 order=331 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profi
 

Bonjour Angevoyageur,

vous trouverez ci-joint un nouvel EA simple. Cela devrait le démontrer. Il place juste un ordre avec un stop et une cible serrés (paramètre d'entrée) et enregistre chaque transaction.

J'apprécie vraiment votre aide.

(Peut-être pouvez-vous aussi montrer vos transactions d'entrée)

Pourriez-vous également me donner l'adresse IP du serveur mt ?

Dossiers :
tc_ea_trans.mq5  11 kb
 
chinaski:

Bonjour Angevoyageur,

vous trouverez ci-joint un nouvel EA simple. Cela devrait le démontrer. Il place juste un ordre avec un stop et une cible serrés (paramètre d'entrée) et enregistre chaque transaction.

J'apprécie vraiment votre aide.

(Peut-être pouvez-vous aussi montrer vos transactions d'entrée)

Pourriez-vous également me donner l'adresse IP du serveur MT ?

J'utilise l'EA que vous venez de poster. MQ demo, point d'accès Europe. Backtesting avec :


Je prends un extrait aléatoire du log :

2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   take profit triggered buy 0.01 EURUSD 1.31751 sl: 1.31681 tp: 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #107  sell 0.01 EURUSD at 1.31821 done (based on order #107)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed sell 0.01 at 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   requote 1.31823 / 1.31836 / 1.31823 (instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766 [requote (1.31823/1.31836)]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 (1.31827 / 1.31840 / 1.31827)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #108  buy 0.01 EURUSD at 1.31840 done (based on order #108)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed buy 0.01 at 1.31840 [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 [done at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.31821 00 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
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 prof
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.00 sl=0.0000000 tp=0.0000000 order=107 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profi

Donc, vous avez toujours un problème pour détecter un SL/TP déclenché ?

Dossiers :
 
angevoyageur:

J'utilise l'EA que vous venez de poster. MQ demo, Access point Europe. Backtesting avec :


Je prends un extrait aléatoire du log :

Donc, vous avez toujours un problème pour détecter un SL/TP déclenché ?

Oh, je vois. J'ai pu jurer dans mes runs d'hier qu'il n'y avait pas de prix donné. J'ai fait une recherche de texte pour ce prix dans le journal de backtest.

Mais maintenant, je peux voir cette transaction APRÈS la saisie du journal.

"take profit triggered"

dans ma dernière exécution également - avec le prix d'exécution.

Je m'excuse pour le temps que cela prend.

 
chinaski:

Oh, je vois. J'ai pu jurer dans mes runs d'hier qu'il n'y avait pas de prix donné. J'ai fait une recherche de texte pour ce prix dans le journal du backtest.

Mais maintenant, je peux voir cette transaction APRÈS la saisie du journal.

...
Le journal que je vous ai fourni provient de la visionneuse, lorsque vous lisez le journal directement depuis l'onglet Journal du testeur de stratégie, il s'affiche dans l' ordre inverse.
 
angevoyageur:
Le journal que je vous ai fourni provient de la visionneuse. Lorsque vous lisez le journal directement depuis l'onglet Journal du testeur de stratégie, il s'affiche dans l' ordre inverse.
J'ouvre généralement le fichier journal à partir de l'onglet Journal du testeur de stratégie, où l'ordre est de haut en bas. Donc en fait, l'entrée du journal indiquant le prix est écrite avant que la transaction ne se produise.
 

Bonjour Angevoyageur,

"Point d'accès Europe. Backtesting avec :"

Pouvez-vous me donner l'IP complète de ce serveur ?

Raison: