看涨尖峰模式检测
三条蜡烛模式:
第一根蜡烛:绿蜡烛,体量大(看涨尖峰)。
第二根蜡烛:红蜡烛(回调)。
第三根蜡烛:绿蜡烛,体量大(再次看涨尖峰)。
当这个模式出现时,就会形成一个区域。
区域的创建
从这三根蜡烛的高点和低点绘制一个蓝色矩形。
在第二根蜡烛的开盘价画一条青绿色水平入场线。
这条线会延伸到未来,直到价格回到这里。

输入参数解析
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))
// 检查最后三根蜡烛是否符合尖峰模式:绿-红-绿