トレンド強度 バース戦略の確認

作者: リン・ハーンチャオチャン,日付: 2024-01-16 15:22:53
タグ:

img

概要: この戦略は,連続したNのキャンドルスタイクの閉じる価格方向に基づいてトレンド方向を判断する. Nの連続したキャンドルスタイクの閉じる価格が条件を満たしたとき,取引信号が生成される. Nのサイズは,コンファームバーズ入力パラメータによって設定される.この戦略は,主にトレンドの強さを決定するために連続したNのキャンドルスタイクの閉じる価格の方向を利用する.Nが大きい場合,トレンドを確認するためにより多くのキャンドルスタイクが必要で,偽のブレイクをフィルターすることができますが,トレンドの初期段階を見逃すこともあります.

原則:
この戦略は,最後のキャンドルスタイクと前のキャンドルスタイクの閉盤価格の関係を追跡し,価格上昇と下落の強さを判断する.具体的には,2つの変数bcountとscountを定義し,連続したキャンドルスタイク閉盤価格の上昇と下落を記録する.

bcount が confirmBars が設定した値に達すると,confirmBars の連続したキャンドルスタイルの閉値が上昇し,購入信号が生成される.scount が confirmBars が設定した値に達すると,confirmBars の連続したキャンドルスタイルの閉値が低下し,販売信号が生成される.

連続した複数のキャンドルスタイクの閉じる価格の方向性を判断することで,短期間の市場の変動は効果的にフィルタリングされ,取引信号は比較的強いトレンド下でのみ生成されます.

利点分析

  1. 騒音を効果的にフィルタリングし,傾向を確認する
    この戦略は,取引信号を生成する前に,連続したN個のキャンドルスタイクが閉じる価格が条件を満たすことを要求する.これは,取引に対する通常の市場変動の影響をフィルター化し,ポジションが強いトレンド下でのみ開かれることを保証する.

  2. 調整可能なフィルタリング強度パラメータ confirmBarsパラメータのサイズを調整することで,価格変動をフィルタリングする強さを制御することができる.より大きなパラメータはノイズに対するより良いフィルタリング効果を有しますが,初期のトレンド機会を逃すこともあります.

リスク分析:

  1. 初期トレンドの機会を逃すかもしれない この戦略は,シグナルを生む前に条件を満たすために,連続して複数のキャンドルスタイクが閉じる価格を必要とします. そのため,早期トレンド機会を逃し,トレンドをタイムリーに追跡することはできません.

  2. 損失を停止する傾向がある 確認値が大きすぎると,トレンド初期に逆短期線に誤導され,ストップ・ロスのブレイクが発生します.

オプティマイゼーション方向:

  1. 偽のブレイクを他の指標でフィルターする
    ボリンジャー・バンドやRSIなどの他の技術指標は,偽のブレイクアウトの可能性を減らすために,買取・売却シグナルを二次フィルタリングするために使用できます.

  2. パラメータを動的に調整する 市場状況に基づいて confirmBars パラメータを動的に調整しようとします.騒音をフィルタリングするために不安定な市場でパラメータ値を増加させ,トレンドを追跡するためにトレンドが明らかになるとパラメータ値を減少させます.

概要:
この戦略は,複数の連続したキャンドルスタイクの閉じる価格の方向を判断することで,ショックをフィルターし,トレンドを確認する効果を達成する.短期間の市場変動によって引き起こされる誤った取引を効果的に削減し,トレンドが明らかになるとのみ取引信号を生成する.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")

もっと