双重随机滤波器敏锐离散分析策略通过检测离散分析指标(AO)与价格行动之间的背离,结合随机指标的超买超卖状态作为额外过滤条件,识别潜在的买入和卖出机会。
该策略由以下组成部分构成:
离散分析(AO)的计算:AO是5期和34期HL2的简单移动平均(SMA)的差值,用于识别市场动量的推拉动态。
随机指标:随机指标通过将收盘价与一定周期内的价格范围进行比较,来衡量动量及其潜在反转点。这里使用14期随机指标(stochK)及其3期SMA(stochD)识别超买超卖状态。
背离检测逻辑:当价格向一个方向移动(上或下)而AO向相反方向移动时,确定存在背离。这里使用了一个简化的背离检测逻辑。
随机指标过滤:信号通过随机指标状态进行过滤,要求卖出信号时为超买状态,买入信号时为超卖状态。
信号绘制:通过形状在图表上绘制经过滤确认的交易信号。
策略入场:多头入场信号确认时做多,空头入场信号确认时做空。
该策略结合了趋势following和反转识别的优点,可靠性较高。具体优势如下:
AO有助于识别市场中短期趋势的变化,与价格背离作为策略信号来源,可靠性较高。
随机指标的状态校验,避免在非超买超卖情况下产生虚假信号。
采用多种指标进行组合,综合判断市场状态,可靠性好。
策略入场信号清晰,操作规则简单,容易实施。
指标和参数选择合理,回测表现较好,实盘验证效果佳。
该策略也存在一些风险,主要包括:
背离信号判定过于简单,可能出现误判。可通过优化入场逻辑减少误判风险。
指标参数静态设置,不同市场条件下效果可能存在差异。可通过参数优化或自适应参数设置来改进。
随机指标过滤可能遗漏部分交易机会。可通过调整过滤条件以捕捉更多机会。
多空头仓位控制并不严格,无法很好控制亏损。可设置止损条件或优化仓位管理规则。
该策略可从以下几个方面进行进一步优化:
优化背离信号的识别逻辑,提高信号质量。
测试不同的参数组合,寻找最佳参数。
增加止损策略,严格控制单笔损失。
优化开仓规模和仓位管理策略。
引入机器学习算法,实现参数和规则的动态优化。
增加更多数据源,实现多因子驱动。
双重随机滤波器敏锐离散分析策略通过 AO 与价格背离信号结合随机指标过滤,实现了趋势捕捉和反转识别的有效结合。该策略操作规则清晰,回测表现良好,具有很强的实战价值。通过持续优化,可望获得更出色的模拟交易和实盘效果。
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Fixed AO Divergence Strategy", shorttitle="Fixed AO+Stoch", overlay=true) // Calculate Awesome Oscillator ao() => ta.sma(hl2, 5) - ta.sma(hl2, 34) aoVal = ao() // Stochastic Oscillator stochK = ta.stoch(close, high, low, 14) stochD = ta.sma(stochK, 3) // Simplify the divergence detection logic // For educational purposes, we will define a basic divergence detection mechanism // Real-world application would require more sophisticated logic // Detect bullish and bearish divergences based on AO and price action bullishDivergence = (close > close[1]) and (aoVal < aoVal[1]) bearishDivergence = (close < close[1]) and (aoVal > aoVal[1]) // Stochastic Overbought/Oversold conditions stochOverbought = (stochK > 80) and (stochD > 80) stochOversold = (stochK < 20) and (stochD < 20) // Filtered signals confirmedBullishSignal = bullishDivergence and stochOversold confirmedBearishSignal = bearishDivergence and stochOverbought // Plot signals plotshape(series=confirmedBullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Divergence", text="BUY") plotshape(series=confirmedBearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Divergence", text="SELL") // Strategy Entry if (confirmedBullishSignal) strategy.entry("Long", strategy.long, comment="Long Entry") if (confirmedBearishSignal) strategy.entry("Short", strategy.short, comment="Short Entry")