- Proprietà del database della CroniStoria
- Proprietà Ordini
- Proprietà Posizione
- Proprietà Affari(Deal)
- Tipi di Operazioni di Trade
- Tipi di Transazioni di Trade
- Gli ordini di Trade nel DOM
- Proprietà dei Segnali
Proprietà Ordini
Le richieste per eseguire le operazioni di trade vengono formalizzate come ordini. Ogni ordine ha una serie di proprietà per la lettura. Le informazioni su di essi possono essere ottenute utilizzando le funzioni OrderGet...() e HistoryOrderGet...().
Per le funzioni OrderGetInteger() ed HistoryOrderGetInteger()
Identificatore |
Descrizione |
Tipo |
---|---|---|
ORDER_TICKET |
Ticket Ordine. Numero unico assegnato ad ogni ordine |
long |
ORDER_TIME_SETUP |
Setup dell'orario dell' Ordine |
datetime |
ORDER_TYPE |
Tipo di ordine |
|
ORDER_STATE |
Stato dell'ordine |
|
ORDER_TIME_EXPIRATION |
Orario di espirazione dell'ordine |
datetime |
ORDER_TIME_DONE |
Orario di esecuzione o eliminazione dell' Ordine |
datetime |
ORDER_TIME_SETUP_MSC |
L'orario di piazzamento dell'esecuzione di un ordine in millisecondi dal 01.01.1970 |
long |
ORDER_TIME_DONE_MSC |
Orario di esecuzione/eliminazione di ordini in millisecondi dal 01.01.1970 |
long |
ORDER_TYPE_FILLING |
Tipo di riempimento dell'ordine |
|
ORDER_TYPE_TIME |
Durata dell'ordine |
|
ORDER_MAGIC |
ID di un Expert Advisor che ha piazzato l'ordine (progettato per garantire che ogni Expert Advisor collochi il proprio numero unico) |
long |
ORDER_REASON |
La ragione o la fonte per l'invio di un ordine |
|
ORDER_POSITION_ID |
Identificatore Posizione che è impostato in un ordine non appena viene eseguito. Ogni ordine eseguito risulta in un affare che apre o modifica una posizione già esistente. L'identificatore di esattamente questa posizione viene impostato ad ordine eseguito, in questo momento. |
long |
ORDER_POSITION_BY_ID |
Identificatore di una posizione opposta utilizzata per la chiusura da ORDER_TYPE_CLOSE_BY |
long |
Per le funzioni OrderGetDouble() e HistoryOrderGetDouble()
Identificatore |
Descrizione |
Tipo |
---|---|---|
ORDER_VOLUME_INITIAL |
Volume iniziale dell'ordine |
double |
ORDER_VOLUME_CURRENT |
Volume corrente dell'ordine |
double |
ORDER_PRICE_OPEN |
Prezzo specificato nell'ordine |
double |
ORDER_SL |
Valore Stop Loss |
double |
ORDER_TP |
Valore Take Profit |
double |
ORDER_PRICE_CURRENT |
Il prezzo attuale del simbolo dell'ordine |
double |
ORDER_PRICE_STOPLIMIT |
Il prezzo Limit dell' ordine per l'ordine StopLimit |
double |
Per le funzioni OrderGetString() e HistoryOrderGetString()
Identificatore |
Descrizione |
Tipo |
---|---|---|
ORDER_SYMBOL |
Smbolo dell'ordine |
string |
ORDER_COMMENT |
Commento all'ordine |
string |
Quando si invia una richiesta di trade usando la funzione OrderSend(), alcune operazioni richiedono l'indicazione del tipo di ordine. Il tipo di ordine viene specificato nel campo tipo della struttura speciale MqlTradeRequest, e può accettare valori dell'enumerazione ENUM_ORDER_TYPE.
Identificatore |
Descrizione |
---|---|
ORDER_TYPE_BUY |
Ordine di mercato Buy |
ORDER_TYPE_SELL |
Ordine di mercato Sell |
ORDER_TYPE_BUY_LIMIT |
Ordine pendente Buy Limit |
ORDER_TYPE_SELL_LIMIT |
Ordine pendente Sell Limit |
ORDER_TYPE_BUY_STOP |
Ordine pendente Buy Stop |
ORDER_TYPE_SELL_STOP |
Ordine pendente Sell Stop |
ORDER_TYPE_BUY_STOP_LIMIT |
Dopo aver raggiunto il prezzo dell' ordine, un ordine pentende Buy Limit viene piazzato al prezzo StopLimit |
ORDER_TYPE_SELL_STOP_LIMIT |
Dopo aver raggiunto il prezzo dell'ordine, un ordine pendente Sell Limit viene piazzato al prezzo StopLimit |
ORDER_TYPE_CLOSE_BY |
Order to close a position by an opposite one |
Ogni ordine ha uno status che descrive il suo stato. Per ottenere informazioni, utilizzare OrderGetInteger() oppure HistoryOrderGetInteger() con il modificatore ORDER_STATE. I valori consentiti vengono memorizzati nell' enumerazione ENUM_ORDER_STATE.
Identificatore |
Descrizione |
---|---|
ORDER_STATE_STARTED |
Ordine controllato, ma non ancora accettato dal broker |
ORDER_STATE_PLACED |
Ordine accettato |
ORDER_STATE_CANCELED |
Ordine annullato dal client |
ORDER_STATE_PARTIAL |
Ordine parzialmente eseguito |
ORDER_STATE_FILLED |
Ordine pienamente eseguito |
ORDER_STATE_REJECTED |
Ordine rigettato |
ORDER_STATE_EXPIRED |
Ordine espirato |
ORDER_STATE_REQUEST_ADD |
L' ordine è stato registrato (piazzato al trading system) |
ORDER_STATE_REQUEST_MODIFY |
L'ordine è stato modificato (cambio dei suoi parametri) |
ORDER_STATE_REQUEST_CANCEL |
L'ordine è stato eliminato (eliminato dal trading system) |
Quando si invia una richiesta di trade per l'esecuzione in tempo reale (ora in vigore), occorre specificare il prezzo e il volume di acquisto/vendita richiesto. Inoltre, tieni presente che i mercati finanziari non forniscono alcuna garanzia che l'intero volume richiesto sia disponibile per un determinato strumento finanziario al prezzo desiderato. Pertanto, le operazioni di trading in tempo reale sono regolate utilizzando le modalità di esecuzione di prezzo e volume. Le modalità, o criteri di esecuzione, definiscono le regole per i casi in cui il prezzo è cambiato o il volume richiesto non può essere completamente soddisfatto in quel momento.
Le modalità di esecuzione dei prezzi possono essere ottenute dalla proprietà del simbolo SYMBOL_TRADE_EXEMODE contenente la combinazione di flag dall'enumerazione ENUM_SYMBOL_TRADE_EXECUTION.
Modalità di esecuzione |
Descrizione |
Valore in ENUM_SYMBOL_TRADE_EXECUTION |
---|---|---|
Modalità di esecuzione
(Request Execution) |
Esecuzione di un ordine di mercato al prezzo precedentemente ricevuto dal broker.
I prezzi per un certo ordine di mercato sono richiesti dal broker prima che l'ordine venga inviato. Dopo aver ricevuto i prezzi, l'esecuzione dell'ordine al prezzo indicato può essere confermato o respinto. |
SYMBOL_TRADE_EXECUTION_REQUEST |
Esecuzione Immediata
(Instant Execution) |
Esecuzione immediata di un ordine di mercato al prezzo specificato.
Quando si invia una richiesta di trade da eseguire, la piattaforma aggiunge automaticamente i prezzi correnti all'ordine.
|
SYMBOL_TRADE_EXECUTION_INSTANT |
Esecuzione a Mercato
(Market Execution) |
Un broker prende una decisione circa il prezzo di esecuzione dell'ordine senza alcuna discussione aggiuntiva con il trader.
L'invio dell'ordine in tale modalità significa il consenso anticipato alla sua esecuzione a questo prezzo. |
SYMBOL_TRADE_EXECUTION_MARKET |
Esecuzione in Borsa
(Exchange Execution) |
Le operazioni di trade sono eseguite ai prezzi delle attuali offerte di mercato. |
SYMBOL_TRADE_EXECUTION_EXCHANGE |
La politica di inserimento del volume viene specificata nella proprietà dell'ordine ORDER_TYPE_FILLING e può contenere solo i valori dell'enumerazione ENUM_ORDER_TYPE_FILLING
Politica di inserimento |
Descrizione |
Valore in ENUM_ORDER_TYPE_FILLING |
---|---|---|
Tutto o Niente |
Un ordine può essere eseguito solo nel volume specificato.
Se l'ammontare necessario di uno strumento finanziario non è attualmente disponibile sul mercato, l'ordine non verrà eseguito.
Il volume desiderato può essere costituito da diverse offerte disponibili.
La possibilità di utilizzare ordini FOK è determinato dal server di trading. |
ORDER_FILLING_FOK |
Immediato o Annulla |
Un trader accetta di eseguire un contratto con il massimo volume disponibile sul mercato all'interno di quello indicato nell'ordine.
Se la richiesta non può essere inserita completamente, verrà eseguito un ordine con il volume disponibile e il volume rimanente verrà cancellato.
La possibilità di utilizzare ordini IOC è determinato dal server di trading.
|
ORDER_FILLING_IOC |
Passivo (Book or Cancel) |
L'ordine BoC presuppone che l'ordine possa essere effettuato solo nel Depth of Market e non possa essere eseguito immediatamente. Se l'ordine può essere eseguito immediatamente quando piazzato, allora viene annullato.
Infatti, la politica BoC garantisce che il prezzo dell'ordine effettuato sarà peggiore dell'attuale mercato. Gli ordini BoC sono utilizzati per implementare la negoziazione passiva, in modo che l'ordine non venga eseguito immediatamente al momento dell'immissione e non influisca sulla liquidità corrente.
Sono supportati solo gli ordini limit e stop limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT). |
ORDER_FILLING_BOC |
Ritorno |
In caso di inserimento parziale, un ordine con volume residuo non viene annullato ma ulteriormente elaborato.
Gli ordini con ritorno non sono consentiti nella modalità Esecuzione a Mercato (market execution — SYMBOL_TRADE_EXECUTION_MARKET). |
ORDER_FILLING_RETURN |
Quando si invia una richiesta di trade utilizzando la funzione OrderSend() , la politica di esecuzione del volume necessario può essere impostato nel campo type_filling, ovvero nella speciale struttura MqlTradeRequest. Sono disponibili i valori dell'enumerazione ENUM_ORDER_TYPE_FILLING. Per ottenere il valore della proprietà in uno specifico ordine attivo/completato, utilizzare le funzioni OrderGetInteger() o HistoryOrderGetInteger() con il modificatore ORDER_TYPE_FILLING.
Prima di inviare un ordine con esecuzione in tempo reale, per la corretta impostazione del valore (tipo di esecuzione del volume) ORDER_TYPE_FILLING, è possibile utilizzare la funzione SymbolInfoInteger() con ogni strumento finanziario per ottenere il valore della proprietà SYMBOL_FILLING_MODE, che mostra i tipi di esecuzione del volume consentiti per il simbolo come combinazione di flag. L'inserimento del tipo ORDER_FILLING_RETURN è sempre abilitato ad eccezione della modalità "Esecuzione a Mercato" (SYMBOL_TRADE_EXECUTION_MARKET).
L'uso dei tipi di inserimento a seconda della modalità di esecuzione può essere mostrato come nella seguente tabella:
Tipo di Esecuzione\Politica d'Inserimento |
Tutto o Niente (FOK ORDER_FILLING_FOK) |
Immediato o Annulla (IOC ORDER_FILLING_IOC) |
Ritorno (Return ORDER_FILLING_RETURN) |
---|---|---|---|
Esecuzione Immediata
(SYMBOL_TRADE_EXECUTION_INSTANT) |
+ (indipendentemente dall'impostazione di un simbolo) |
+ (indipendentemente dall'impostazione di un simbolo) |
+ (sempre) |
Richiesta di Esecuzione
SYMBOL_TRADE_EXECUTION_REQUEST |
+ (indipendentemente dall'impostazione di un simbolo)
|
+ (indipendentemente dall'impostazione di un simbolo) |
+ (sempre) |
Esecuzione a Mercato
SYMBOL_TRADE_EXECUTION_MARKET |
+ (impostato nelle impostazioni del simbolo) |
+ (impostato nelle impostazioni del simbolo) |
- (disabilitato indipendentemente dalle impostazioni del simbolo) |
Esecuzione in Borsa
SYMBOL_TRADE_EXECUTION_EXCHANGE |
+ (impostato nelle impostazioni del simbolo) |
+ (impostato nelle impostazioni del simbolo) |
+ (sempre) |
In caso di ordini pendenti, il tipo di inserimento ORDER_FILLING_RETURN deve essere utilizzato indipendentemente dal tipo di esecuzione (SYMBOL_TRADE_EXEMODE), poiché tali ordini non sono destinati per l'esecuzione al momento dell'invio. Quando si utilizzano gli ordini pendenti, un trader accetta in anticipo che, quando le condizioni per un contratto su questo ordine sono soddisfatte, il broker utilizzerà il tipo di inserimento supportato dallo scambio.
Il periodo di validità dell'ordine può essere impostato nel campo type_time della speciale struttura MqlTradeRequest durante l'invio di una richiesta di trade con la funzione OrderSend(). I valori dell'enumerazione ENUM_ORDER_TYPE_TIME sono ammessi. Per ottenere il valore di questa proprietà utilizzare la funzione OrderGetInteger() oppure HistoryOrderGetInteger() con il modificatore ORDER_TYPE_TIME.
Identificatore |
Descrizione |
---|---|
ORDER_TIME_GTC |
Buona fino a cancellazione ordine |
ORDER_TIME_DAY |
Buono sino al corrente ordine d giorno di trade |
ORDER_TIME_SPECIFIED |
Buona fino ad espirazione ordine |
ORDER_TIME_SPECIFIED_DAY |
L'ordine sarà efficace fino a 23:59:59 del giorno specificato. Se questo orario è al di fuori di una sessione di trading, l'ordine scade nel più vicino orario di trading. |
La ragione per l'immissione dell'ordine è contenuta nella proprietà ORDER_REASON. Un ordine può essere posizionato da un programma MQL5, da un'applicazione mobile, a seguito di StopOut, ecc. I valori possibili di ORDER_REASON sono descritti nell'enumerazione ENUM_ORDER_REASON.
Identificatore |
Descrizione |
---|---|
ORDER_REASON_CLIENT |
L'ordine è stato piazzato da un terminale desktop |
ORDER_REASON_MOBILE |
L'ordine è stato piazzato da un'applicazione mobile |
ORDER_REASON_WEB |
L'ordine è stato piazzato da una piattaforma web |
ORDER_REASON_EXPERT |
L'ordine è stato piazzato da un programma MQL5, cioè da un Expert Advisor o da uno script |
ORDER_REASON_SL |
L'ordine è stato piazzato in seguito all'attivazione dello Stop Loss |
ORDER_REASON_TP |
L'ordine è stato piazzato in seguito all'attivazione del Take Profit |
ORDER_REASON_SO |
L'ordine è stato piazzato in seguito all'attivazione dell'evento Stop Out |