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


作成日: 2023-09-19 21:47:41 最終変更日: 2023-09-19 21:47:41
コピー: 1 クリック数: 823
1
フォロー
1617
フォロワー

概要

この戦略は,トンチャンチャネル指標をベースに,価格突破チャネル上下軌道を取引シグナルとして取り,stock/futures/crypto/forexなどの品種のトレンド追跡操作を実現し,中長線保有のトレンド突破戦略に属します.

戦略原則

  1. 与えられた周期 (例えば20日) の最高値と最低値を計算して,トンヒアン通路の上線と下線を得る.

  2. 通路中位線は上下軌道の平均値である。上軌道の突破は傾向転換多信号,下軌道の突破は傾向転空信号である。

  3. 価格の収束が軌道上を突破すると,トレンドとして判断し,追加入場を行う.

  4. 価格が中位線を下回ったとき,終了とみなされます.

  5. リアルな取引シグナルを生成する,参照回帰の時間帯.

  6. 選択的に,価格の突破下線を空調信号として使用することもできます.

この戦略は,チャネル判断のトレンドを突破して,中線まで出場ポイントを打つことで起動し,中長線のトレンドの動きをキャプチャします.チャネルパラメータは市場に対応して調整できます.

優位分析

  1. ドンヒアン通路の計算は簡単で,指標は実現しやすい.

  2. 価格の突破チャネルは,トレンドの変化を判断する.

  3. 経路中位線は,止場として,合理的な設定である.

  4. 取引シグナルのルールは明確で実行しやすい.

  5. 経路のパラメータを柔軟に調整し,複数の品種と周期に対応します.

  6. 長線または短線取引の効果を評価することができる.

  7. 拡張空間は広く,他の技術指標を導入することができます.

リスク分析

  1. 経路の突破が遅れて,早期のチャンスを逃す危険性がある.

  2. 突破前の背離を考慮していないと,誤った信号が発せられるかもしれない.

  3. 中位線のストップは固定され,市場ショックに敏感である.

  4. 誤った反射回路選択は,過適合を引き起こす可能性があります.

  5. 損失拡大の危険に注意してください.

最適化の方向

  1. テスト最適化チャネル周期パラメータ

  2. 他のタイプの移動平均を基準線として評価する.

  3. 取引量の増加などの指標のフィルタリング条件.

  4. 移動停止または追跡停止戦略を設定する.

  5. 機械学習が価格突破を予測する

  6. 資金管理戦略の最適化と利益率の設定

  7. 長短線混合操作や多種混合を考えてみてください.

要約する

この戦略は,トンヒアン通路に基づいて,トレンドの方向を判断し,突破操作を行う,典型的な中長線トレンド追跡戦略の1つである.通路パラメータを最適化して,他の技術指標と補足することで,比較的安定した突破システムを形成することができる.この戦略は,簡潔で清晰で,拡張可能なスペースが広く,量化取引の基本的な戦略モジュールとして,優れた実用性がある.

ストラテジーソースコード
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000)


testStartYear = input(2000, "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, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


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

dcPeriod = 20

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

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=1, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper)
strategy.close("simpleBuy",when=close < dcAverage)
    
//strategy.entry("simpleSell", strategy.short,when=close <= dcLower)
//strategy.close("simpleSell",when=close > dcAverage)