首页 技术指标 帖子

Boom指数尖峰模式 - MetaTrader 5 指标解析

附件
61749.zip (1.79 KB, 下载 0次)

看涨尖峰模式检测

  • 三条蜡烛模式:

    • 第一根蜡烛:绿蜡烛,体量大(看涨尖峰)。

    • 第二根蜡烛:红蜡烛(回调)。

    • 第三根蜡烛:绿蜡烛,体量大(再次看涨尖峰)。

  • 当这个模式出现时,就会形成一个区域

区域的创建

  • 从这三根蜡烛的高点和低点绘制一个蓝色矩形

  • 在第二根蜡烛的开盘价画一条青绿色水平入场线

  • 这条线会延伸到未来,直到价格回到这里。


输入参数解析

mq5
input color BoxColor = clrBlue; // 三蜡烛模式框的颜色
input color EntryLineColor = clrLime; // 入场线的颜色
input ENUM_LINE_STYLE EntryLineStyle = STYLE_SOLID; // 入场线的样式
input int BoxWidth = 2; // 矩形边框的宽度
input int EntryLineWidth = 2; // 入场线的宽度
input int EntryLineLength = 200; // 入场线延伸的长度
这些输入参数让你可以完全控制矩形和入场线的样式。

核心思想

我们寻找一个三蜡烛的看涨模式

1. 第一根蜡烛 – 强烈看涨(尖峰)

2. 第二根蜡烛 – 看跌回撤

3. 第三根蜡烛 – 再次强烈看涨尖峰

当这个模式出现时,我们绘制:

- 一个包围模式的矩形

- 在第二根蜡烛的开盘价处画一条水平线(入场点)

一旦价格回到这条线(“缓和”),我们就停止绘制它。

数据结构

struct PatternInfo {
    datetime time; // 模式的时间
    double entry; // 入场价格(第二根蜡烛的开盘价)
    double high; // 三根蜡烛的最高点
    double low; // 三根蜡烛的最低点
    bool mitigated; // 价格是否回到了入场水平?
};

CArrayObj activePatterns;

我们使用结构体 PatternInfo 来跟踪每一个有效模式,并存储在数组中。这有助于避免重复处理。

初始化函数

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

我们设置指标精度并准备我们的数组。

模式检测(每个价格波动时)

for (int i = limit - 3; i >= 0; i--) {
    // 循环检查三根蜡烛
if (isBullish(i + 2) && isBearish(i + 1) && isBullish(i))
    // 检查最后三根蜡烛是否符合尖峰模式:绿-红-绿
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];
// 提取矩形的高低点和第二根蜡烛的开盘价
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);
// 从三根蜡烛模式绘制矩形
string lineName = "EntryLine_" + IntegerToString(Time[i]);
ObjectCreate(0, lineName, OBJ_TREND, 0, Time[i], entry, Time[i] + PeriodSeconds() * EntryLineLength, entry);
// 从第二根蜡烛的开盘价向前绘制入场线

缓和检查(每个价格波动时)

// 循环检查所有模式
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)