この戦略は,チャネル帯の価格ブレイクを判断することによってトレンドを追跡するために,キャンドルスタックチャートのケルトナーチャネル指標に基づいて設計されています.この戦略は,中期保有ポジションに適しており,高利益の可能性のあるトレンドを効果的に追跡することができます.
この戦略の核心は,価格動向と潜在的なサポート/レジスタンスレベルを判断するためにケルトナーチャネルを構築することにある.具体的には,まずキャンドルスタイルのEMAラインを計算し,その後,ケルトナーディバイエーション×ATR波動性の距離で上下帯を追加してケルトナーチャネルを構築する.価格が下帯を超えると,ロングポジションが開かれる.価格が上帯を下に突入すると,トレンドに従うためにショートポジションが開かれる.さらに,戦略は,価格がEMAラインに触ると利益を得るか否かを制御するためのCloseOnEMATouchパラメータも提供している.
基本的な論理は3つの部分に 焦点を当てています
EMA,ATR波動性,上下帯の計算を含むケルトナーチャネル指標を構成する.
チャンネル帯のブレイクに基づいてエントリー信号を判断します.価格が下帯を超えるとロング,上帯を超えるとショートなどです.
価格がEMAラインに触れたときに利益を取るか否かを制御するために,closeOnEMATouchパラメータを入力します.
この3つの要素を組み合わせることで,チャネル指標に基づくトレンドフォロー戦略が実装されます.
伝統的な移動ストップ損失戦略と比較して,この戦略は以下の主な利点があります.
市場動向と一般的方向性を効果的に追跡できる.
比較的長い中期保有期間で,取引頻度が過度に高まることは避けられます.
不安定性を考慮すると,異常な市場状況に対して一定のフィルタリング効果があります.
ストップ・ロスを通してリスク管理メカニズムを提供します.
したがって,この戦略は,市場動向を正確に判断し,高い資本利用率を追求する定量的なトレーダーに非常に適しています.
この戦略は利点を有しているが,実際の取引ではいくつかの主要なリスクに直面している.
ストップ・ロストポイントに突入して大きな損失を起こす可能性があるため 最大のリスクは突然で暴力的なトレンド逆転です
価格がチャネル内で振動し,ストップロスを繰り返し引き起こす可能性があります.
高い取引頻度は,取引コストやスライドによる利益に深刻な影響を与える可能性があります.
これらのリスクを制御するために チャンネル範囲を合理的にするために パラメータを調整したり 価格変動が小さい製品を選択したり ストップ損失距離を適切に拡大したりできますが 最も重要なのは 市場を十分に慎重に判断する必要があります
潜在的リスクを考えると,次の側面で戦略をさらに最適化することができます:
ストップ・ロスの方法の多様性を高める.現在, CloseOnEMATouch 方法のみが提供されています.より包括的で多次元的なリスク管理のために,より多くの補助的なストップ・ロスの指標を導入することができます.
パラメータ設定を最適化する.より自動化された方法が導入され,ペラメータを最適化することで,ケルトナーチャネル設定がより知的で適応性が向上する.
ポジションのサイズ管理を追加します 資本管理モジュールを導入することで 引き下げや市場の変動に基づいて ポジションを動的に調整できます
フィルタリング条件を追加.間違った信号による不必要な損失を避けるために,入力と停止損失の両方により多くの補助フィルタを設定することができます.
概要すると,これはチャネル指標に基づく典型的な中期トレンドフォロー戦略である.単純な移動ストップ損失戦略と比較して,変動要因を通じて一定のリスク調整機能を提供し,利益を得るために効果的にトレンドを追跡することができる.しかし,ライブ取引では,反転と振動のリスクは依然として注意する必要がある.パラメータ最適化,ストップ損失方法の拡大,フィルタリング条件の追加は戦略のさらなる改善に役立ちます.
/*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")