ドンチアン運河の2つの脱出戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-21 11時38分48秒
タグ:

img

概要

ダブルドンキアンチャネルブレイクアウト戦略は,ドンキアンチャネルをベースとしたブレイクアウト取引戦略である. 速く,ゆっくりとドンキアンチャネルを使用して,長,短の取引信号を構築する. 価格がスローチャネルを突破すると,長または短ポジションを開く. 価格が高速チャネルを突破すると,ポジションを閉じる. 戦略はまた,利益とストップ損失条件を設定する.

戦略原則

ドンチアン・チャネル・ブレークアウト戦略は 2つのパラメータに基づいていますゆっくりしたドンキアン運河期そして急速なドンキアン運河期戦略はまず ドンチアン運河の上下帯を計算します

  • デフォルトのスロードンキアンチャネル期間は50バーで,長期的な傾向を反映しています.
  • デフォルトの高速ドンキアンチャネル期間は30バーで,短期的なトレンド変化を反映しています.

ロングエントリー信号は上部帯の上の突破波動性は 限界値を超えていますショートエントリー信号は下の帯以下に分割波動性は 限界値を超えています.

ロングストップ・ロスの出口信号は下の帯以下に分割ショートストップ損失出口信号は上部帯の上の突破.

戦略はまた,利益を得る脱出条件.デフォルトの取利益比は2%,つまり,価格変動が2%に達すると取利益の半分のポジションです.

利点分析

ドンチアン・チャネル・ブレイクアウト戦略には以下の利点があります

  1. ダブルチャネルデザインは,より長い時間枠とより短い時間枠の両方のトレンド信号を捉えることができ,より正確なエントリを可能にします.

  2. 波動性条件は,レンジ・バインド市場での頻繁な取引を避けます.

  3. 全面的な利益とストップ損失の設定は 部分的な利益を固定し 損失を削減します

  4. シンプルで明快な戦略論理 分かりやすく実行できます

  5. パーソナライズ可能なパラメータは,異なる製品と取引の好みに適しています.

リスク分析

ドンチアン・チャネル・ブレークアウト戦略には リスクもあります

  1. 双チャネル設計は敏感で,誤った信号を生成することができる.より広いチャネルまたは調整された変動パラメータは誤った信号を減少させる可能性がある.

  2. 不安定な市場では,ストップ・ロスは頻繁に発生する可能性があります.取引数に制限を設けるか,ストップ・ロスの範囲を広げることを検討してください.

  3. 固定的な割引利益は利益を最大化することができません.最適な割引利益価格設定のために動的または手動的介入を検討してください.

  4. 実際の取引結果はバックテストの期待とは異なる場合があります.必要に応じて徹底的な検証とパラメータ調整が必要です.

オプティマイゼーションの方向性

二重ドンチアンチャネルブレークアウト戦略は,いくつかの側面で最適化することができます:

  1. 最適なパラメータを見つけるために 周期の組み合わせをテストします

  2. ATRのような変動指標を試して 最も安定した指標を見つけます

  3. トレンド終了時の損失を避けるためにエントリー数を制限します

  4. ダイナミックで利益を得て 単一の取引で利益を得るのです

  5. 記入をフィルタリングし,精度を向上させるために他の指標を組み込む,例えばボリューム.

  6. 資金管理モデルを最適化し リスク管理を向上させるため 固定分数のポジションのサイズを調整します

結論

結論として,ダブルドンチアンチャネルブレイクアウト戦略は,トレンドフォロー戦略の優れた方法です.トレンド識別と逆転保護の両方を組み合わせています.パラメータ最適化とルール精製により,ほとんどの製品と市場条件で利益を得ることができます.戦略はシンプルで実践的です.量的なトレーダーのために学ぶ価値があり,適用できます.


/*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)

もっと