order_check

Verifica que há fundos suficientes para realizar a operação de negociação requerida. Os resultados da verificação são retornados como estruturas MqlTradeCheckResult.

order_check(
   request      // estrutura da solicitação
   );

Parâmetros

request

[in]  Estrutura do tipo MqlTradeRequest que descreve a ação de negociação requerida. Parâmetro sem nome obrigatório. Veja abaixo um exemplo de preenchimento de solicitação e a composição de enumerações.

Valor retornado

Resultado de verificação como estrutura MqlTradeCheckResult. O campo request na resposta contém a estrutura da solicitação de negociação transferida para order_check().

Observação

Uma verificação bem-sucedida não é um sinal de que a operação de negociação solicitada certamente seja executada com êxito. A função order_check é semelhante a OrderCheck.

TRADE_REQUEST_ACTIONS

Identificador

Descrição

TRADE_ACTION_DEAL

Definir uma ordem de negociação para executar imediatamente uma transação com os parâmetros especificados (colocar uma ordem a mercado)

TRADE_ACTION_PENDING

Definir uma ordem de negociação para executar uma transação nas condições especificados (colocar uma ordem pendente)

TRADE_ACTION_SLTP

Alterar os valores de Stop Loss e de Take Profit da posição aberta

TRADE_ACTION_MODIFY

Alterar os parâmetros de uma ordem de negociação colocada anteriormente

TRADE_ACTION_REMOVE

Excluir uma ordem pendente colocada anteriormente

TRADE_ACTION_CLOSE_BY

Fechar a posição oposta

ORDER_TYPE_FILLING

Identificador

Descrição

ORDER_FILLING_FOK

Esta política de execução significa que a ordem pode ser executada exclusivamente com base no volume especificado. Se, no mercado, nesse momento, não estiver presente um volume suficiente de instrumento financeiro, a ordem não será executada. O volume necessário pode ser composto pelas variadas ofertas atualmente disponíveis no mercado.

ORDER_FILLING_IOC

Significa consentimento para concluir uma transação de acordo com o valor máximo disponível no mercado dentro dos limites especificados na ordem. No caso de impossibilidade de total execução, a ordem será executada no volume disponível, e o volume não disponível será cancelado.

ORDER_FILLING_RETURN

Este modo é usada para ordenes a mercado (ORDER_TYPE_BUY e ORDER_TYPE_SELL), ordens limitadas e ordens stop limit (ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT) e apenas nos modos "Execução a mercado" e "Execução de bolsa". No caso de uma execução parcial, a ordem de mercado ou limit com um volume residual não é retirada e continua a vigorar.

Durante a ativação das ordens ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT, será criado a ordem limite correspondente ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT com execução ORDER_FILLING_RETURN.

ORDER_TYPE_TIME

Identificador

Descrição

ORDER_TIME_GTC

A ordem permanecerá na fila até ser retirada

ORDER_TIME_DAY

A ordem será válida apenas durante o dia de negociação atual

ORDER_TIME_SPECIFIED

A ordem será válida até a data de vencimento

ORDER_TIME_SPECIFIED_DAY

A ordem será válida até 23:59:59 do dia especificado. Se essa hora não coincidir com a sessão de trading, o vencimento acontecerá ao iniciar a próxima negociação.

Exemplo:

import MetaTrader5 as mt5
# exibimos dados sobre o pacote MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# estabelecemos a conexão ao terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# obtemos a moeda da conta
account_currency=mt5.account_info().currency
print("Account currency:",account_currency)
 
# preparamos a estrutura da solicitação
symbol="USDJPY"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "not found, can not call order_check()")
    mt5.shutdown()
    quit()
 
# se o símbolo não estiver disponível no MarketWatch, adicionamo-lo
if not symbol_info.visible:
    print(symbol, "is not visible, trying to switch on")
    if not mt5.symbol_select(symbol,True):
        print("symbol_select({}}) failed, exit",symbol)
        mt5.shutdown()
        quit()
 
# preparamos a solicitação
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,
}
 
# verificamos e exibimos o resultado como está
result = mt5.order_check(request)
print(result);
# solicitamos o resultado na forma de um dicionário e exibimos elemento por elemento
result_dict=result._asdict()
for field in result_dict.keys():
    print("   {}={}".format(field,result_dict[field]))
    # se esta for uma estrutura de uma solicitação de negociação, também a exibiremos elemento a 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]))
 
# concluímos a conexão ao terminal MetaTrader 5
mt5.shutdown()
 
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Account currency: 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

Veja também

order_send, OrderCheck, Tipos de operações de negociação, Estrutura da solicitação de negociação, Estrutura dos resultados de verificação da solicitação de negociação, Estrutura do resultado da solicitação de negociação