order_calc_profit

返回指定交易操作的盈利(用账户货币表示)。

order_calc_profit(

   action,          // 订单类型 (ORDER_TYPE_BUY or ORDER_TYPE_SELL)

   symbol,          // 交易品种名称

   volume,          // 交易量

   price_open,      // 开盘价

   price_close      // 收盘价

   );

参数

action

[in]  订单类型可以获取两个ORDER_TYPE枚举值其中一个:ORDER_TYPE_BUY或ORDER_TYPE_SELL。所需的未命名参数。

symbol

[in]  交易品种名称。所需的未命名参数。

volume

[in]  交易操作的交易量。所需的未命名参数。

price_open

[in]  开盘价。所需的未命名参数。

price_close

[in]  收盘价。所需的未命名参数。

返回值

如果成功返回真实值,否则返回None。可以使用last_error()获取错误信息。

注意

该函数允许评估当前账户和当前交易环境下的交易操作结果。该函数类似于OrderCalcProfit

例如:

import MetaTrader5 as mt5

# display data on the MetaTrader 5 package

print("MetaTrader5 package author: ",mt5.__author__)

print("MetaTrader5 package version: ",mt5.__version__)



# establish connection to MetaTrader 5 terminal

if not mt5.initialize():

    print("initialize() failed, error code =",mt5.last_error())

    quit()

 

# get account currency

account_currency=mt5.account_info().currency

print("Account сurrency:",account_currency)



# arrange the symbol list

symbols = ("EURUSD","GBPUSD","USDJPY")

print("Symbols to check margin:", symbols)

# estimate profit for buying and selling

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()



# shut down connection to the MetaTrader 5 terminal

mt5.shutdown()





Result:

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

另见

order_calc_marginorder_check