ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!

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

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

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

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

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

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

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

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

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

ここで、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));
  }
}

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

MQL4プログラミングの最新記事8件

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG