アダプティブ・チャネル・ブレークアウト・戦略

作者: リン・ハーンチャオチャン開催日:2024年2月29日 14:49:05
タグ:

img

概要

アダプティブチャネルブレークアウト戦略は,市場の価格チャネルを追跡するトレンドフォロー戦略である.指定された期間中の最高価格と最低価格を計算して価格チャネルを決定し,価格がチャネルを突破すると取引信号を生成する.

この戦略の利点は,市場の変化に自動的に適応し,騒音をフィルターし,トレンドが明確になったときに取引信号を生成するチャネルを拡張することであります.しかし,高い価格を追いかけて低価格を殺すリスクもあります.パラメータを最適化することで,不要な取引を削減し,収益性を向上させることができます.

戦略の論理

この戦略は,チャネルブレイク理論に基づいている.チャネルを形成するために,異なる期間にわたって2つのセットの最高値と最低値 (エントリー長と出口長) を計算する.価格がチャネルを超えると,信号が生成される.

ストラテジーは,価格チャネルを形成するために,まず20期間の最高価格 (上) と最低価格 (下) を計算する.その後,10期間の最高価格 (sup) と最低価格 (ダウン) を計算する.買い信号が起動した後 (価格が上線を越えて),10期間の最低価格 (ダウン) がストップ損失ラインとして使用される.販売信号が起動した後 (価格が下線を越えて),10期間の最高価格 (sup) が利益ラインとして使用される.これは適応チャネルシステムを形成する.

価格がチャネルを突破すると,トレンドが形成されていることを示します. 戦略は取引信号を発信します. 同時に,利益とストップ損失ラインも価格変化に合わせて調整され,利益をロックし損失を回避します.

利点

  • この戦略のチャネルは,最近の価格に基づいて自動的に調整され,トレンドが始まると騒音をフィルタリングするためにチャネル範囲を拡大します.
  • 強いブレイクで取引する.上向きブレイクや下向きブレイクで取引する.高価格を追いかけて低価格を打つのを避ける.
  • リスク管理メカニズム ストップ・ロストを採用し,異なる期間に基づく利益ラインを採用し,柔軟に利益を固定し,損失拡大を防ぐ.
  • 実施が簡単です. 2つのパラメータのみが必要で,テストデータは入手が容易で,定量取引に適しています.

リスク分析

この戦略の主なリスクは以下のとおりです.

  • 高いリスクを追いかけて低いリスクを殺す.チャネル範囲が大きすぎると高い価格で購入し,低い価格で販売するリスクがあります.これは不要な取引を減らすためにパラメータを最適化することで軽減できます.
  • ストップ損失リスク. 固定期ストップ損失線があまりにも固い可能性があります. 適応型ATRストップ損失を検討することができます.
  • 取引頻度の高いリスク. パラメータの設定が正しくない場合,取引頻度が過剰に頻繁になる可能性があります. 取引頻度を制御するためにフィルター条件を追加することができます.
  • 市場異常リスク.この戦略は,過去のデータに基づいて将来の傾向を判断し,急激な市場変化が発生した場合に失敗またはお金を失う可能性があります.

最適化

この戦略の潜在的最適化には,以下が含まれます.

  • トレンドインジケーターフィルターを追加します. EMA や MACD などのトレンドインジケーターは,チャネルブレイク方向に準拠するときにのみシグナルを受け取るために導入できます.
  • アダプティブATRストップロスを導入します. 平均の真の範囲から計算されたストップロスの線は,単一の取引損失をよりうまく制御できます.
  • パラメータ組み合わせを最適化する.より多くのバックテストを通じて最適化されたパラメータ組み合わせを見つけることによって戦略の収益性をさらに向上させる.
  • 機械学習技術を導入する. 強化された頑丈性のために動的パラメータを生成するために神経ネットワークや遺伝アルゴリズムを使用する.

結論

アダプティブチャネルブレイクアウト戦略は,明確な論理と全体的な強固な実行可能性を持っています. 傾向が形成されたときに市場変化を自動的に追跡し,取引信号を生成することができます. 双チャネルおよびストップ損失/利益のメカニズムもリスクを制御するのに役立ちます. この戦略はパラメータ最適化,フィルタリング条件などを通じて安定性と収益性をさらに向上させることができます. さらにライブ取引の検証と精製に価値がある.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Turtle Trade Channels Strategy", shorttitle="TTCS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

length = input(20,"Entry Length", minval=1)
len2=input(10, "Exit Length", minval=1)

lower = lowest(length)
upper = highest(length)

up=highest(high,length)
down=lowest(low,length)
sup=highest(high,len2)
sdown=lowest(low,len2)
K1=barssince(high>=up[1])<=barssince(low<=down[1]) ? down : up
K2=iff(barssince(high>=up[1])<=barssince(low<=down[1]),sdown,sup)
K3=iff(close>K1,down,na)
K4=iff(close<K1,up,na)

buySignal=high==upper[1] or crossover(high,upper[1])
sellSignal = low==lower[1] or crossover(lower[1],low)
buyExit=low==sdown[1] or crossover(sdown[1],low)
sellExit = high==sup[1] or crossover(high,sup[1])

strategy.entry("Buy", strategy.long, when = buySignal and barssince(buySignal) < barssince(sellSignal[1]))
strategy.entry("Sell", strategy.short, when = sellSignal and barssince(sellSignal) < barssince(buySignal[1]))
strategy.exit("Buy Exit", from_entry = "Buy", when = buyExit and barssince(buyExit) < barssince(sellExit[1]))
strategy.exit("Sell Exit", from_entry = "Sell", when = sellExit and barssince(sellExit) < barssince(buyExit[1]))

plot(K1, title="Trend Line", color=color.red, linewidth=2)
e=plot(K2, title="Exit Line", color=color.blue, linewidth=1, style=6)



もっと