この戦略は,1998年9月にStock & Commodities誌の技術分析に掲載された"Trading the Trend"の記事でアンドリュー・アブラハムが提示したアイデアに基づいた改良されたデザインで,株価の動向を動的に追跡し,それに応じて取引シグナルを生成するために使用されます.
この戦略は,まず過去21日間の平均値の真値範囲を基準値として計算し,その後過去21日間の最高値と最低値を計算し,それに応じてチャネルの上限と下限を設定する.チャネルの上限は21日間の最高値マイナス平均値の3倍に設定され,下限は21日間の最低値プラス平均値の3倍に設定される.閉値がチャネルの上限を超えると,それは売り圧力信号である.閉値がチャネルの下限値を下回ると,それは買い信号である.誤ったシグナルをフィルタリングするために,21期指数平均値も計算され,閉値が元の移動平均値と同じ方向でチャネルの限界を突破するときにのみ実際の取引信号が生成される.また,戦略は,短期間と長期間を逆転させるための逆入力信号も実装する.
この戦略の最大の利点は,価格動向を動的に追跡し,それに応じて取引シグナルを生成できるということです.固定パラメータを持つ移動平均戦略と比較して,価格変化の傾向をより良く把握できます.さらに,チャネルの確立は,最高値と最低値のみに基づいてチャネルの制限を設定する欠点を回避し,真の範囲を組み込むことができます.チャネルの上限と下限の変動範囲も非常に合理的で,誤ったブレイクを一定程度回避します.逆パラメータのカスタマイズ可能性は,戦略の柔軟性を高めます.
この戦略には2つの主なリスクがあります.一つは,取引信号の増加によって引き起こされる過剰取引のリスクであり,もう一つは,パラメータ設定が不適切である場合から生じるリスクです.この戦略は動的パラメータを使用しているため,取引信号は伝統的な移動平均戦略よりも頻繁に発生し,一定のレベルの過剰取引リスクを引き起こす可能性があります.また,パラメータが正しく設定されていない場合,例えば時間期間が短すぎたり,チャネル制限値が小さすぎたりすると,誤った信号も増加し,リスクが増加します.
リスクを制御するために,パラメータは,より長い時間期間を選択し,チャネル上限と下限の制約を適度に緩和することによって適切に調整することができます.単一の損失を制御するためにストップ損失戦略も検討できます.
この戦略の最適化にはまだ大きな余地があります.例えば,RSIやKDなどの他のフィルタリング指標は,偽のブレイクアウトを避けるために検討することができます.機械学習方法も,パラメータを自動的に最適化するために試すことができます.また,最適なパラメータ値は,異なる株式や市場環境によって異なる可能性があります.したがって,戦略の安定性を向上させるために,株や市場の特徴に基づいて最適なパラメータを動的に選択するためのパラメータ最適化メカニズムの一組を策定することも考えることができます.
一般的に,これは非常に実践的なトレンドトラッキング戦略である.従来の移動平均戦略と比較して,より柔軟で知的で,価格変化の傾向を動的に把握することができる.適切なパラメータチューニングにより,取引シグナルの品質は比較的高く,良いリターンを得ることができる.この戦略のパフォーマンスは,後の最適化によってさらに向上することが期待される.ライブ取引とアプリケーションで検証する価値があります.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 10/10/2018 // This is plots the indicator developed by Andrew Abraham // in the Trading the Trend article of TASC September 1998 // It was modified, result values wass averages. //////////////////////////////////////////////////////////// strategy(title="Trend Trader AVR Backtest", overlay = true) Length = input(21, minval=1), LengthMA = input(21, minval=1), Multiplier = input(3, minval=1) reverse = input(false, title="Trade reverse") avgTR = wma(atr(1), Length) highestC = highest(Length) lowestC = lowest(Length) hiLimit = highestC[1]-(avgTR[1] * Multiplier) loLimit = lowestC[1]+(avgTR[1] * Multiplier) ret = 0.0 ret := iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0))) nResMA = ema(ret, LengthMA) pos = 0 pos := iff(close < nResMA, -1, iff(close > nResMA, 1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nResMA, color= blue , title="Trend Trader AVR")