Boomインデックススパイクパターン - MetaTrader 5用インディケーター

Mike 2025.07.21 19:06 22 0 0
添付ファイル

強気スパイクパターンの検出

  • 3本のローソク足パターン:

    • 1本目のローソク足: 大きな実体の緑色(強気スパイク)。

    • 2本目のローソク足: 赤色(反発)。

    • 3本目のローソク足: 大きな実体の緑色(再度の強気スパイク)。

  • このパターンが現れると、ゾーンが形成されます

ゾーンの作成

  • 3本のローソク足の高値/安値範囲から青い矩形が描画されます。

  • ライムグリーンの水平エントリーラインが2本目のローソク足の始値に描画されます。

  • そのラインは、価格が戻ってくるまで未来に延びます。


入力パラメータの説明

mq5
 color BoxColor = clrBlue;  // 3本のローソク足パターンボックスの色
 color EntryLineColor = clrLime;  // エントリーラインの色
 ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID;  // エントリーラインのスタイル
 int BoxWidth = 2;  // ボックスの境界の幅
 int EntryLineWidth = 2;  // エントリーラインの幅
 int EntryLineLength = 200;  // 緩和ラインの延長距離

これらの入力により、ボックスとエントリーラインのスタイルを完全にコントロールできます。

コアアイデア

3本のローソク足の強気パターンを探します。

1. 最初のローソク足– 強い強気(スパイク)

2. 2本目のローソク足 – 強気の調整

3. 3本目のローソク足– 再度の強気スパイク

このパターンが出現すると、次のことを描きます:

- パターンの周りにボックスを描く

- 2本目のローソク足の始値に水平ラインを描く(エントリーポイント)

価格がそのラインに戻ると(「緩和」)、ラインを短くして再描画を避けます。

データ構造

struct PatternInfo {
  datetime time;  // パターンの時間
  double entry;  // エントリープライス(2本目のローソク足の始値)
  double high;  // 3本のローソク足の最高値
  double low;  // 3本のローソク足の最低値
  bool mitigated;  // 価格がエントリーレベルに戻ったか?
};

CArrayObj activePatterns;

これにより、各有効なパターンを追跡し、配列に保存します。これにより、繰り返し処理を避けることができます。

初期化関数

int OnInit() {
  IndicatorSetInteger(INDICATOR_DIGITS, _Digits);
  ArrayInitialize(activePatterns, 0);
  return INIT_SUCCEEDED;
}

インディケーターの精度を設定し、配列を準備します。

パターン検出(各ティックで)

for (int i = limit - 3; i >= 0; i--) {

ローソク足をループして3本前を見ます。

if (isBullish(i+2) && isBearish(i+1) && isBullish(i))

最後の3本のローソク足がスパイクパターンに合致するかチェックします:緑-赤-緑。

double high = MathMax(MathMax(High[i], High[i+1]), High[i+2]);
double low = MathMin(MathMin(Low[i], Low[i+1]), Low[i+2]);
double entry = Open[i+1];

ボックスの高値/安値と、2本目のローソク足からエントリーレベルを抽出します。

PatternInfo *pattern = new PatternInfo;
pattern.time = Time[i];
pattern.entry = entry;
pattern.high = high;
pattern.low = low;
pattern.mitigated = false;

このパターンを作成してリストに追加します。

ボックスとラインを描画

string boxName = "Box_" + IntegerToString(Time[i]);
ObjectCreate(0, boxName, OBJ_RECTANGLE, 0, Time[i+2], high, Time[i], low);

3本のローソク足パターンから矩形(ボックス)を描画します。

string lineName = "EntryLine_" + IntegerToString(Time[i]);
ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry);

2本目のローソク足の始値から未来に向けてエントリーラインを描画します。

緩和チェック(各ティックで)

for (int p = 0; p < activePatterns.Total(); p++) {
  PatternInfo *pt = (PatternInfo*)activePatterns.At(p);

すべてのパターンをループします:

if (!pt.mitigated && Low[0] <= pt.entry)

現在の価格がエントリーレベルに達した場合:

pt.mitigated = true;
ObjectDelete("EntryLine_" + IntegerToString(pt.time));

元のロングラインを削除します。

ObjectCreate(0, "MitigatedLine_" + IntegerToString(pt.time), OBJ_TREND, 0, pt.time, pt.entry, Time[0], pt.entry);

緩和が起こった場所を示すショートラインを作成します。

// ヘルパー関数
// 強気/弱気のチェック:
bool isBullish(int i) {
  return Close[i] > Open[i];
}

bool isBearish(int i) {
  return Close[i] < Open[i];
}

このインディケーターはシンプルですが強力です:

  • 実際のスパイクの動きを検出
  • スマートマネーのエントリーを視覚化
  • 自動で緩和を検出

これにより、Boom 500やBoom 1000でライブテストが可能になります。


質問やシェアしたいことがあればコメントしてください。


リスト
コメント 0