大家好!今天想跟大家分享一个非常实用的工具——Theil_Sen指标。这是一个帮助我们估算数据点所绘制的趋势线的一种工具。通过对数值序列进行回归分析,我们可以得到一条估算出的回归线。
在使用这个指标时,我们可以选择不同类型的数据集,例如简单移动平均、指数移动平均、收盘价、最高/最低价等。这些数据会自动从MetaTrader图表中收集,您只需选择想要收集的数据类型即可。而且,它支持多种货币的分析,非常方便。
iTSlope(asymbol,timeframe,regperiod,adataset,rmp,rtc,slope,line_nickname,enable_text,ashift); //这是在你的EA中使用的主要函数。只需输入你的参数即可。 //手动交易者也可以直接使用此指标。

如往常一样,这个指标支持多种货币同时分析。我这里还包含了“BreakPoint”工具,虽然它并不一定是指标本身所需的。
接下来,让我们看看在横盘市场中趋势线的样子:


而在趋势市场中的趋势线则是这样的:

以下是一个示范的专家顾问代码:
//+------------------------------------------------------------------+ //| demo.mq4 | //| Copyright 2020, Everybody Software Corp. | //| https://anywhere.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, Everybody Software Corp." #property link "https://anywhere.com" #property version "1.00" #property strict #include <TheilSen_Indicator.mqh> #include <BreakPoint.mqh>//<--- 不必需 //+------------------------------------------------------------------+ //| 专家初始化函数 | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 专家去初始化函数 | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| 专家价格变动函数 | //+------------------------------------------------------------------+ void OnTick() { //---------这些变量最初是空的,但在下面使用iTSlop()后将包含数据。------// double slope=0;//回归线的斜率。 ENUM_TIMEFRAMES timeframe=0;//这是货币对的时间框架。0表示当前图表时间框架。 int regperiod=20,//回归周期。你想对多少根K线进行回归。 ashift=1;//你希望绘制回归线的K线偏移量。 string asymbol="",//这是你想进行计算的货币对。""表示当前货币对。 adataset="ema_close",//你想要进行回归的数据类型。 line_nickname="anything_goes_here", rmp,//计算出的"市场阶段",对市场的具体描述。 rtc;//计算出的"市场倾向",对市场的总体描述。 bool enable_text=true;//当设置为true时,当前图表上会显示文本数据。 iTSlope(asymbol,timeframe,regperiod,adataset,rmp,rtc,slope,line_nickname,enable_text,ashift);//单一货币 //if(rmp == "trending")BreakPoint("","",true,"rmp",rmp,"rtc",rtc,"asymbol",asymbol); } //+------------------------------------------------------------------+
特别感谢whroeder和其他帮助澄清这个概念的朋友们。