マルチ期間ドンチャン指標トレンドフォローとダイバージェンス取引戦略

DC MA Trend momentum volatility SIGNAL
作成日: 2025-02-21 10:38:06 最終変更日: 2025-02-21 10:38:06
コピー: 0 クリック数: 448
2
フォロー
319
フォロワー

マルチ期間ドンチャン指標トレンドフォローとダイバージェンス取引戦略 マルチ期間ドンチャン指標トレンドフォローとダイバージェンス取引戦略

概要

この戦略は,多周期の唐津通道指標をベースにトレンド追跡システムを構築する.異なる時間周期の唐津通道突破を分析し,主トレンドと局所的なトレンドの配合関係を組み合わせて,視覚的に直感的なトレンド帯状のグラフを形成する.戦略は,トレンドの強さや弱さを示すために,色深さの浅い変化を使用し,緑の系は上昇傾向を表し,赤の系は下降傾向を表し,色深さは傾向がより顕著であることを示している.

戦略原則

戦略の核心は,ドンチアンチャネル (Donchian Channel) の指標に基づいてトレンド判断を行う.ドンチアンチャネルは,最高価格チャネルと最低価格チャネルで構成され,現在の価格とチャネルの位置との関係を比較してトレンド判断を行う.主に以下のいくつかの重要な構成要素を含む.

  1. 主なトレンド判断:20周期の唐通路を利用し,価格が上線を突破すると上線が形成され,下線を突破すると下線が形成される
  2. 局部トレンド判定:主動トレンドの枠組みでは,より短い周期の唐通路を使用して局部トレンドの方向を判定する
  3. トレンド帯状図: 10つの異なる周期の唐通路の組み合わせによってトレンド帯が形成され,色彩の深はトレンドの強さを反映する
  4. 取引シグナル: 主動向上がりで多項開設,主動向下がりで空券開設,トレンド逆転で平仓

戦略的優位性

  1. 傾向を客観的に判断する: 価格突破の傾向に基づいて判断し,主観的な判断による偏差を避ける
  2. 多周期確認: 異なる周期のトレンドを重ねて,トレンド判断の正確性を向上させる
  3. 視覚効果 直観:トレンドバンドの色の変化 直観的に市場の状態を示します
  4. 取引規則が明確:入場・出場シグナルが明瞭で,プログラム化が容易
  5. 適応性:取引品種の特性に合わせてパラメータを調整し,戦略のパフォーマンスを最適化

戦略リスク

  1. トレンド・リバース・リスク: トレンド・リバース・ポイントで大きなリターンが発生する可能性がある
  2. 横盤の振動は偽の信号を生む.
  3. パラメータの感受性: パラメータの異なる設定は,戦略の効果に大きく影響する
  4. スライドポイントの影響: 頻繁に取引する取引がスライドポイントの影響を受ける
  5. システムリスク:市場における突発的な出来事が大きな損失をもたらす可能性がある

戦略最適化の方向性

  1. トレンド強度フィルターを追加する:ADXなどのトレンド強度指標を導入し,弱いトレンド信号をフィルタリングする
  2. 最適化ストップ設定:ATRの動態に基づいてストップ位置を調整し,リスク管理能力を向上させる
  3. 取引量確認:取引量分析を組み合わせてトレンドの有効性を検証する
  4. 変動率の適応を導入する:市場の変動率の動的調整パラメータ
  5. ポジション管理の改善:トレンドの強さに基づいてポジションの規模を動的に調整する

要約する

この戦略は,多周期唐通路の革新的な適用によって,視覚効果が顕著で,論理が明確なトレンド追跡取引システムを構築している.戦略の核心的な優点は,複雑なトレンド分析プロセスを視覚化することで,トレーダーが市場動向を直感的に把握することを容易にすることである.合理的なパラメータ最適化とリスク管理措置によって,この戦略は,実戦での良い応用価値を有している.トレーダーは,実盤の適用時に市場環境の選択に注意し,自身のリスク承受能力と組み合わせてポジション管理を行うことを推奨している.

ストラテジーソースコード
/*backtest
start: 2024-06-12 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Donchian Trend Ribbon Strategy", shorttitle="DonchianTrendRibbonStrat", overlay=true, precision=0)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Parameters
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dlen = input.int(defval=20, title="Donchian Channel Period", minval=10)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Helper function to determine color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f_color(mainTrend, localTrend) =>
    // mainTrend = 1 => uptrend, -1 => downtrend
    // localTrend = 1 => local uptrend, -1 => local downtrend
    // Return color based on whether local trend aligns with the main trend
    color c = na
    if mainTrend == 1
        c := localTrend == 1 ? color.new(color.lime, 0) : color.new(color.lime, 60)
    else if mainTrend == -1
        c := localTrend == -1 ? color.new(color.red, 0) : color.new(color.red, 60)
    else
        c := na
    c

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannel - determines main trend (1 or -1)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannel(len) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannelalt - determines local trend and returns color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannelalt(len, maintrend) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])
    f_color(maintrend, tr)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Calculate main trend
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maintrend = dchannel(dlen)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Plotting the Donchian Trend Ribbon
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
plot( 5,  color=dchannelalt(dlen - 0, maintrend),  style=plot.style_columns, histbase= 0)
plot(10, color=dchannelalt(dlen - 1, maintrend),   style=plot.style_columns, histbase= 5)
plot(15, color=dchannelalt(dlen - 2, maintrend),   style=plot.style_columns, histbase=10)
plot(20, color=dchannelalt(dlen - 3, maintrend),   style=plot.style_columns, histbase=15)
plot(25, color=dchannelalt(dlen - 4, maintrend),   style=plot.style_columns, histbase=20)
plot(30, color=dchannelalt(dlen - 5, maintrend),   style=plot.style_columns, histbase=25)
plot(35, color=dchannelalt(dlen - 6, maintrend),   style=plot.style_columns, histbase=30)
plot(40, color=dchannelalt(dlen - 7, maintrend),   style=plot.style_columns, histbase=35)
plot(45, color=dchannelalt(dlen - 8, maintrend),   style=plot.style_columns, histbase=40)
plot(50, color=dchannelalt(dlen - 9, maintrend),   style=plot.style_columns, histbase=45)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Trading Logic (STRATEGY)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool goLong  = (maintrend == 1)
bool goShort = (maintrend == -1)

// Entry signals
if goLong
    strategy.entry("Long", strategy.long)

if goShort
    strategy.entry("Short", strategy.short)

// Close positions when trend changes
if strategy.position_size > 0 and goShort
    strategy.close("Long")

if strategy.position_size < 0 and goLong
    strategy.close("Short")