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

作者: リン・ハーンチャオチャン,日付: 2023年11月13日 10:33:44
タグ:

img

概要

この戦略は,チャネルブレイクに基づいて市場方向を決定するために動的チャネルインジケーターを使用し,トレンド方向性を把握することを目的としています.これは主に,特定の期間にわたって最も高い高値と最も低い低値を計算し,上位と下位チャネルを形成し,価格がチャネルを突破したときの取引信号を生成します.

戦略の論理

この戦略は,チャネル期間長さを 20 日に設定するために入力関数を使用します.その後,上帯として過去 20 日間の最高値,下帯として過去 20 日間の最低値を計算します.

チャンネルは色で満たされています.上部帯の上の部分が緑で満たされ,下部帯の下の部分が赤で満たされ,動的チャンネルを形成しています.

200日移動平均EMA (約200) も,全体的な傾向を決定するための基準としてグラフ化されています.

ストラテジーはメジャー・トレンドを判断する基準としてEMAを使用します. ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーは,ストラテジーです.

アップトレンドでは,閉じる価格が上帯を突破した場合,ロング信号が生成されます.ダウントレンドでは,閉じる価格が下帯を突破した場合,ショート信号が生成されます.

ロングストップ損失は,ロング/ショートルールに基づいて,下帯または中間線に設定されます.ショートストップ損失は,上帯または中間線に設定されます.

利点分析

  1. ダイナミックなチャネルは 変化する市場動向に適応します

  2. トレーディング・シグナルは,トレンド・トレード原則に従って,ブレイクアウトに基づいて生成されます.

  3. 主なトレンドは移動平均値とチャネルブレイクによって決定されます.

  4. 柔軟なストップ・ロスの配置 市場条件に基づいて

リスク分析

  1. 主要なトレンドに対する誤った判断は市場から逸脱する可能性があります.

  2. チャンネル期間を正しく設定しないことで不正な取引が増加します

  3. ストップ損失がチャネルに近すぎると,ストップアウトが増加する可能性があります.

  4. 突破信号が遅れて 最良の入口地点を 見逃している

解決策:

  1. 主な傾向を判断するために複数の指標を使用し 誤りを減らす

  2. 異なる市場リズムに合わせてチャネル期間パラメータを最適化する.

  3. ストップ・ロスの位置を調整して 十分なバッファを保持する

  4. フィルターを追加します.

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

  1. 主要な傾向を判断するためにより多くの指標を追加し,正確性を向上させます.

  2. 誤ったブレイクを避けるために,ボリュームインジケーターを組み込む

  3. 異なる製品のためのチャネル周期パラメータを最適化します.

  4. ダイナミック・トラッキング・ストップ・ロストを導入する

  5. フィルターを追加して信号の質を向上させ,不必要な取引を避ける.

結論

この戦略は,全体的にトレンドトレード原則に従っており,動的チャネルを使用して波動範囲を決定し,ブレイクアウトからのシグナルを生成する.効果的にトレンド変化を追跡することができ,信頼できるトレンドフォロー戦略である.しかし,主要なトレンド判断とストップロスのメカニズムにはさらなる最適化が必要であり,強度を高めるためにフィルタリング条件を追加する必要があります.この戦略は中長期間のトレンド追跡に適しており,ポートフォリオの他の戦略と組み合わせてリスクをカバーすることができます.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pratyush_trades

//@version=4
strategy("Donchian Indexes", overlay=true)

length = input(20)
longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"])
shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"])
longSL=input("Lower Low", "LONG SL", options=["Lower Low", "Basis"])
shortSL=input("Higher High", "SHORT SL", options=["Higher High", "Basis"])

hh = highest(high, length)
ll = lowest(low, length)

up = plot(hh, 'Upper Band', color = color.green)
dw = plot(ll, 'Lower Band', color = color.red)
mid = (hh + ll) / 2
midPlot = plot(mid, 'Basis', color = color.orange)
fill(up, midPlot, color=color.green, transp = 95)
fill(dw, midPlot, color=color.red, transp = 95)
plot(ema(close,200), "ema", color=color.orange)

if (close>ema(close,200))
    if (not na(close[length]))
        strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh)

if (close<ema(close,200))
    if (not na(close[length]))
        strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll)

if (strategy.position_size>0)
    strategy.exit(id="Longs Exit",stop=longSL=='Basis' ? mid : ll)

if (strategy.position_size<0)
    strategy.exit(id="Shorts Exit",stop=shortSL=='Basis' ? mid : hh)

もっと