資源の読み込みに... 荷物...

ダイナミック・ドンチアン・チャネルと単純な移動平均の組み合わせ 定量戦略

作者: リン・ハーンチャオチャン,日付: 2024-06-17 17時29分48秒
タグ:SMA

img

概要

この戦略は2つの技術指標:ドンキアンチャネルとシンプル・ムービング・アベア (SMA) を組み合わせます.価格はドンキアンチャネルの下帯を下に突破してSMA上を閉じるときにロングポジションを開きます.逆に,価格はドンキアンチャネル上帯を下に突破してSMA下を閉じるときにショートポジションを開きます.価格はドンキアンチャネル上帯に達するとロングポジションが閉まり,価格は下帯に達するとショートポジションが閉まります.この戦略は強いトレンドを持つ市場に適しています.

戦略原則

  1. ドンチアン運河の上下帯を計算します.上帯は過去 n 期間の最高値,下帯は過去 n 期間の最低値です.
  2. 単純な移動平均を計算する.SMAは過去 m 期間の閉盘価格の算術平均値である.
  3. ロング エントリー: ドンチアン・チャネルの下帯線を下回り,閉じる価格がSMA上下になるとロング・ポジションを開く.
  4. ショートエントリー: ドンチアン・チャネル上部帯を超えて,閉じる価格はSMAを下回るときにショートポジションを開く.
  5. ロング エクシート: ドンチアン・チャネルの上部帯に達するとロング・ポジションを閉じる.
  6. ショート エクシート: ドンチアン・チャネルの下帯に達するとショートポジションを閉じる.

戦略 の 利点

  1. 2つの市場要素:トレンドと波動性を組み合わせます.SMAはトレンドを捉え,ドンキアンチャネルは波動性を捉え,戦略はトレンド市場での引き下げ機会を掴むことができます.
  2. 明確な利益獲得条件は,利益を適時に固定するのに役立ちます.価格がそれぞれドンチアン運河の上位および下位帯に達すると,ロングとショートポジションが閉鎖され,トレンドが逆転する前に戦略が収益性の高い取引を終了することができます.
  3. 戦略には3つのパラメータのみがあります:ドンキアンチャネル周期,オフセット,およびSMA周期,これは最適化を簡素化します.

戦略リスク

  1. 頻繁な取引.この戦略は,ポジションエントリーと出口の頻度が高いため,高い取引コストのある市場で収益を損なう可能性があります.これは,エントリー条件を適度に緩和するか,時間枠を延長することによって緩和することができます.
  2. レンジバインド市場の不良パフォーマンス.傾向が不明である場合,戦略はより多くの損失を被る可能性があります.波動性指標は,レンジバインド市場を特定し,戦略を停止するために使用できます.
  3. パラメータ安定性は不十分である.最適なパラメータは,異なる機器や時間枠によって大きく異なる可能性があるため,パラメータ安定性が低下していることを示唆する.ライブパフォーマンスがバックテストと一致しない可能性がある.パラメータの強度を確認するために,サンプル外での広範なテストと感度分析が必要である.

戦略の最適化方向

  1. 他の指標と組み合わせたオプションのエントリー条件を追加する.例えば,DMIのADXがエントリーのための特定の値を超えることを要求するか,RSIが過剰販売ゾーンを出るときのみロングを入力する.これはエントリーの勝利率を改善することができます.
  2. ドンキアン・チャネルの固定線ではなく動的利益採取線を使用することで,利益を追跡する機能を実現します.例えば,ロングポジションの価格がドンキアン・チャネルの上部帯に達した後,ATRストップ・ロスラインまたはSARストップ・ロスラインでポジションを閉じるように切り替えます.
  3. ドンチアンチャネル期間を変動レベルに基づいて動的に調整する.高変動市場条件でドンチアンチャネル期間を短縮し,低変動市場条件で期間を延長する.これは異なる市場に適応するのに役立ちます.

概要

ダイナミック・ドンチアン・チャネルとシンプル・ムービング・平均コンビネーション戦略は,シンプルで使いやすい定量的な取引戦略の枠組みである.トレンドフォローと波動性ブレイクアウトの観点からエントリーと出口ロジックを構築し,強いトレンドを持つ楽器に適している.しかし,この戦略は頻繁にレンジバインド市場ではパフォーマンスが悪く,パラメータ強さは中等である.補助的なエントリー条件,ダイナミック・プロフィートテイキング,パラメータ自己適応メカニズムを導入することによって戦略の適応性と強さを向上させることができる.全体的に,この戦略は,より高度な定量的な戦略を作成するためにさらに修正および改善される基本的なフレームワーク戦略として機能することができる.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBK Donchian Channel Strategy", overlay=true)

// Inputs
donchian_period = input.int(20, title="Donchian Channel Period")
donchian_offset = input.int(1, title="Donchian Channel Offset")
sma_period = input.int(200, title="SMA Period")
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")
trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])

// Calculate indicators
donchian_upper = ta.highest(high, donchian_period)[donchian_offset]
donchian_lower = ta.lowest(low, donchian_period)[donchian_offset]
sma = ta.sma(close, sma_period)

// Plot indicators
plot(donchian_upper, color=color.red, title="Donchian Upper")
plot(donchian_lower, color=color.green, title="Donchian Lower")
plot(sma, color=color.blue, title="SMA")

// Helper function to check if within testing period
is_in_testing_period() => true

// Entry conditions
long_condition = low <= donchian_lower and close > sma
short_condition = high >= donchian_upper and close < sma

// Exit conditions
exit_long_condition = high >= donchian_upper
exit_short_condition = low <= donchian_lower

// Open long position
if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition)
    strategy.entry("Long", strategy.long)

// Close long position
if (is_in_testing_period() and exit_long_condition)
    strategy.close("Long")

// Open short position
if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition)
    strategy.entry("Short", strategy.short)

// Close short position
if (is_in_testing_period() and exit_short_condition)
    strategy.close("Short")

// Close all positions at the end of the testing period
if not is_in_testing_period()
    strategy.close_all()


関連性

もっと