アダプティブチャネルブレークアウト戦略は,市場の価格チャネルを追跡するトレンドフォロー戦略である.指定された期間中の最高価格と最低価格を計算して価格チャネルを決定し,価格がチャネルを突破すると取引信号を生成する.
この戦略の利点は,市場の変化に自動的に適応し,騒音をフィルターし,トレンドが明確になったときに取引信号を生成するチャネルを拡張することであります.しかし,高い価格を追いかけて低価格を殺すリスクもあります.パラメータを最適化することで,不要な取引を削減し,収益性を向上させることができます.
この戦略は,チャネルブレイク理論に基づいている.チャネルを形成するために,異なる期間にわたって2つのセットの最高値と最低値 (エントリー長と出口長) を計算する.価格がチャネルを超えると,信号が生成される.
ストラテジーは,価格チャネルを形成するために,まず20期間の最高価格 (上) と最低価格 (下) を計算する.その後,10期間の最高価格 (sup) と最低価格 (ダウン) を計算する.買い信号が起動した後 (価格が上線を越えて),10期間の最低価格 (ダウン) がストップ損失ラインとして使用される.販売信号が起動した後 (価格が下線を越えて),10期間の最高価格 (sup) が利益ラインとして使用される.これは適応チャネルシステムを形成する.
価格がチャネルを突破すると,トレンドが形成されていることを示します. 戦略は取引信号を発信します. 同時に,利益とストップ損失ラインも価格変化に合わせて調整され,利益をロックし損失を回避します.
この戦略の主なリスクは以下のとおりです.
この戦略の潜在的最適化には,以下が含まれます.
アダプティブチャネルブレイクアウト戦略は,明確な論理と全体的な強固な実行可能性を持っています. 傾向が形成されたときに市場変化を自動的に追跡し,取引信号を生成することができます. 双チャネルおよびストップ損失/利益のメカニズムもリスクを制御するのに役立ちます. この戦略はパラメータ最適化,フィルタリング条件などを通じて安定性と収益性をさらに向上させることができます. さらにライブ取引の検証と精製に価値がある.
/*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)