order_calc_margin

Retorna el tamaño del margen en la divisa de la cuenta para realizar la operación comercial indicada.

order_calc_margin(
   action,      // tipo de orden (ORDER_TYPE_BUY o ORDER_TYPE_SELL)
   symbol,      // nombre del símbolo
   volume,      // volumen
   price        // precio de apertura
   )

Parámetros

action

[in]  Tipo de orden, puede adoptar valores de la enumeración ORDER_TYPE. Parámetro no nombrado obligatorio.

symbol

[in]  Nombre del instrumento financiero. Parámetro no nombrado obligatorio.

volume

[in]  Volumen de la operación comercial. Parámetro no nombrado obligatorio.

price

[in]  Precio de apertura. Parámetro no nombrado obligatorio.

Valor retornado

Valor de tipo real en caso de ejecución exitosa, de lo contrario, None. La información sobre el error se puede obtener con la ayuda de last_error().

Observación

La función permite valorar el tamaño del margen necesario para el tipo de orden indicado en la cuenta actual y con el entorno de mercado actual, sin tener en cuenta las órdenes pendientes y las posiciones abiertas actuales. Es un análogo de OrderCalcMargin.

ORDER_TYPE

Identificador

Descripción

ORDER_TYPE_BUY

Orden de mercado de compra

ORDER_TYPE_SELL

Orden de mercado de venta

ORDER_TYPE_BUY_LIMIT

Orden pendiente Buy Limit

ORDER_TYPE_SELL_LIMIT

Orden pendiente Sell Limit

ORDER_TYPE_BUY_STOP

Orden pendiente Buy Stop

ORDER_TYPE_SELL_STOP

Orden pendiente Sell Stop

ORDER_TYPE_BUY_STOP_LIMIT

Al alcanzarse el precio de la orden, se coloca una orden pendiente Buy Limit al precio StopLimit

ORDER_TYPE_SELL_STOP_LIMIT

Al alcanzarse el precio de la orden, se coloca una orden pendiente Sell Limit al precio StopLimit

ORDER_TYPE_CLOSE_BY

Orden de cierre de una posición con otra opuesta.

Ejemplo:

import MetaTrader5 as mt5
# mostramos los datos sobre el paquete MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# establecemos la conexión con el terminal MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# obtenemos la divisa de la cuenta
account_currency=mt5.account_info().currency
print("Account сurrency:",account_currency)
 
# creamos la 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())
 
# finalizamos la conexión con el terminal MetaTrader 5
mt5.shutdown()
 
 
Resultado:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Account сurrency: 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

Ver también

order_calc_profit, order_check