この戦略は,トレンド追跡のための強いトレンドにおけるブレイクアウト信号を捕捉するために,モメント指標と双方向追跡指標を組み合わせます.価格が上昇するときに長くなって,価格が低下するときに短くなります.これはトレンド追跡戦略カテゴリーに属します.
HiLoアクティベーターインジケータは,最高値と最低値の真ん中点を用いて中値を計算する.価格が中値を超えると,購入信号が生成される.価格が中値を下回ると,販売信号が生成される.
ADX (平均方向指数) は,トレンドの強さを測定するために使用される.ADX値が高くなるほど,トレンドが強くなる.この戦略は,信号をフィルタリングするために
方向指標DI+とDI-は,それぞれ上昇傾向と下落傾向の強さを表しています.この戦略は,間違った信号を避けるために強さを確認するためにDI+とDI-の
購入シグナルは,価格が中値を超えると,ADXが
この戦略は,初期ブレイクを把握し,トレンドを注意深く追跡するために,モメントとトレンドフォローする指標の利点を組み合わせます.厳格なトレンドフィルタ条件はまた,統合およびレンジング期間に間違った信号を避けるのに役立ちます.
この戦略は,インパクト指標のみを使用すると比較して,シグナルをフィルタリングし,収益性を向上させるためにトレンド強度評価を追加します.純粋なトレンドフォロー戦略と比較して,この戦略はブレイクアウト信号を通じてトレンドを早期に入力することができます.
全体的に見ると,戦略はトレンドをスムーズに追跡し,タイミングでエントリーとアウトリースを可能にし,統合に引っかかることを避け,トレンド逆転による損失を減らすことができます.
この戦略には,誤った信号を生む一時的な価格逆転によるいくつかのリスクがあります.また,ADXとDIの
ハイロ・アクティベーターのパラメータを調整して,ブレイクアウト範囲を拡大します.より多くの機会を掴むために,信号品質を犠牲にして ADX と DI の
ユーザーには,製品と市場環境の違いも注意すべきである.より高い
この戦略を最適化する主な方法は以下の通りです.
ハイロアクティベーター期間とトリガーレベルを調整して リスクとタイミングを バランスさせる
ADX 期間と
DI+とDI-の異なる
ストップ・ロスのレベルを持つストップ・ロスの戦略を追加し,単一の取引損失を制御します.
全体的な安定性を向上させるため,他の補助指標と組み合わせる.
この戦略は,強烈なトレンド中に信号を生成するために,勢いとトレンドフォローする指標の両方を考慮する. 傾向をスムーズに,密接にフォローする利点があり,初期のトレンド機会を把握するのに適しています. また,間違った信号やウィップソーによる損失を減らすための合理的なリスク制御能力を持っています. パラメータチューニングとストップロスの追加により,安定したパフォーマンスを達成できます. 異なる製品や市場に適合する汎用的なトレンド追跡戦略として,量子トレーダーからの注意と適用に値します.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true) // Parameters for the HiLo Activator length_ha = input(14, title="HiLo Activator Period") offset_ha = input(0, title="Offset") trigger_ha = input(1, title="Trigger for Buy/Sell") // Parameters for ADX adx_length = input(14, title="ADX Period", minval=1) adx_threshold = input(25, title="ADX Threshold") di_threshold = input(50, title="DI Threshold") // Parameter for choosing the number of candles for backtest backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1) // Function to get backtest data getBacktestData() => var float data = na if bar_index >= backtest_candles data := security(syminfo.tickerid, "D", close[backtest_candles]) data // HiLo Activator calculations ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2 // ADX calculations trh = high - high[1] trl = low[1] - low tr = max(trh, trl) atr = sma(tr, adx_length) plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0 minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0 smoothed_plus_dm = sma(plus_dm, adx_length) smoothed_minus_dm = sma(minus_dm, adx_length) di_plus = 100 * (smoothed_plus_dm / atr) di_minus = 100 * (smoothed_minus_dm / atr) dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus) adx = sma(dx, adx_length) // Buy and Sell signals based on HiLo Activator and ADX signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold // Plot HiLo Activator and ADX plot(ha, color=color.blue, title="HiLo Activator") plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset") plot(adx, color=color.purple, title="ADX") // Backtest strategy strategy.entry("Buy", strategy.long, when = signalLong) strategy.entry("Sell", strategy.short, when = signalShort) strategy.close("Buy", when = signalShort) strategy.close("Sell", when = signalLong) // Accuracy percentage var accuracy = 0.0 var totalTrades = 0 var winningTrades = 0 if (signalLong or signalShort) totalTrades := totalTrades + 1 if (signalLong and (not na(signalLong[1]) and (not signalLong[1]))) winningTrades := winningTrades + 1 if (signalShort and (not na(signalShort[1]) and (not signalShort[1]))) winningTrades := winningTrades + 1 accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0 // Plot accuracy percentage on the chart plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)