0

背景:

  • mt5の使用
  • 「スワップ」(ロールオーバー) 価格はポイント (0.00001/0.001) で定義されます - 5 桁のブローカー
  • 口座通貨: USD

問題は、「スワップ値」を acc で計算する方法です。mt5の通貨。言い換えれば、1日のロールオーバーに何セント支払うのでしょうか?

現在、この「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() のレートを取得します
  • と ...

単に助けが必要です;)

4

1 に答える 1

0

あなたの質問が正しく理解できたら、 と を使用できTickValueProfitます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、1 つの標準ロットの勝敗に応じてスワップ値を返します。

したがって、コードのフラグメントは次のようになります。

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

これは 1 つの標準ロット用であるため、ロットサイズを掛ける必要があります...

于 2014-06-08T15:29:13.380 に答える