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()

ENUM_ORDER_PROPERTY_INTEGER

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

ENUM_ORDER_TYPE

ORDER_STATE

Stato dell'ordine

ENUM_ORDER_STATE

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

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

Durata dell'ordine

ENUM_ORDER_TYPE_TIME

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

ENUM_ORDER_REASON

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()

ENUM_ORDER_PROPERTY_DOUBLE

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()

ENUM_ORDER_PROPERTY_STRING

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.

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.

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.

  • Se il broker accetta il prezzo, l'ordine viene eseguito.
  • Se il broker non accetta il prezzo richiesto, viene inviato un "Requote" — il broker restituisce i prezzi, alla quale questo ordine può essere eseguito.

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.

ENUM_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.

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