トレンドを追うダイナミックチャネルブレイクアウト戦略


作成日: 2024-01-17 15:29:55 最終変更日: 2024-01-17 15:29:55
コピー: 1 クリック数: 671
1
フォロー
1617
フォロワー

トレンドを追うダイナミックチャネルブレイクアウト戦略

概要

ダイナミックチャネルブレイク戦略は,トレンド追跡戦略である.この戦略は,ドンチアンチャネル指標を使用して,ブレイクした買入と販売価格を動的に決定し,波動率ATR指標と組み合わせて,ストップ・ロスを設定し,取引シグナル生成とストップ・アウトの完全な自動化を実現する.

戦略原則

ドンチアン通路

ドンチアンチャネルは,過去一定周期の最高値と最低値を計算することによって上軌道と下軌道を形成するダイナミックチャネル指標である.上軌道は過去n周期の最高値であり,下軌道は過去n周期の最低値である.ドンチアンチャネルは,市場の波動範囲と潜在的傾向を反映する.

この戦略は,ドンチアンチャネル周期を20日とする.価格が上線を突破すると,買い信号が生まれ,上向きのトレンドに入ることを示す.価格が下線を突破すると,売り信号が生まれ,下向きのトレンドに入ることを示す.

ATR指標

ATR指数は,平均真の波幅の略で,特定の資産の最近の平均波動幅を反映します.ATRは,市場の波動頻度の変化に自動的に適応し,その結果,市場の最近の実際の波幅をより正確に反映します.

この戦略は,20日ATR指標を用いてストップ・ロスを計算する.ATR値が大きければ大きいほど,市場の変動が大きいので,設定したストップ・ロスは遠くなる.これは,ストップ・ロスがあまりにも近づいて,市場の小さな波動に打ちのめされるのを防ぐことができる.

戦略信号

価格がDonchianチャネルの中央線を上方から突破すると,買いのシグナルが生成され,価格がDonchianチャネルの中央線を下方から突破すると,売りのシグナルが生成されます. これは,価格がチャネルを突破し,新しいラウンドのトレンドに入ることを示すものです.

また,ATR指数で計算したストップポイントを組み合わせて,ストップポイントに達したときに積極的にストップを退出し,リスクをコントロールする.

優位分析

自動トレンド追跡

ドンチアンチャネル (Donchian channel) は,トレンド追跡指標である.この戦略は,チャネル範囲を動的に調整することで,市場のトレンドの変化を自動的に追跡することができ,その結果,買入と売却のシグナルを生成する.これは,人工判断の主観性を避け,取引シグナルを生成することをより客観的で信頼できるものにする.

双方の取引

策略は,多額の取引と短額の取引の両方を同時に行うルールを含み,双方向取引が可能である.これは,策略が適用される市場環境を拡張し,市場が上昇したり下落したりするときに利益を得ることができる.

リスク管理

ATR指標と組み合わせたストップ・ロスの仕組みは,単一取引の損失を効果的に制御できます.これは,定量取引において特に重要であり,戦略が高い確率のイベントで安定した正の利益を得ることを保証できます.

リスク分析

リスクを負う

Donchian通路戦略には一定の被套リスクがある.価格が逆転して通路に戻ると,止損しなければ大きな損失が生じます.この戦略はATR指標の止損メカニズムによってそのリスクを低減します.

トレンド反転リスク

トレンドが逆転するとき,ドンチアン通路指標は誤信号を生成する.ユーザは,市場状況に注意を払い,顕著なトレンドの逆転が来るときに盲目についていくのを避ける必要があります.この戦略には,トレンド判断指標などを加えることで,このリスクを軽減することができます.

パラメータ最適化のリスク

ドンチアン通路とATR停止の周期パラメータは,最適化テストが必要である.そうでなければ,誤り信号が過剰に発生する.この戦略では,経験パラメータが使用され,実盤では,歴史的データに基づいてパラメータの最適化が必要である.

最適化の方向

傾向を判断する

移動平均などのトレンド判断指標を添加することで,顕著なトレンド転換点で誤ったシグナルを生じないようにする.

パラメータ最適化

ドンチアンチャネルとATRパラメータを最適化して,最適なパラメータの組み合わせを見つける.チャネル周期を適切に短縮することで,トレンド転換をより早く捉える.

価格の形状と組み合わせた

K線形,取引量変化などの他の補助判断指標と組み合わせると,信号の正確性を高め,不必要な反転取引を減らすことができます.

要約する

ダイナミックチャネルブレイク戦略は,ドンチアンチャネルの上下軌道を経由してトレンドの方向を定着させ,取引信号を生成する.ATR指標と組み合わせたストップメカニズムによるリスク制御.この戦略は,高度な自動化があり,量化取引に適している.最適化スペースは,パラメータ選択の最適化,および他の補助指標と組み合わせた信号の正確性を向上させるものである.全体的に,この戦略は,市場の傾向を正確に判断し,強力な実用性を持っている.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na

Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when=((close < dcAverage) and  cross(close,dcAverage)) or ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)