order_calc_profit

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

order_calc_profit(
   action,          // tipo de orden (ORDER_TYPE_BUY o ORDER_TYPE_SELL)
   symbol,          // nombre del símbolo
   volume,          // volumen
   price_open,      // precio de apertura
   price_close      // precio de cierre
   );

Parámetros

action

[in]  Tipo de orden, puede adoptar uno de los dos valores de la enumeración ORDER_TYPE: ORDER_TYPE_BUY o ORDER_TYPE_SELL. 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_open

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

price_close

[in]  Precio de cierre. 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 resultado de una operación comercial en la cuenta actual y con el entorno de mercado actual. Es un análogo de OrderCalcProfit.

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")
print("Symbols to check margin:", symbols)
# evaluamos los valores de beneficio para las compras y las ventas
lot=1.0
distance=300
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
    point=mt5.symbol_info(symbol).point
    symbol_tick=mt5.symbol_info_tick(symbol)
    ask=symbol_tick.ask
    bid=symbol_tick.bid
    buy_profit=mt5.order_calc_profit(mt5.ORDER_TYPE_BUY,symbol,lot,ask,ask+distance*point)
    if buy_profit!=None:
        print("   buy {} {} lot: profit on {} points => {} {}".format(symbol,lot,distance,buy_profit,account_currency));
    else:
        print("order_calc_profit(ORDER_TYPE_BUY) failed, error code =",mt5.last_error())
    sell_profit=mt5.order_calc_profit(mt5.ORDER_TYPE_SELL,symbol,lot,bid,bid-distance*point)
    if sell_profit!=None:
        print("   sell {} {} lots: profit on {} points => {} {}".format(symbol,lot,distance,sell_profit,account_currency));
    else:
        print("order_calc_profit(ORDER_TYPE_SELL) failed, error code =",mt5.last_error())
    print()
 
# 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')
   buy EURUSD 1.0 lot: profit on 300 points => 300.0 USD
   sell EURUSD 1.0 lot: profit on 300 points => 300.0 USD
 
   buy GBPUSD 1.0 lot: profit on 300 points => 300.0 USD
   sell GBPUSD 1.0 lot: profit on 300 points => 300.0 USD
 
   buy USDJPY 1.0 lot: profit on 300 points => 276.54 USD
   sell USDJPY 1.0 lot: profit on 300 points => 278.09 USD

Ver también

order_calc_margin, order_check