ダブルドンキアンチャネルブレイクアウト戦略は,ドンキアンチャネルをベースとしたブレイクアウト取引戦略である. 速く,ゆっくりとドンキアンチャネルを使用して,長,短の取引信号を構築する. 価格がスローチャネルを突破すると,長または短ポジションを開く. 価格が高速チャネルを突破すると,ポジションを閉じる. 戦略はまた,利益とストップ損失条件を設定する.
ドンチアン・チャネル・ブレークアウト戦略は 2つのパラメータに基づいていますゆっくりしたドンキアン運河期そして急速なドンキアン運河期戦略はまず ドンチアン運河の上下帯を計算します
ロングエントリー信号は上部帯の上の突破と波動性は 限界値を超えていますショートエントリー信号は下の帯以下に分割と波動性は 限界値を超えています.
ロングストップ・ロスの出口信号は下の帯以下に分割ショートストップ損失出口信号は上部帯の上の突破.
戦略はまた,利益を得る脱出条件.デフォルトの取利益比は2%,つまり,価格変動が2%に達すると取利益の半分のポジションです.
ドンチアン・チャネル・ブレイクアウト戦略には以下の利点があります
ダブルチャネルデザインは,より長い時間枠とより短い時間枠の両方のトレンド信号を捉えることができ,より正確なエントリを可能にします.
波動性条件は,レンジ・バインド市場での頻繁な取引を避けます.
全面的な利益とストップ損失の設定は 部分的な利益を固定し 損失を削減します
シンプルで明快な戦略論理 分かりやすく実行できます
パーソナライズ可能なパラメータは,異なる製品と取引の好みに適しています.
ドンチアン・チャネル・ブレークアウト戦略には リスクもあります
双チャネル設計は敏感で,誤った信号を生成することができる.より広いチャネルまたは調整された変動パラメータは誤った信号を減少させる可能性がある.
不安定な市場では,ストップ・ロスは頻繁に発生する可能性があります.取引数に制限を設けるか,ストップ・ロスの範囲を広げることを検討してください.
固定的な割引利益は利益を最大化することができません.最適な割引利益価格設定のために動的または手動的介入を検討してください.
実際の取引結果はバックテストの期待とは異なる場合があります.必要に応じて徹底的な検証とパラメータ調整が必要です.
二重ドンチアンチャネルブレークアウト戦略は,いくつかの側面で最適化することができます:
最適なパラメータを見つけるために 周期の組み合わせをテストします
ATRのような変動指標を試して 最も安定した指標を見つけます
トレンド終了時の損失を避けるためにエントリー数を制限します
ダイナミックで利益を得て 単一の取引で利益を得るのです
記入をフィルタリングし,精度を向上させるために他の指標を組み込む,例えばボリューム.
資金管理モデルを最適化し リスク管理を向上させるため 固定分数のポジションのサイズを調整します
結論として,ダブルドンチアンチャネルブレイクアウト戦略は,トレンドフォロー戦略の優れた方法です.トレンド識別と逆転保護の両方を組み合わせています.パラメータ最適化とルール精製により,ほとんどの製品と市場条件で利益を得ることができます.戦略はシンプルで実践的です.量的なトレーダーのために学ぶ価値があり,適用できます.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) // Donchian Channels slowLen = input.int(50, title="Slow Donchian", group = "Conditions") fastLen = input.int(30, title="Fast Donchian", group = "Conditions") // Volatility Calculated as a percentage volatility = input.int(3, title="Volatility (%)", group = "Conditions") // Long positions long = input.bool(true, "Long Position On/Off", group = "Strategy") longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // Short positions short = input.bool(true, "Short Position On/Off", group = "Strategy") shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // First take profit point for positions TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy") // Slow Donchian Calculated ubSlow = ta.highest(high, slowLen)[1] lbSlow = ta.lowest(low, slowLen)[1] // Fast Donchian Calculated ubFast = ta.highest(high, fastLen)[1] lbFast = ta.lowest(low, fastLen)[1] // Plot Donchian Channel for entries plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") // This calculation, the strategy does not open position in the horizontal market. fark = (ubSlow - lbSlow) / lbSlow * 100 // Take profit levels longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Code long trading conditions longCondition = ta.crossover(close, ubSlow) and fark > volatility if longCondition and long == true strategy.entry("Long", strategy.long) // Code short trading conditions shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if shortCondition and short == true strategy.entry("Short", strategy.short) // Determine long trading conditions if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close_all("Close All") // Determine short trading conditions if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close_all("Close All") // Take Profit Long if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) // Take Profit Short if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)