0

背景:

  • 使用 mt5
  • “掉期”(展期)价格以点数定义 (0.00001/0.001) - 5 位经纪人
  • 账户货币:美元

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

目前有这个“mql5”脚本:

#include <Trade\SymbolInfo.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 时,它会打印到终端:

交易品种:EURAUD swap_long:-10.80 swap_short:6.80 swapUSD_long:0.00 swapUSD_short:0.00

所以:空头头寸的展期价格为6.8点。如何以当前汇率将其转换为美元?对于这个需求:

  • 找到与 acc 货币的货币对(在这种情况下需要找到 AUDUSD)
  • 获取澳元兑美元汇率 sym.Bid() 或 sym.Ask()
  • 和 ...

只是需要一些帮助;)

4

1 回答 1

0

如果我理解你的问题,你可以使用TickValueProfitand TickValueLoss。如果对某个方向的掉期为负(您将支付),则使用 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() );
   }

因为这是一个标准手数,所以您需要将它乘以您的手数...

于 2014-06-08T15:29:13.380 回答