order_check

Vérifie la suffisance des fonds pour effectuer une opération de trading désirée. Les résultats du contrôle sont renvoyés dans une structure MqlTradeCheckResult.

order_check(
   request      // structure de la requête
   );

Paramètres

request

[in] Structure de type MqlTradeRequest décrivant une action de trading désirée. Paramètre non nommé requis. Un exemple de remplissage d'une requête et le contenu de l'énumération sont décrits ci-dessous.

Valeur de Retour

Le résultat du contrôle en tant que structure MqlTradeCheckResult. Le champ request dans la réponse contient la structure de la requête de trading transmise à order_check().

Note

L'envoi réussi d'une requête n'implique pas que l'opération de trading demandée sera exécutée avec succès. La fonction order_check est similaire à OrderCheck.

TRADE_REQUEST_ACTIONS

ID

Description

TRADE_ACTION_DEAL

Place un ordre pour une transaction instantanée avec les paramètres spécifiés (définit un ordre de marché)

TRADE_ACTION_PENDING

Place un ordre pour effectuer une transaction à des conditions spécifiées (ordre en attente)

TRADE_ACTION_SLTP

Change le Stop Loss ou le Take Profit d'une position ouverte

TRADE_ACTION_MODIFY

Modifie les paramètres de l'ordre de trading précédemment placé

TRADE_ACTION_REMOVE

Supprime l'ordre en attente précédemment placé

TRADE_ACTION_CLOSE_BY

Ferme une position par une position opposée

ORDER_TYPE_FILLING

ID

Description

ORDER_FILLING_FOK

Cette politique d'exécution signifie qu'un ordre ne peut être exécuté que dans le volume spécifié. Si le montant nécessaire d'un instrument financier n'est actuellement pas disponible sur le marché, l'ordre ne sera pas exécuté. Le volume souhaité peut être composé de plusieurs offres disponibles.

ORDER_FILLING_IOC

Un accord pour exécuter une transaction au volume maximum disponible sur le marché dans le volume spécifié dans l'ordre. Si la demande ne peut pas être entièrement satisfaite, un ordre avec le volume disponible sera exécuté et le volume restant sera annulé.

ORDER_FILLING_RETURN

Cette politique est utilisée uniquement pour les ordres au marché (ORDER_TYPE_BUY et ORDER_TYPE_SELL), les ordres limit et stop limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT et ORDER_TYPE_SELL_STOP_LIMIT) et uniquement pour les symboles avec les modes d'exécution Market ou Exchange. S'il est partiellement rempli, un ordre de marché ou à cours limité avec le volume restant n'est pas annulé et sera traité plus tard.

Lors de l'activation des ordres ORDER_TYPE_BUY_STOP_LIMIT et ORDER_TYPE_SELL_STOP_LIMIT, un ordre limite approprié ORDER_TYPE_BUY_LIMIT / ORDER_TYPE_SELL_LIMIT avec le type ORDER_FILLING_RETURN est créé.

ORDER_TYPE_TIME

ID

Description

ORDER_TIME_GTC

L'ordre reste dans la file d'attente jusqu'à ce qu'il soit annulé manuellement

ORDER_TIME_DAY

L'ordre n'est actif que pednant le jour de bourse en cours

ORDER_TIME_SPECIFIED

L'ordre est actif jusqu'à la date spécifiée

ORDER_TIME_SPECIFIED_DAY

L'ordre est actif jusqu'à 23:59:59 du jour spécifié. Si cette heure semble être hors d'une session de trading, l'expiration est traitée à l'heure de trading la plus proche.

Exemple :

import MetaTrader5 as mt5
# affiche les données sur le package MetaTrader 5
print("Auteur du package MetaTrader5 : ",mt5.__author__)
print("Version du package MetaTrader5 : ",mt5.__version__)
 
# établit une connexion avec le terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() a échoué, code d'erreur=",mt5.last_error())
    quit()
 
# récupère la devise du compte
account_currency=mt5.account_info().currency
print("Devise du compte :",account_currency)
 
# prépare la structure de la requête
symbol="USDJPY"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "non trouvé, ne peut pas appeler order_check()")
    mt5.shutdown()
    quit()
 
# si le symbole n'est pas disponible dans le MarketWatch, il est ajouté
if not symbol_info.visible:
    print(symbol, "n'est pas visible, tentative de l'afficher")
    if not mt5.symbol_select(symbol,True):
        print("symbol_select({}}) a échoué, sortie",symbol)
        mt5.shutdown()
        quit()
 
# prépare la requête
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,
}
 
# effectue la vérification et affiche le résultat 'tel quel'
result = mt5.order_check(request)
print(result);
# demande le résultat sous forme de dictionnaire et l'affiche élément par élément
result_dict=result._asdict()
for field in result_dict.keys():
    print("   {}={}".format(field,result_dict[field]))
 # s'il s'agit d'une structure de requête de trading, elle est affichée également élément par élément
    if field=="request":
        traderequest_dict=result_dict[field]._asdict()
        for tradereq_filed in traderequest_dict:
            print("       traderequest: {}={}".format(tradereq_filed,traderequest_dict[tradereq_filed]))
 
# ferme la connexion au terminal MetaTrader 5
mt5.shutdown()
 
 
Résultat :
Auteur du package MetaTrader5 :  MetaQuotes Software Corp.
Version du package MetaTrader5 :  5.0.29
 
Devise du compte : 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

Voir aussi

order_send, OrderCheck, Types d'opération de trading, Structure de requête de trading, Structure des résultats de vérification d'une requête de trading, Structure de résultat d'une requête de trading