如何创建简单趋势检测算法的示例
市场走势是市场的当前状态,可以是看涨、横盘或看跌。要想知道选择哪种策略,是逆向操作还是趋势跟踪,能够检测出当前的市场走势非常重要。本文介绍了一种创建和思考走势检测算法的方法。
市场的趋势是其当前状态,可分为:
看涨趋势:市场倾向于创出更高的高点,这意味着总体方向是向上的。
横盘整理:市场倾向于在既定区域内波动。
看跌趋势:市场倾向于降低低点,这意味着总体方向是向下的。
许多工具都试图检测趋势,其中大多数确实给出了答案,但我们不能说我们真的可以预测下一个状态。解决这个问题的最佳方法是假设当前状态将继续,并在任何反应中进行交易,最好是朝着趋势的方向进行交易。例如,如果欧元兑美元高于其移动平均线并形成更高的高点,那么在买入之前等待下跌并假设看涨状态将继续,也称为趋势跟踪策略。
让我们考虑一个 200 周期的移动平均线以及相对于时间的高点和低点的位置作为市场环境检测算法的候选指标。我们将通过分配分数来进行这个过程:
如果当前收盘价高于200周期移动平均线,且当前收盘价高于13个周期前的收盘价,当前高点高于8个周期前的高点,且当前低点高于5个周期前的低点,则得分为1.00,表示强势牛市。
如果当前收盘价低于200周期移动平均线,且当前收盘价低于13个周期前的收盘价,当前高点低于8个周期前的高点,且当前低点低于 5 周期前的低点,则得分为 -1.00,表示强势熊市。
在这两者之间,我们设置了中间分值(如后面的代码所示),范围从-1.00到1.00,增量为0.25。
这样我们就得到了一个范围从-1.00到1.00的指标。我们将采用该指标的13周期移动平均线来平滑指标值。现在,我们有简单的趋势检测器,我们可以用它来检查当前的市场状态。请看下面的标准普尔500指数图表。
标准普尔500指数图表
当指标高于红色零线并接近 1.00 时,市场处于强劲的上升趋势,当指标低于零线并接近 -1.00 时,市场处于强劲的下降趋势。Pine 脚本中的代码如下:
// 本源代码受 Mozilla 公共许可证 2.0 条款的约束,网址为 https://mozilla.org/MPL/2.0/
// © Sofien-Kaabar
//@version=5
indicator("Simple Regime Detector")
var float regime = 0
if close > ta.sma(close, 200) and close > close[13] and high > high[8] and low > low[5]
regime := 1
if close > ta.sma(close, 200) and close > close[13] and high > high[8] and low < low[5]
regime := 0.75
if close > ta.sma(close, 200) and close > close[13] and high < high[8] and low < low[5]
regime := 0.5
if close > ta.sma(close, 200) and close < close[13] and high < high[8] and low < low[5]
regime := 0.25
if close < ta.sma(close, 200) and close < close[13] and high < high[8] and low < low[5]
regime := -1
if close < ta.sma(close, 200) and close < close[13] and high < high[8] and low > low[5]
regime := -0.75
if close < ta.sma(close, 200) and close < close[13] and high > high[8] and low > low[5]
regime := -0.5
if close < ta.sma(close, 200) and close > close[13] and high > high[8] and low > low[5]
regime := -0.25
hline(1, color = color.black)
hline(-1, color = color.black)
plot(ta.sma(regime, 10), color = color.green)
hline(0, color = color.red)
下一张图表显示的是美元兑日元,其中看涨趋势明显占主导地位,并且已被指标提前检测到。同样可见的是,该指标现在正在接近零线,这表明了一种犹豫不决的立场和未经证实的看跌状态。
美元兑日元走势图
我们也可以使用背离来衡量这个指标,但必须满足更复杂的条件,这不在本文讨论范围之内。这个趋势检测指标绝不是一个现成的衡量标准,它只是向您展示市场趋势的思维方式。