- Struttura del Tipo Data
- Struttura dei parametri di Input
- Struttura Dati dello Storico
- Struttura del Depth of Market
- Struttura Richiesta di Trade
- Struttura di Risultati di Richiesta Controllo
- Struttura di un Risultato di Richiesta di Trade
- Struttura di una Transazione di Trade
- Struttura per i Prezzi Correnti
- Economic Сalendar structures
Struttura di una Transazione di Trade (MqlTradeTransaction)
Quando si eseguono alcune azioni precise su un trade account, il suo stato cambia. Tali azioni comprendono:
- Inviare una richiesta di trade da qualsiasi applicazione MQL5 nel terminale client utilizzando le funzioni OrderSend e OrderSendAsync e la sua ulteriore esecuzione;
- Inviare una richiesta di trade tramite l'interfaccia grafica del terminale e la sua esecuzione ulteriore;
- Attivazione di ordini pendenti ed ordini di stop sul server;
- Esecuzione di operazioni sul lato trade server.
Le operazioni commerciali di seguito vengono eseguite come risultato di queste azioni:
- gestione di una richiesta di trade;
- cambio di ordini aperti;
- cambio della cronistoria degli ordini;
- cambio della cronistoria degli affari;
- cambio delle posizioni.
Per esempio, quando si invia un ordine di acquisto di mercato, esso viene gestito, un ordine di acquisto appropriata viene creato per l'account, l'ordine quindi viene eseguito e rimosso dalla lista di quelli aperti, e poi viene aggiunto alla cronistoria ordini, un appropriato aff viene aggiunto alla cronistoria ed una nuova posizione viene creata. Tutte queste azioni sono transazioni di trade.
Lo Speciale handler OnTradeTransaction() viene fornito in MQL5 per ottenere transazioni di trade applicate ad un account. Il primo parametro dell'handler ottiene la struttura MqlTradeTransaction descrivendo transazioni di trade.
struct MqlTradeTransaction
|
Descrizione Campi
Campo |
Descrizione |
---|---|
deal |
Ticket affare. |
ordine |
Ticket dell' Ordine. |
symbol |
Il nome del simbolo di trade, per il quale viene eseguita l'operazione. |
type |
Tipo di transazione di trade. Il valore può essere uno dei valori dell'enumerazione ENUM_TRADE_TRANSACTION_TYPE. |
order_type |
Tipo ordine di trade. Il valore può essere uno dei valori dell'enumerazione ENUM_ORDER_TYPE. |
order_state |
Stato dell'ordine di trade . Il valore può essere uno dei valori dell'enumerazione ENUM_ORDER_STATE. |
deal_type |
Tipo di affare. Il valore può essere uno dei valori dell'enumerazione ENUM_DEAL_TYPE. |
time_type |
Tipo di ordine all'espirazione. Il valore può essere uno dei valori ENUM_ORDER_TYPE_TIME. |
time_expiration |
Termine di espirazione dell'ordine (per ordini dei tipi ORDER_TIME_SPECIFIED e ORDER_TIME_SPECIFIED_DAY). |
price |
Prezzo. A seconda del tipo di transazione di trade, può essere il prezzo di un ordine, un affare o una posizione. |
price_trigger |
Prezzo di stop(attivazione) dell'ordine di stop limit (ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT). |
price_sl |
Prezzo di Stop Loss. A seconda del tipo di transazione di trade, può riferirsi ad un ordine, un affare o una posizione. |
price_tp |
Prezzo Take Profit. A seconda del tipo di transazione di trade, può riferirsi ad un ordine, un affare o una posizione. |
volume |
Volume in lotti. A seconda del tipo di transazione di trade, potrebbe indicare il volume attuale di un ordine, di un affare o di una posizione. |
Il parametro essenziale per l'analisi della transazione ricevuta è il tipo specificato nel campo type. Ad esempio, se una transazione è di tipo TRADE_TRANSACTION_REQUEST (viene ricevuto il risultato dell' handling di una richiesta di trade dal server), la struttura ha solo un campo che viene riempito completamente - type. Altri campi non vengono analizzati. In questo caso, si possono analizzare due ulteriori richieste ed i parametri risultato presentati all'handler OnTradeTransaction(), come mostrato di seguito.
Avendo i dati su un tipo di operazione di trading, si può decidere l'analisi dello stato attuale di ordini, le posizioni e le offerte per un conto di trading. Ricordate che una richiesta di trade inviata al server dal terminale può generare generare diverse nuove operazioni. La priorità del loro arrivo presso il terminale non è garantita.
La struttura MqlTradeTransaction viene riempita in modi diversi a seconda del tipo di transazione di trade (ENUM_TRADE_TRANSACTION_TYPE):
TRADE_TRANSACTION_ORDER_* and TRADE_TRANSACTION_HISTORY_*
I seguenti campi nella struttura MqlTradeTransaction sono riempiti per le transazioni di trade relative alla gestione degli ordini aperti (TRADE_TRANSACTION_ORDER_ADD, TRADE_TRANSACTION_ORDER_UPDATE e TRADE_TRANSACTION_ORDER_DELETE) e la cronistoria degli ordini (TRADE_TRANSACTION_HISTORY_ADD, TRADE_TRANSACTION_HISTORY_UPDATE, TRADE_TRANSACTION_HISTORY_DELETE):
- order - ticket dell'ordine;
- symbol - nome simbolo dell'ordine;
- type - tipo di transazione di trade;
- order_type - tipo di ordine;
- orders_state - corrente stato dell'ordine;
- time_type - tipo di espirazione dell'ordine;
- time_expiration - orario di espirazione dell'ordine (per ordini aventi i tipi di espirazione ORDER_TIME_SPECIFIED e ORDER_TIME_SPECIFIED_DAY);
- price - order price specified by a client;
- price_trigger - prezzo di stop dell'ordine di stop limit (solo per ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT);
- price_sl - prezzo dell'ordine di Stop Loss (filled, se specificato nell'ordine);
- price_tp - prezzo dell'ordine di Take Profit (filled, se specificato nell'ordine);
- volume - corrente volume dell'ordine (unfilled). Il volume iniziale dell'ordine può essere trovato nella cronistoria degli ordini usando la funzione HistoryOrders *.
TRADE_TRANSACTION_DEAL_*
I seguenti campi nella struttura MqlTradeTransaction vengono riempiti per le transazioni di trade relative all' handling delgli affari (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE e TRADE_TRANSACTION_DEAL_DELETE):
- deal - ticket dell'affare;
- order - ticket dell'ordine, dove è stato eseguito l'affare su cui si basa;
- symbol - nome del simbolo dell'affare;
- type - tipo di transazione di trade;
- deal_type - tipo di affare;
- price - prezzo dell'affare;
- price_sl - prezzo di Stop Loss (filled, se specificato nell'ordine, dove è stato eseguito l'affare su cui si basa);
- price_tp - prezzo di Take Profit (filled, se specificato nell'ordine, dove è stato eseguito l'affare su cui si basa);
- volume - volume dell'affare in lotti.
TRADE_TRANSACTION_POSITION
I seguenti campi nella struttura MqlTradeTransaction sono riempiti per le transazioni di trade relative alla modifica delle posizioni non connesse all'esecuzione degli affari (TRADE_TRANSACTION_POSITION):
- symbol - nome di posizione del simbolo;
- type - tipo di transazione di trade;
- deal_type - tipo di posizione (DEAL_TYPE_BUY o DEAL_TYPE_SELL);
- prezzo - prezzo di apertura media ponderata della posizione;
- price_sl - prezzo di Stop Loss;
- price_tp - prezzo di Take Profit;
- volume - volume della posizione in lotti, se è stato cambiato.
Il ambio della posizione (aggiunta, cambio o chiusura), come risultato dell'esecuzione dell'affare, non porta al verificarsi della transazione TRADE_TRANSACTION_POSITION. |
TRADE_TRANSACTION_REQUEST
Solo un campo nella struttura MqlTradeTransaction è riempito per le transazioni di trade che descrivono il fatto che una richiesta di trade è stata elaborata dal server ed il risultato dell' elaborazione è stato ricevuto (TRADE_TRANSACTION_REQUEST):
- type - tipo di transazione di trade;
Solo il campo tipo (tipo di transazione di trade) deve essere analizzato per tali operazioni. Il secondo e terzo parametro della funzione OnTradeTransaction (richiesta e risultato) devono essere analizzati per ulteriori dati. |
Esempio:
input int MagicNumber=1234567; |
Vedi anche