加重平均約定価格を計算する関数

ナンピンマーチン的な手法で使うことがあるかも

ナンピンマーチンを使ったトレードでは、仕掛け価格ごとにロット数が異なることになります。

一方で、複数の仕掛け価格が存在する時、トータルでプラスになったら纏めて全ポジションを決済するようなケースが存在します。

この「トータルでプラスになったら」という条件を判定するためには、平均約定価格を計算するのが一般的ですね。

ロット数が均一な場合の平均約定価格は、全ての約定価格を足してポジション数で割れば算出できることは誰でも想像つくでしょう。

では、各ポジションでロット数が異なる場合の平均約定価格はどうやって算出すればいいでしょうか?

その答えは以下の加重平均約定価格の式です。

加重平均約定価格の計算式

ここで、iはポジションのNo(i番目)を、nはポジションの数を表しています。

謎の記号はシグマ記号で、総和を意味します。i=1~n番目のポジションについてシグマの右側の要素を足していくことになります。

MQL4で加重平均約定価格を計算する関数のソースコードはこんな感じになります。

//+------------------------------------------------------------------+
//|【関数】加重平均約定価格を計算する                                |
//|                                                                  |
//|【引数】 IN OUT  引数名             説明                          |
//|        --------------------------------------------------------- |
//|         ○      aMagic             マジックナンバー              |
//|                                                                  |
//|【戻値】加重平均約定価格                                          |
//|                                                                  |
//|【備考】なし                                                      |
//+------------------------------------------------------------------+
double averageEntryPrice(int aMagic)
{
  double sumPrice_x_Lot = 0.0;
  double sumLot = 0.0;

  for(int i = 0; i < OrdersTotal(); i++){
    if(OrderSelect(i, SELECT_BY_POS) == false){
      break;
    }

    if(OrderSymbol() != Symbol() || OrderMagicNumber() != aMagic){
      continue;
    }

    sumPrice_x_Lot += NormalizeDouble(OrderOpenPrice(), Digits) * OrderLots();
    sumLot         += OrderLots();
  }

  // ゼロ割り防止
  if(sumLot == 0.0){
    return(0.0);
  }else{
    return(NormalizeDouble(sumPrice_x_Lot / sumLot, Digits));
  }
}

すごくシンプルですが、パワフルな関数です。ゼロ割り防止がポイントでしょうか。良かったらお使いください。

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG