ダブルドンチャンチャネルブレイクアウト戦略


作成日: 2024-02-21 11:38:48 最終変更日: 2024-02-21 11:38:48
コピー: 0 クリック数: 971
1
フォロー
1617
フォロワー

ダブルドンチャンチャネルブレイクアウト戦略

概要

ダブルドンチアンチャネルブレークアウト戦略 (Dual Donchian Channel Breakout Strategy) は,ドンチアンチャネルをベースにしたブレークアウト取引戦略である.それは,高速と遅い2つのドンチアンチャネルを使用して多頭と空頭取引信号を構築する.価格がスローチャネルを突破するとポジションを余額に開くか空にするか,価格が高速チャネルを再び突破するとポジションを平にする.この戦略は,同時にストップとストップ・ロスの条件を設定する.

戦略原則

ドンチアン通路の突破策は2つのパラメータに基づいています.ゆっくりとしたドンキアン通路周期そして急速ドンチアン通路周期┃ 戦略は,まず,ドンキアン通路の2つの上下線を計算する。

  • 遅いドンキアン経路周期は,50K線をデフォルトで,より長期の傾向を反映している.
  • 急速なドンチアン通路周期は,より短時間のトレンド変化を反映した30K線をデフォルトで想定する.

複数の入口信号は価格が上昇するそして値下がりよりも大きな変動率空飛ぶ信号は価格が急落するそして値下がりよりも大きな変動率

複数のストップ・ロスト・平衡のシグナルが価格再開突破した空気ストロップ平仓シグナルは価格再開突破した

この戦略はストップ退出条件: 退出条件 退出条件 退出条件 退出条件 退出条件 退出条件

優位分析

ドンチアン通路の突破策には以下の利点があります.

  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)