order_calc_margin

Retorna o tamanho da margem na moeda da conta para a operação de negociação especificada.

order_calc_margin(
   action,      // tipo de ordem (ORDER_TYPE_BUY ou ORDER_TYPE_SELL)
   symbol,      // nome do símbolo
   volume,      // volume
   price        // preço de abertura
   )

Parâmetros

action

[in]   Tipo de ordem, sendo que pode assumir os valores da enumeração ORDER_TYPE. Parâmetro sem nome obrigatório.

symbol

[in]  Nome do instrumento financeiro. Parâmetro sem nome obrigatório.

volume

[in]  Volume da operação de negociação. Parâmetro sem nome obrigatório.

price

[in]  Preço de abertura. Parâmetro sem nome obrigatório.

Valor retornado

Valor real em caso de execução bem-sucedida, caso contrário, None. Informações de erro podem ser obtidas usando last_error().

Observação

A função permite estimar a margem necessária para o tipo de ordem especificado na conta corrente e no ambiente de mercado atual, excluindo os pedidos pendentes atuais e as posições abertas. É semelhante a OrderCalcMargin.

ORDER_TYPE

Identificador

Descrição

ORDER_TYPE_BUY

Ordem de mercado para compra

ORDER_TYPE_SELL

Ordem de mercado para venda

ORDER_TYPE_BUY_LIMIT

Ordem pendente Buy Limit

ORDER_TYPE_SELL_LIMIT

Ordem pendente Sell Limit

ORDER_TYPE_BUY_STOP

Ordem pendente Buy Stop

ORDER_TYPE_SELL_STOP

Ordem pendente Sell Stop

ORDER_TYPE_BUY_STOP_LIMIT

Ao atingir o preço da ordem, uma ordem Buy Limit é colocada segundo o preço Stop Limit

ORDER_TYPE_SELL_STOP_LIMIT

Ao atingir o preço da ordem, é colocada uma ordem pendente Sell Limit de acordo com o preço StopLimit

ORDER_TYPE_CLOSE_BY

Ordem de fechamento da posição oposta

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)
 
# geramos uma lista de símbolos
symbols=("EURUSD","GBPUSD","USDJPY""USDCHF","EURJPY","GBPJPY")
print("Symbols to check margin:", symbols)
action=mt5.ORDER_TYPE_BUY
lot=0.1
for symbol in symbols:
    symbol_info=mt5.symbol_info(symbol)
    if symbol_info is None:
        print(symbol,"not found, skipped")
        continue
    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, skipped",symbol)
            continue
    ask=mt5.symbol_info_tick(symbol).ask
    margin=mt5.order_calc_margin(action,symbol,lot,ask)
    if margin != None:
        print("   {} buy {} lot margin: {} {}".format(symbol,lot,margin,account_currency));
    else:
        print("order_calc_margin failed: , error code ="mt5.last_error())
 
# 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
 
Symbols to check margin: ('EURUSD', 'GBPUSD', 'USDJPY', 'USDCHF', 'EURJPY', 'GBPJPY')
   EURUSD buy 0.1 lot margin: 109.91 USD
   GBPUSD buy 0.1 lot margin: 122.73 USD
   USDJPY buy 0.1 lot margin: 100.0 USD
   USDCHF buy 0.1 lot margin: 100.0 USD
   EURJPY buy 0.1 lot margin: 109.91 USD
   GBPJPY buy 0.1 lot margin: 122.73 USD

Veja também

order_calc_profit, order_check