
適応チャネルブレークアウト戦略 (Adaptive Channel Breakout Strategy) は,市場価格チャネルを追跡するトレンド戦略である.指定された周期の最高価格と最低価格を計算することによって価格チャネルを決定し,価格がチャネルを突破すると取引信号を発信する.
この戦略の優点は,市場の変化に自動的に適応し,チャネルを広げることでノイズをフィルターし,トレンドが明確になったときに取引シグナルを生成することである.しかし,上昇と下降を追跡するリスクもあります.パラメータを最適化することで,不要な取引を減らすことができ,率を上げることができます.
この戦略は,チャネル突破理論に基づいている.それは,同時に2つの異なる周期の (入市長と出市長) の最高価格と最低価格を計算し,チャネルを形成する.価格がチャネルを超えると信号が生成される.
具体的には,戦略は,最初に20サイクル (入場の長さ) の最高価格upperと最低価格lowerを計算して,価格チャネルを形成する.それから,10サイクル (出場の長さ) の最高価格supと最低価格sdownを計算する.購入シグナルのトリガー (価格が上位を上回る) の後に,10サイクル (最低価格sdown) の価格sdownでストップラインとなる.売出シグナルのトリガー (価格が下位を突破する) の後に,10サイクル (最高価格sup) の価格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)