ダイナミックチャネルインジケーターブレイクアウト戦略


作成日: 2023-11-13 10:33:44 最終変更日: 2023-11-13 10:33:44
コピー: 4 クリック数: 661
1
フォロー
1617
フォロワー

ダイナミックチャネルインジケーターブレイクアウト戦略

概要

この戦略は,通路の突破状況に基づいて市場の方向を判断するために,動的通路指標を使用し,トレンドの方向を捉えます.この戦略は,特定の時間周期内の最高価格と最低価格を計算することによって,上下通路を形成し,通路の突破時に取引信号を生成します.

戦略原則

この策略は,input関数を使用して通路周期の長さをlengthに20日間設定します. そして,最新の20日間の最高価格highestを () として計算し,最新の20日間の最低価格lowestを () として計算します.

通路内を色で満たす.上線を緑で満たし,下線を赤で満たして,動的な通路を形成する.

傾向を判断する参考として,200日移動平均のema ((close,200) を描画する.

策略は,ema値を大トレンドの判断基準として使用する. 200日線より近い場合は看板,200日線より近い場合は下落である.

看板時には,閉盘価格closeが上線を突破した場合,多信号を生成する.看板時には,閉盘価格closeが下線を突破した場合,空調信号を生成する.

多損は長短ルールで下線または中線に設定し,空損は長短ルールで上線または中線に設定する.

戦略的優位性

  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)