order_check

Verificare la sufficienza dei fondi per eseguire un' operazione di trading richiesta. Il risultato del controllo viene restituito come struttura MqlTradeCheckResult.

order_check(
   request      // richiedi struttura
   );

Parametri

request

[in] MqlTradeRequest tipo struttura che descrive un'azione di trading richiesta. Parametro richiesto senza nome. Di seguito sono descritti esempi di compilazione di una richiesta ed il contenuto dell'enumerazione.

Valore di Ritorno

Controlla il risultato come struttura MqlTradeCheckResult. Il campo request nella risposta contiene la struttura di una richiesta di trading passata ad order_check().

Nota

L' invio riuscito di una richiesta non implica che l'operazione di trading richiesta verrà eseguita con successo. La funzione order_check è simile a OrderCheck.

TRADE_REQUEST_ACTIONS

ID

Descrizione

TRADE_ACTION_DEAL

Effettua un ordine per un affare(deal) istantaneo con i parametri specificati (imposta un market order)

TRADE_ACTION_PENDING

Piazza un ordine per eseguire un affare(deal) alle condizioni specificate (ordine pendente)

TRADE_ACTION_SLTP

Cambia lo Stop Loss ed il Take Profit della posizione aperta

TRADE_ACTION_MODIFY

Modifica i parametri dell'ordine di trading precedentemente piazzato

TRADE_ACTION_REMOVE

Rimuove l'ordine pendente precedentemente piazzato

TRADE_ACTION_CLOSE_BY

Chiude una posizione con una opposta

ORDER_TYPE_FILLING

ID

Descrizione

ORDER_FILLING_FOK

Questa politica di esecuzione indica che un ordine può essere eseguito solo nel volume specificato. Se la quantità necessaria di uno strumento finanziario non è attualmente disponibile nel mercato, l'ordine non verrà eseguito. Il volume desiderato può essere composto da diverse offerte disponibili.

ORDER_FILLING_IOC

Un accordo per eseguire un affare(deal) al volume massimo disponibile sul mercato entro il volume specificato nell'ordine. Se la richiesta non può essere riempita completamente, verrà eseguito un ordine con il volume disponibile ed il volume rimanente verrà annullato.

ORDER_FILLING_RETURN

Questa politica è utilizzata solo per il mercato (ORDER_TYPE_BUY e ORDER_TYPE_SELL), ordini limit e stop limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT) e solo per i simboli con le modalità di esecuzione Market o Exchange. Se riempito parzialmente, un ordine di mercato o ordine limit, con il volume rimanente non viene annullato e viene ulteriormente elaborato.

Durante l'attivazione degli ordini ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT, viene creato un ordine limit appropriato ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT con il tipo ORDER_FILLING_RETURN.

ORDER_TYPE_TIME

ID

Descrizione

ORDER_TIME_GTC

L'ordine rimane in coda fino a quando non viene annullato manualmente

ORDER_TIME_DAY

L'ordine è attivo solo durante il giorno di trading corrente

ORDER_TIME_SPECIFIED

L'ordine è attivo fino alla data specificata

ORDER_TIME_SPECIFIED_DAY

L'ordine è attivo fino alle 23:59:59 del giorno specificato. Se questo orario sembra essere fuori da una sessione di trading, la scadenza viene elaborata nell'orario di trading più vicino.

Esempio:

import MetaTrader5 as mt5
# mostra i dati sul package MetaTrader 5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# stabilisce una connessione al terminale di trading MetaTrader 5 
if not mt5.initialize():
    print("initialize() fallito, error code =",mt5.last_error())
    quit()
 
# ottiene la valuta dell'account 
account_currency=mt5.account_info().currency
print("Valuta dell'account:",account_currency)
 
# prepara la struttura richiesta
symbol="USDJPY"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "non trovato, non posso chiamare order_check()")
    mt5.shutdown()
    quit()
 
# se il simbolo non è disponibile in MarketWatch, aggiungerlo
if not symbol_info.visible:
    print(symbol, "non è visibile, prova ad attivarlo")
    if not mt5.symbol_select(symbol,True):
        print("symbol_select({}}) failed, exit",symbol)
        mt5.shutdown()
        quit()
 
# prepara la richiesta 
point=mt5.symbol_info(symbol).point
request = {
    "action"mt5.TRADE_ACTION_DEAL,
    "symbol": symbol,
    "volume": 1.0,
    "type"mt5.ORDER_TYPE_BUY,
    "price"mt5.symbol_info_tick(symbol).ask,
    "sl"mt5.symbol_info_tick(symbol).ask-100*point,
    "tp"mt5.symbol_info_tick(symbol).ask+100*point,
    "deviation": 10,
    "magic": 234000,
    "comment""python script",
    "type_time"mt5.ORDER_TIME_GTC,
    "type_filling"mt5.ORDER_FILLING_RETURN,
}
 
# esegue il controllo e visualizza il risultato "così com'è"
result = mt5.order_check(request)
print(result);
# richiede il risultato come dizionario e lo visualizza elemento per elemento
result_dict=result._asdict()
for field in result_dict.keys():
    print("   {}={}".format(field,result_dict[field]))
    # se questa è una struttura di richiesta di trading, visualizzala anche elemento per elemento
    if field=="request":
        traderequest_dict=result_dict[field]._asdict()
        for tradereq_filed in traderequest_dict:
            print("       traderequest: {}={}".format(tradereq_filed,traderequest_dict[tradereq_filed]))
 
# interrompe la connessione al terminale MetaTrader 
mt5.shutdown()
 
 
 Risultato: 
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Account сurrency: USD
   retcode=0
   balance=101300.53
   equity=68319.53
   profit=-32981.0
   margin=51193.67
   margin_free=17125.86
   margin_level=133.45308121101692
   comment=Done
   request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=1.0, ...
       traderequest: action=1
       traderequest: magic=234000
       traderequest: order=0
       traderequest: symbol=USDJPY
       traderequest: volume=1.0
       traderequest: price=108.081
       traderequest: stoplimit=0.0
       traderequest: sl=107.98100000000001
       traderequest: tp=108.181
       traderequest: deviation=10
       traderequest: type=0
       traderequest: type_filling=2
       traderequest: type_time=0
       traderequest: expiration=0
       traderequest: comment=python script
       traderequest: position=0
       traderequest: position_by=0

See also

order_send, OrderCheck, Tipi di operazioni di trading, Struttura richiesta di trading, Struttura dei risultati del controllo della richiesta di trading, Struttura dei risultati della richiesta di trading