
概要: この策略は,連続したN根K線の収束価格の方向からトレンドの方向を判断し,連続したN根K線の収束価格が条件を満たすときに取引信号を生成する.この策略は,主に連続したN根K線の収束価格の方向からトレンドの強さを判断する.N根K線の収束価格の方向からトレンドの強さを判断する.N根K線の収束価格の方向からトレンドの強さを判断する.N根K線の収束価格の方向からトレンドの強さを判断する.N根K線の収束価格の方向からトレンドの強さを判断する.
原則として 策略は,最後のK線と前のK線の閉盘価格の大きさの関係を追跡して,価格の上昇または下落の強さを判断する.具体的には,それは2つの変数bcountとscountを定義し,それぞれ連続した閉盘価格の上昇と連続した閉盘価格の下落を記録する.
bcountがconfirmBarsの設定値に達すると,連続confirmBars根K線の閉盘価格が上昇し,買入シグナルを生成する.scountがconfirmBarsの設定値に達すると,連続confirmBars根K線の閉盘価格が低下し,売出シグナルを生成する.
このように,連続したいくつかの根K線の閉盘価格方向を判断することによって,短期市場の波動のノイズを効果的にフィルタリングし,より強いトレンドでのみ取引シグナルを生成します.
優位分析:
騒音を効果的にフィルターし,トレンドを確認できます. この戦略は,連続したN根K線閉盘価格が条件を満たす場合にのみ取引シグナルを生成することを要求し,通常の市場の波動が取引に与える影響をフィルタリングし,より強い傾向下でのみポジションを開くことを保証します.
パラメータは,フィルタリングの強さを調整できます. confirmBarsのパラメータのサイズを調整することで,価格変動のフィルタリングの強さを制御できます.パラメータが大きいほど,ノイズをフィルタリングする効果はより高くなりますが,トレンドの初期機会を逃すことも容易です.
リスク分析:
トレンドの初期に チャンスを逃したかもしれない 策略は,連続したK線の閉盤価格が合致する信号を発生させるために必要であるため,しばしばトレンドの初期機会を逃し,トレンドを間に合うように追跡することができません.
破損するのも簡単です 確認根のconfirmBarsが大きすぎると,トレンド前期に逆のショートラインに誤導されやすいため,ストップダストが突破退出する.
改善する方向:
他の指標と組み合わせたフェイクブレークをフィルタリング ブリン帯,RSIなどの他の技術指標と組み合わせて,買入シグナルを二次フィルタリングすることで,偽破綻の可能性を減らすことができます.
動的調整パラメータ また,市場状況に応じて動的にconfirmBarsのパラメータを調整して,震動する市場ではパラメータ値を大きくして,ノイズをフィルターすることもできます.傾向が明らかである場合はパラメータ値を小さくして,トレンドを追跡することもできます.
結論から言うと この戦略は,連続したいくつかの根K線の収束価格の方向を判断することによって,フィルター振動,トレンド確認の効果を達成する.これは,短期市場の変動によって引き起こされる誤った取引を効果的に削減し,トレンドが明らかであるときにのみ取引シグナルを生成する.confirmBarsのパラメータのサイズを調整することにより,ユーザーは,フィルター効果とトレンドの機会をキャプチャするとの関係を自己バランスすることができます.しかし,この戦略は,トレンドの初期に止損されやすく,トレンドを継続的に追跡することはできません.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Confirm Bars Strategy [TS Trader]", overlay=true)
confirmBars = input(1)
// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)
startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)
inBacktestRange = true
// === STRATEGY LOGIC ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
strategy.entry("Buy", strategy.long, comment="Long")
scount = 0
scount := close[1] > close ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
strategy.entry("Sell", strategy.short, comment="Short")