计算实时仓位的点数利润?同理,知道仓位的点数利润和仓位,反推利润?SYMBOL_TRADE_TICK_VALUE 难道不是指仓位波动一点对应的利润吗?

 

计算仓位的点数利润,我的方法是:

int Ticket_ProfitPoint(ulong ticket)
 {
  if(!PositionInfo.SelectByTicket(ticket))
    return(0);
  double profit = PositionInfo.Profit();
  double volume = PositionInfo.Volume();
  double tickvalue = SymbolInfoDouble(PositionInfo.Symbol(), SYMBOL_TRADE_TICK_VALUE);
 
  return((int)(profit / volume / tickvalue));
 });

外汇品种计算出的点数利润都是正确的,但是对于有的CFD,比如XAUUSD,结果是错误的。

比如 XAUUSD,利润0.02,仓位0.01,tick_value=0.01。点数按照计算=20,但是实际点数=2.

我想知道是哪里错误了? 难道是我公式中SYMBOL_TRADE_TICK_VALUE用的不对?SYMBOL_TRADE_TICK_VALUE 难道不是指仓位波动一点对应的利润吗?

======

我知道点数利润通过价格差可以算出来,但是我想知道我的公式哪里错误了?

如果我的公式是错误的,那么假设知道了仓位的点数利润、持仓大小,那就无法反推出利润额了。

 

公式不对,tickvalue 不等于 pointvalue。有些情况它们是相等的,但是不能适配所有品种。

SYMBOL_TRADE_TICK_VALUE 系统函数获取的 tickvalue 结果不完全正确,这个会获取经纪商的设置。但不是真实的tickvalue。

原因: