指标名称:趋势通道
版本:MT4-MT5 ver. 1.06
趋势通道 是一个 MetaTrader 指标,专为检测并在图表上标记根据交易者偏好识别出的通道。它利用阴阳烛图的高低点识别并过滤出成对的平行线,仅保留这些成对线进行进一步分析。这些通道可以根据交易者的策略用于区间交易或突破交易,并能探测到上升、下降或水平通道。该指标适应不同宽度和周期的通道,可通过输入参数调整探测灵敏度。当检测到新通道时,可通过声音、视觉及邮件示警通知用户。该指标适用于 MT4 和 MT5 平台。
参数
- -Threshold (默认 = 0.007):控制阴阳烛的高低点与通道线的最大偏差,以价格范围的乘数形式表示。数值越大,探测到的通道越多。
- -MinBars (默认 = 10):定义通道中阴阳烛的最小数量,数值较小时可探测较短通道。
- -MaxBars (默认 = 150):定义通道中阴阳烛的最大数量,数值较大时可探测较长通道。
- -Symmetry (默认 = 0.25):控制通道线对称性的参数,1 表示完全对称,0 则无对称要求。数值越低,探测到的通道越多。
- -PairMatchingRatio (默认 = 0.7):定义通道上下线匹配的最低比率,1 为完美匹配,0 为无匹配要求。
- -AngleDifference (默认 = 0.0007):通道线间的最大角度差,以价格范围的乘数形式表示。
- -NamePrefix (默认 = “LF-“):Channel Pattern Detector 创建的图表对象的名称前缀。
- -LookBack (默认 = 150):指标检查的阴阳烛数量,数值较大可探测更长的通道,但会降低计算性能。
- -ColorSupportUp (默认 = clrLimeGreen):上升通道下线的颜色。
- -ColorSupportDown (默认 = clrRed):下降通道下线的颜色。
- -ColorResistanceUp (默认 = clrGreen):上升通道上线的颜色。
- -ColorResistanceDown (默认 = clrMagenta):下降通道上线的颜色。
- -EmailAlert (默认 = false):若设置为 true,探测到新通道时会发送电子邮件示警。
- -SoundAlert (默认 = false):若设置为 true,探测到新通道时会发出声音示警。
- -VisualAlert (默认 = false):若设置为 true,探测到新通道时会在 MetaTrader 上发出视觉示警。
该指标在同时监控多个图表的情况下非常有价值。虽然指标能及时提供通道的示警,具体如何利用这些通道进行交易则需要交易者自行决定。
完整代码展示:
//+——————————————————————+
//| 趋势通道.mq4 |
//| Copyright © 2009-2024, http://www.QChaos.com |
//| https://www.qchaos.com/ |
//+——————————————————————+
property copyright "Copyright © 量化混沌, http://www.qchaos.com"
property link "https://www.qchaos.com"
property version "1.06"
property description "———————————————"
property description "EA、指标公式分享"
property description "EA、指标编写业务承接"
property description "———————————————"
property description "更多资源,关注公众号:量化程序"
property description "微 信:QChaos001"
property description "手机号:134-8068-5281"
property description "———————————————"
include "iChartPatternDetector.mqh"
input double Threshold = 0.007; // Threshold (as multiplier of (Highest – Lowest) @ LookBack)
input int MinBars = 10; // MinBars (minimum number of bars for a line)
input int MaxBars = 150; // MaxBars (maximum number of bars for a line)
input double Symmetry = 0.25; // Symmetry (symmetry coefficient for middle point location. 1 – maximum symmetry, 0 – minimum.)
input double PairMatchingRatio = 0.7; // PairMatchingRatio (how equal should be the lines’ length for them to count as pair? 1 – same length, 0 – any length.)
input double AngleDifference = 0.0007; // AngleDifference (maximum angle difference for channel lines. As multiplier of (Highest – Lowest) @ LookBack.)
input string NamePrefix = "LF-";
input int LookBack = 150; // LookBack (how many bars to look back?)
input color ColorSupportUp = clrLimeGreen;
input color ColorSupportDown = clrRed;
input color ColorResistanceUp = clrGreen;
input color ColorResistanceDown = clrMagenta;
input bool EmailAlert = false;
input bool SoundAlert = false;
input bool VisualAlert = false;
CChartPatternDetector* CPD;
void init()
{
Comment("ChannelPatternDetector");
CPD = new CChartPatternDetector(PairMatchingRatio, LookBack, NamePrefix, ColorSupportUp, ColorSupportDown, ColorResistanceUp, ColorResistanceDown, EmailAlert, SoundAlert, VisualAlert);
}
void deinit()
{
CPD.DeleteObjects();
delete CPD;
Comment("");
}
int start()
{
int limit = Bars;
int IC = IndicatorCounted();
if (IC >= 0) limit = Bars – IC – 1;
// Launches only on new bars. Does not use latest (current) bar in calculations.
if (limit > 0)
{
CPD.FindLines(Threshold, MinBars, MaxBars, Symmetry, limit);
CPD.FilterPairs();
CPD.FilterChannels(AngleDifference);
}
return(0);
}
//+——————————————————————+