この戦略は,K線に基づくゲルト通道指標の設計で,価格が通路を突破して軌道上下を判断することで,トレンド追跡取引を実現する.この戦略は,中短線保有に適し,トレンドを効果的に追跡し,利益の潜在性が高い.
策略は,主に価格トレンドと潜在的サポートレジスタンスを判断するために,ゲルトチャネルを確立します.具体的には,策略は,まずK線のEMA平均線を計算し,その上にKeltnerDeviationの倍数のATR波幅を添加し,ゲルトチャネルを上下軌道として構築します.価格が上下軌道に突入するときに多入場を行い,下下軌道に突入するときに空入場を行い,トレンド追跡を実現します.さらに,策略は,価格が平均EMA線に突入するときにアクティブストップアウトを制御するためのcloseOnEMATouchパラメータを提供します.
この戦略の核心的な論理は,以下の3つの部分に集中しています.
ゲルター通路の指標を構成し,EMA平均線,ATR波幅,上下線を計算する.
入場信号の破綻を判断し,上下トレイルを多量化し,下下トレイルを空にする.
closeOnEMATouchのパラメータは,価格がEMAに達したときに止まるかどうかを制御します.
この3つの要素の組み合わせにより,通路指標に基づいたトレンド追跡取引戦略を実現します.
従来の移動式止損策と比較して,以下のような主な利点があります.
市場動向や方向性を効果的に追跡できる.
中間ショートラインは長期にわたってポジションを保持し,頻繁な取引を避けます.
変動要因を考慮したため,異常事態に対するフィルタリング効果がある.
リスク管理のための ストップダストメカニズムを提供
この戦略は,市場における大きなトレンドを正確に判断し,より大きな資金活用率を追求する量化トレーダーに適しています.
この戦略にはいくつかの利点があるものの,実際の取引には以下の主要なリスクがあります.
取引の急激な逆転が最大のリスクであり,ストップポイントを突破して大きな損失を招く可能性があります.
価格が通路内で波動する際には,止まり直して反転する傾向がある.
取引の頻度が高くなり,取引コストや滑り場損失が利益に影響する可能性があります.
これらのリスクを制御するために,適切なパラメータを調整して,通路範囲を合理化したり,価格変動が少ない取引品種を選択したり,適切なストップロスの距離を拡大することもできます.もちろん,最も重要なことは,市場の判断に十分な慎重さを保つことです.
この戦略のリスクを考えると,以下のような点でさらに最適化できます.
止損の方法の多様性を増やす. closeOnEMATouchは現在1つの止損方法しか提供していないが,他の補助的な止損指標を追加して,より全面的で3次元的なリスク管理を実現することができる.
パラメータ設定の最適化 ゲルト通路のパラメータ設定をよりスマートで適応的にするために,パラメータを最適化するためのより多くの自動化方法が導入できます.
ポジションコントロールの強化 資金管理モジュールの導入などで,撤収状況や市場変動率の動態に応じてポジションの調整が可能である.
フィルタリング条件を増やす.入場と止損の側面に追加のフィルタリング条件を設定することができ,誤った信号による不要な損失を避ける.
この戦略は,全体的に,指標チャネルに基づく典型的な中短線トレンド追跡戦略である. 単純な移動ストップ戦略と比較して,波動率要因によって一定のリスク調整機能を提供し,トレンドを効果的に追跡することができる.しかし,実盤では,逆転と震動のリスクを注意し,パラメータ最適化,ストップ方法の拡張,フィルタリング条件の追加などの手段によってさらに完善する必要がある.
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)
price = open
// build Keltner
keltnerLength = input(defval=20, minval=1, title="Keltner EMA Period Length")
keltnerDeviation = input(defval=2, minval=1, maxval=5, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation
buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)
if ( crossover(price, bottom))
strategy.entry("BUY", strategy.long, stop=bottom, comment="BUY")
if( crossover(price,EMA) and closeOnEMATouch )
strategy.close("BUY")
if ( crossunder(price, top))
strategy.entry("SELL", strategy.short, stop=top, comment="SELL")
if( crossunder(price, EMA) and closeOnEMATouch )
strategy.close("SELL")