Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ecco le voci di log di una posizione chiusa da un Take Profit attivato. Come si può rilevare questo in OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)?
Non è impostato né il codice di ritorno di const MqlTradeResult& result (result.retcode) (0 non è un'opzione, TRADE_RETCODE_DONE = 10009) né uno degli id (Deal ticket, Order ticket, Request ID) per trovarli senza passare ogni volta attraverso tutte le transazioni.
Questa è la stampa alla riga #376 che stampa i flag rilevanti(?):
E questo è ciò che posso leggere nel diario:
10:04:40 take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 deal #3 buy 0.01 EURUSD at 1.00171 done (based on order #3)
10:04:40 deal performed [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 order performed buy 0.01 at 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 373 New trade operation dTime1970.01.01 09:03:41
10:04:40 376 0 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_DEAL_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_STARTED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 489 MqlTradeTransaction: TRADE_TRANSACTION_DEAL_ADD deal #3 DEAL_TYPE_BUY EURUSD 0.01 lot
10:04:40 376 1 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 383 1 prc:trans.price=1.00171 tckt: 2 res.Ord:0 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdFill: ORDER_STATE_FILLED Tr.OrdType: ORDER_TYPE_BUY Tr.tckt:3 2 0 Res::0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
10:04:40 376 2 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_HISTORY_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
2022.09.26 14:08:33.755 disconnected
Il terminale scrive così bene "take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]".
Allora perché diavolo non c'è un flag come TRADE_TRANSACTION_TRIGGERED_PT e TRADE_TRANSACTION_TRIGGERED_SL?
E il codice di ritorno della richiesta non è sempre impostato?
Denis, grazie per l'articolo! L'ho letto con interesse, ma non ho ancora realizzato appieno ciò che ho letto. Ho anche scaricato il tuo Expert Advisor TradeProcessor e l'ho eseguito sul mio terminale, dove attualmente ho una posizione aperta. Ho guardato i tabulati e mi sono subito apparse alcune domande alle quali voglio trovare risposta da solo. Se non sono in grado di farlo, dovrò disturbare voi. ))
Saluti, Vladimir.
Saluti, Vladimir.
Grazie per la sua opinione. Non c'è di che, MrBrooklin! ))
Grazie per la sua opinione. Non c'è di che, MrBrooklin! ))
Denis, scusa, ma senza il tuo aiuto la mia mente "esplode". Ecco il risultato di uno dei passaggi del tuo EA (tra l'altro, un EA molto bello!!!):
Quello che non capisco:
ENUM_DEAL_TYPE
Identificatore
Descrizione
DEAL_TYPE_BUY
Comprare
Domanda: in che modo quando si modifica un ordine pendente SELL_STOP il tipo di transazione viene determinato in BUY?????))
Saluti, Vladimir.
E non c'è alcuna transazione. L'inserimento di un ordine pendente e la sua elaborazione non comportano alcuna transazione. Trade ticket = 0, type = 0, dove 0 equivale a DEAL_TYPE_BUY per l'enumerazione ENUM_DEAL_TYPE. Cioè, nella struttura transMqlTradeTransaction , alcuni campi sono popolati e altri no. I campi non riempiti vengono solitamente annullati.
Maggiori dettagli: nella Documentazione sugli ordini pendenti.
Il campo deal sarà popolato per una transazione di questo tipo:
TRADE_TRANSACTION_DEAL_*
I seguenti campi sono popolati nella struttura MqlTradeTransaction per le transazioni commerciali relative all'elaborazione delle transazioni (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE e TRADE_TRANSACTION_DEAL_DELETE):
Solo 3 tipi di transazioni appartengono ai tipi "deal": TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE, TRADE_TRANSACTION_DEAL_DELETE.
E non c'è alcuna transazione. L'inserimento di un ordine pendente non comporta alcuna transazione. Trade ticket = 0, type = 0, dove 0 equivale a DEAL_TYPE_BUY per l'enumerazione ENUM_DEAL_TYPE. Cioè, nella struttura transMqlTradeTransaction , alcuni campi sono popolati e altri no. I campi non riempiti sono solitamente azzerati.
Maggiori dettagli: nella Documentazione sugli ordini pendenti.
Ahhhh, ecco!!! Cavolo, mi ha rotto le scatole! ))
Grazie!!!
Saluti, Vladimir.