ダイナミック・チャネル・ブレークアウト戦略

作者: リン・ハーンチャオチャン開催日:2024年1月17日 15:29:55
タグ:

img

概要

ダイナミックチャネルブレイクアウト戦略は,トレンドフォロー戦略である.ドンチアンチャネル指標を使用してブレイクアウトの買いと売却価格を動的に決定し,ATR指標を組み合わせてストップ損失点を設定し,取引信号生成とストップ損失出口の完全な自動化を実現する.

原則

ドンチアン運河

ドンキアン・チャネル (Donchian Channel) は,過去の一定期間の最高値と最低値を計算することによって上下帯を形成する動的チャネル指標である.上下帯は過去n期間の最高値,下下帯は過去n期間の最低値である.ドンキアン・チャネルは変動範囲と市場の潜在的な傾向を反映する.

この戦略では,ドンキアン・チャネル期間を20日とする.価格が上線を突破すると,市場が上昇傾向に入っていることを示す買い信号が生成される.価格が下線を下回ると,市場が下線傾向に入っていることを示す販売信号が生成される.

ATR インディケーター

ATR指標は,最近の期間における特定の資産の平均変動幅を反映する平均的真の範囲の略語である.ATRは,市場の変動頻度の変化に自動的に適応し,最近の市場の実際の変動をより正確に反映することができる.

この戦略は,ストップ・ロスのポイントを計算するために20日間のATR指標を使用する.ATR値が大きいほど,市場の変動が大きくなり,設定されたストップ・ロスのポイントが遠くなる.これは,ストップ・ロスのポイントがあまりにも近くになり,わずかな市場変動によってノックアウトされないようにします.

シグナル生成

価格がドンチアン運河の中央線を上向きに突破すると,購入信号が生成される.価格が中央線を下向きに突破すると,販売信号が生成される.これは価格がこのチャネルを突破し,新たなラウンドのトレンドに入るようになったことを示唆する.

ATR指標によって計算されたストップ・ロースポイントと組み合わせると,ストップ・ロースポイントに達すると,リスク制御のためにポジションは積極的にストップアウトされます.

利点分析

自動的なトレンド追跡

ドンチアンチャネルは,トレンド追跡指標である.チャネル範囲を動的に調整することで,この戦略は自動的に市場のトレンドの変化を追跡し,それに応じて購入・販売シグナルを生成することができる.これは手動判断の主観性を回避し,取引シグナルをより客観的で信頼性のあるものにする.

双方向取引

戦略には長条と短条の両方が含まれ,双方向取引が可能である.これは戦略が適用できる市場環境を拡大し,上下トレンドの両方で収益性を可能にします.

リスク管理

ATR指標のストップ損失メカニズムは,単一の取引の損失を効果的に制御することができます.これは,戦略が高い確率のイベントで安定したポジティブなリターンを得ることを保証するために,定量的な取引にとって特に重要です.

リスク分析

罠 の 危険

ドンチアン・チャネル戦略は,罠にかかったリスクがある.価格が逆転してストップ・ロスのないチャネルに戻ると,重大な損失が発生する可能性がある.この戦略のATRストップ・ロスのメカニズムは,そのようなリスクを軽減するのに役立ちます.

トレンド逆転リスク

トレンド逆転の場合,ドンキアンチャネルインジケーターは誤った信号を生成する. 重要なトレンド逆転が発生した場合に盲目取引を避けるために,ユーザーは市場の状況に注意を払う必要があります. このようなリスクを軽減するためにトレンド判断指標を追加することができます.

パラメータ最適化リスク

ドンチアンチャネルとATRストップロスの周期パラメータの両方が最適化する必要がある.そうでなければ過剰な誤った信号が生成される可能性がある.この戦略のパラメータは経験的である.実際の取引では,歴史的なデータに基づいて最適化する必要があります.

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

トレンド判断を追加する

移動平均値などのトレンド判断指標が追加され,重要なトレンドターニングポイントで誤った信号を避けることができる.

パラメータ最適化

Donchian Channel と ATR パラメータを最適化して最適な組み合わせを見つけます.チャネルサイクルを適切に短縮することで,トレンドがより早く回転します.

価格パターンを追加する

信号の正確性を向上させ,不要な逆転取引を減らすために,キャンドルスタイクパターンや取引量の変化などの他の補助判断指標を組み合わせます.

結論

ダイナミックチャネルブレイクアウト戦略は,ドンチアンチャネル上下帯を通ってトレンド方向を特定し,取引信号を生成する.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)



もっと