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

时间:2014-05-30 10:00:16

标签: metatrader4 mql4 metatrader5 mql5

Backgound:

  • 使用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)
  • 获取AUDUSD sym.Bid()或sym.Ask()
  • 的比率
  • 和......

只需要一些帮助;)

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题,您可以使用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() );
   }

因为这是一个标准手,你需要将它与你的手数相乘......