如何根据账户货币计算mt5中的掉期(展期)



背景:

  • 使用mt5
  • "掉期"(展期(价格以点数(0.00001/0.001(-5位数的经纪人为单位
  • 账户货币:美元

问题是:如何计算"掉期价值"的acc货币在mt5。换句话说,我将为一天的展期支付多少美分?

目前有这个"mql5"脚本:

#include <TradeSymbolInfo.mqh>
void OnStart() {
   CSymbolInfo sym;  // symbol informations object
   sym.Name( ChartSymbol() ); // get the object for the current chart symbol
   if( sym.SwapMode() == SYMBOL_SWAP_MODE_POINTS) {
      double lot = 0.1;
      double swapUSD_long = sym.SwapLong() * 0;   // need help here
      double swapUSD_short = sym.SwapShort() * 0; // need help here
      PrintFormat(
         "symbol: %s swap_long: %.2f swap_short: %.2f swapUSD_long: %.2f swapUSD_short: %.2f",
         sym.Name(),
         sym.SwapLong(),
         sym.SwapShort(),
         swapUSD_long,
         swapUSD_short
      );
   }
}

当将脚本附加到EURAUD时,它将打印到终端:

符号:欧元兑澳元swap_long:-10.80 swap_short:6.80 swapUSD_long:0.00掉期USD_short:0.00

因此:空头头寸的展期价格为6.8点。如何用当前汇率兑换成美元?为此需要:

  • 找到acc货币对(在这种情况下需要找到AUDUSD(
  • 得到AUDUSD符号的速率。Bid((或符号。Ask((
  • 而且

只是需要一些帮助;(

如果我理解你的问题,你可以使用TickValueProfitTickValueLoss。如果向某个方向的掉期为负(您将支付(,则使用TickvalueLoss,当为正时使用TickValueProfit。

你可以为此制作一个函数,如下所示:

double swap_value_currency(double value_point, double tickprofit, double tickloss)
   {
      if( value_point == 0.0 ) { return(0.0); }
      if( value_point < 0.0 ) {
         return( val * tickloss );
      }
      return( value_point * tickprofit);
   }

swap_value_currency根据一个标准批次的输赢返回交换值。

所以你的代码片段可以是:

if( sym.SwapMode() == SYMBOL_SWAP_MODE_POINTS)
   {
      double swval_long = swap_value_currency(sym.SwapLong(),   sym.TickValueProfit(), sym.TickValueLoss());
      double swval_short= swap_vallue_currency(sym.SwapShort(), sym.TickValueProfit(), sym.TickValueLoss() );
   }

因为这是一个标准批次,你需要乘以你的批次大小。。。

最新更新