2023年6月23日金曜日

SWAPを日本円で確認しよう


全通貨ペアのスワップポイントを取得するコードを3年ほど前に紹介しましたが、

一日何円入るのかはなかなかつかみにくいと思います。

 その時の記事


スワップポイントの確認方法














スワップタイプが4種類あり(パターン3は見たことがありません)
それぞれに計算方法があります。


0:ポイント (OANDA ForexExchange)
このパターンが一番一般的です。

計算式:

LOTSIZE × 取引ロット × SWAPLONG もしくは SWAPSHORT × TICKSIZE 

例)100,000 × 0.1 × 19.39 × 0.001 = 193円

※楽天は0:ポイントが出ますがスワップポイントが表示されないため計算できません



1:USD (FXTF)

計算式:

左側通貨の対円レート(仲値) × SWAPLONG もしくは SWAPSHORT × 取引ロット 

※左側通貨の対円レート(仲値)の例

GBPJPYの場合はGBPJPYのBidとAskの平均

GBPUSDの場合はGBPJPYのBidとAskの平均

例)143.3 × 8.97 × 0.1 = 128円



2:パーセント (外為ファイネスト AVA)

計算式 LOTSIZE × 左側通貨の対円レート(仲値)× SWAPLONG もしくは SWAPSHORT ÷ 100 ÷ 360 × 取引ロット 

例)100,000 × 143.3 × 3.23 ÷ 100 ÷ 360 × 0.1 = 128円


3:不明

見たことが無いので計算できませんでした。



ややこしい計算式を云々書きましたが、これに興味がある人はほとんどいないと思います。

そこでコメントに表示する自動化EAを作りました。


input double LOT = 1;
void OnTick()
  {
   double SwapLong, SwapShort;
   string Sym = _Symbol;
   double SwapL =  MarketInfo(Sym, MODE_SWAPLONG);
   double SwapS =  MarketInfo(Sym, MODE_SWAPSHORT);
   double LotSize = MarketInfo(Sym, MODE_LOTSIZE);
   string Pair = StringSubstr(Sym, 0, 3) + "JPY" + StringSubstr(Sym, 6, 0);
   double Price = (MarketInfo(Pair, MODE_ASK) + MarketInfo(Pair, MODE_BID)) / 2;
   if(!MarketInfo(Sym, MODE_SWAPTYPE))//OANDA Forex Exchange
     {
      double TickSize = MarketInfo(Sym, MODE_TICKSIZE);
      SwapLong = SwapL * LotSize * TickSize * LOT;
      SwapShort = SwapS * LotSize * TickSize * LOT;
     }
   if(1 == MarketInfo(Sym, MODE_SWAPTYPE)) //TXTF
     {
      SwapLong = Price * SwapL * LOT;
      SwapShort = Price * SwapS * LOT;
     }
   if(2 == MarketInfo(Sym, MODE_SWAPTYPE)) //GaitameFainest AVA
     {
      SwapLong = LotSize * SwapL / 100 / 360 * Price * LOT;
      SwapShort = LotSize * SwapS / 100 / 360 * Price * LOT;
     }
   Comment("Swap\nLong : ", (int)SwapLong, "\nShort: ", (int)SwapShort);
  }

不具合などありましたら教えてください。




折角ですので各社のドル円のスワップを計算しました(2023/6/23)


※AVA社のLONG0は間違いかと思いましたが、詳細もスワップポイント0で表示されています。

※FOREXEXCHANGEは3日分もらえる日です。
この値が3倍かどうかは検証していません。


0 件のコメント:

コメントを投稿