Stop-Auslöser im OnTradeTransaction-Backtest erkennen - Seite 4

 
angevoyageur:

Wir sprechen also nur über Backtesting. Ich habe mit meinem eigenen Code getestet und ich erhalte 3 Transaktionen, wenn ein Stop ausgelöst wird:

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)

Mit dem DEAL_ADD erhalte ich den Preis des Geschäfts, also in meinem Fall den SL. Alles scheint mir korrekt zu sein. Ich schlage vor, Sie schicken mir den von Ihnen verwendeten Code, das Backtest-Protokoll (als Datei) und einen Screenshot der Einstellungen des Strategietesters. Dann kann ich genau den gleichen Test wie Ihren durchführen und das Ergebnis analysieren. Sie können mir auch eine PM schicken, wenn Sie möchten.

Hallo,

können Sie mir sagen, wo genau der ausgeführte Stop- oder Zielkurs gespeichert wird:

a) MqlTradeTransaction

b) MqlTradeRequest

c) MqlTradeResult

zusammen mit dem Mitglied. Welcher MetaTrader-Server?

Dankeschön

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:

Wir sprechen also nur über Backtesting. Ich habe mit meinem eigenen Code getestet und ich erhalte 3 Transaktionen, wenn ein Stop ausgelöst wird:

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)

Mit dem DEAL_ADD erhalte ich den Preis des Geschäfts, in meinem Fall also den SL. Für mich scheint alles korrekt zu sein. Ich schlage vor, Sie schicken mir den von Ihnen verwendeten Code, das Backtest-Protokoll (als Datei) und einen Screenshot der Einstellungen des Strategietesters. Dann kann ich genau den gleichen Test wie Ihren durchführen und das Ergebnis analysieren. Sie können mir auch eine PM schicken, wenn Sie möchten.

Wenn Sie TRADE_TRANSACTION_DEAL_ADD und MqlTradeTransaction.price meinen, ist dieser Preis immer 0.

Auch wenn ich nicht nachTRADE_TRANSACTION_DEAL_ADD filtere, ist der Preis immer 0, nachdem die Entry Order gesendet wurde.

Ich verwende

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

und

CTrade.PositionModify // to attach stop and target

und

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

um Transaktionen aufzufangen.

 
chinaski:

Wenn Sie TRADE_TRANSACTION_DEAL_ADD und MqlTradeTransaction.price meinen, ist dieser Preis immer 0.

Auch wenn ich nicht nachTRADE_TRANSACTION_DEAL_ADD filtere, ist der Preis immer 0, nachdem die Entry Order gesendet wurde.

Ich verwende

und

und

um Transaktionen zu erfassen.

Dies ist mit MqlTradeTransaction.price, es ist nicht immer 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

Es ist etwas seltsam in Ihre Ergebnisse, aber ich kann nicht sehen, was mit dem Code, den Sie bereitstellen.

 

Hier das Protokoll mit Ihrem 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
 

Hallo Angevoyageur,

anbei finden Sie wieder einen einfachen EA. Dies sollte es demonstrieren. Er platziert einfach eine Order mit engem Stop und Target (Input-Parameter) und protokolliert jede Transaktion.

Ich bin dir für deine Hilfe sehr dankbar.

(Vielleicht können Sie auch Ihre Einstiegstransaktionen zeigen)

Könnten Sie mir auch die IP des mt-Servers geben?

Dateien:
tc_ea_trans.mq5  11 kb
 
chinaski:

Hallo Angevoyageur,

anbei finden Sie wieder einen einfachen EA. Dies sollte es demonstrieren. Er platziert einfach eine Order mit engem Stop und Target (Input-Parameter) und protokolliert jede Transaktion.

Ich bin dir für deine Hilfe sehr dankbar.

(Vielleicht können Sie auch Ihre Einstiegstransaktionen zeigen)

Könnten Sie mir auch die mt-server ip geben?

Ich verwende den EA, den Sie gerade gepostet haben. MQ demo, Zugangspunkt Europa. Backtesting mit :


Ich nehme einen zufälligen Auszug aus dem 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

Sie haben also immer noch ein Problem mit der Erkennung eines ausgelösten SL/TP?

Dateien:
 
angevoyageur:

Ich verwende den EA, den Sie gerade gepostet haben. MQ Demo, Zugangspunkt Europa. Backtesting mit :


Ich nehme einen zufälligen Auszug aus dem Log:

Sie haben also immer noch ein Problem mit der Erkennung eines ausgelösten SL/TP?

Oh. Ich verstehe. Ich konnte schwören, dass in meinen gestrigen Läufen kein solcher Preis angegeben war. Ich habe eine Textsuche für diesen Preis in der Backtest-Log.

Aber jetzt kann ich diese Transaktion NACH dem Log-Eintrag sehen

"Gewinnmitnahme ausgelöst"

auch in meinem letzten Lauf - zusammen mit dem Ausführungskurs.

Ich entschuldige mich für die lange Zeit, die es dauert.

 
chinaski:

Oh, ich verstehe. Ich konnte schwören, dass in meinen gestrigen Läufen kein solcher Preis angegeben war. Ich habe eine Textsuche nach diesem Preis im Backtest-Log gemacht.

Aber jetzt kann ich diese Transaktion NACH dem Log-Eintrag sehen

...
Das Protokoll, das ich Ihnen zur Verfügung gestellt habe, stammt aus dem Viewer. Wenn Sie das Protokoll direkt auf der Registerkarte Journal des Strategietesters lesen, wird es in umgekehrter Reihenfolgeangezeigt .
 
angevoyageur:
Das Protokoll, das ich Ihnen zur Verfügung gestellt habe, stammt aus dem Viewer. Wenn Sie das Protokoll direkt auf der Registerkarte Strategy Tester Journal lesen, wird es in umgekehrter Reihenfolgeangezeigt .
Ich öffne die Logdatei normalerweise über die Registerkarte " Backtest Log", wo die Reihenfolge von oben nach unten ist. Der Log-Eintrag, der den Preis angibt, wird also geschrieben, bevor die Transaktion stattfindet.
 

Hallo Angevoyageur,

"Zugangspunkt Europa. Backtesting mit :"

können Sie mir die vollständige IP dieses Servers geben?