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

【送料無料】ジュエリー・アクセサリー ブレスレット メッシュチェーンフィガロゴールドプレートブレスレットchaine maille figaro 12 en plaque or 18 cm bracelet femme cure *カイヤナイトロゴリングブレスレット 【新品】

ナンピンマーチンを使ったトレードでは、仕掛け価格ごとにロット数が異なることになります モスアクアマリンAAA平ドロップカット(ペアシェイプ)約5×8mm◇一連売り(66~68粒)◇ ビーズ。

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

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

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

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

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

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

謎の記号はシグマ記号で、総和を意味します 【送料無料】チェーン付き・ペアジュエリーステンレスペアペンダント【ブルー・プレート・ラブ・メッセージ】ペアアクセサリーステンレス【プレゼント・ギフト・】【P06Dec14】【ギフト プレゼント】【コンビニ受取対応商品】 。i=1~n番目のポジションについてシグマの右側の要素を足していくことになります。

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//+------------------------------------------------------------------+
//|【関数】加重平均約定価格を計算する                                |
//|                                                                  |
//|【引数】 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));
  }
}

すごくシンプルですが、パワフルな関数です ペアリング:結婚指輪:マリッジリング:ホワイトゴールドk18:ダイヤモンド:ペア2本セット/K18wg指輪ダイヤ0.02ct:甲丸ストレートライン。ゼロ割り防止がポイントでしょうか。良かったらお使いください。

【送料無料】ジュエリー・アクセサリー ブレスレット メッシュチェーンフィガロゴールドプレートブレスレットchaine maille figaro 12 en plaque or 18 cm bracelet femme cure *カイヤナイトロゴリングブレスレット 【新品】

スポンサードリンク

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)
 

コメントを残す コメントをキャンセル

8 + six =