二重インジケーターフィルタリング 購入シグナル戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-07 10:43:01
タグ:

img

概要

ダブルインディケーターフィルタリングバイシグナル戦略は,潜在的なバイ機会を特定するためにストカスティックRSIとボリンジャー帯の組み合わせを使用する.最も有利なバイポイントを区別するために複数のフィルタ条件を使用する. これにより,変動する市場環境で高い確率のバイエントリータイミングを特定することができます.

戦略の論理

この戦略は2つの指標を活用して 購入機会を把握します

まず,ストキャスティックRSIを使用して市場が過売れているかどうかを判断する.指標はストキャスティックと移動平均線を組み合わせ,下から%D線上の%K線クロスオーバーを過売れた信号として扱う.ここで,20%を超える%K値が過売れたものとみなされるように,値が設定されている.

2つ目は,戦略は価格変化を識別するためにボリンジャーバンドを使用する.ボリンジャーバンドは価格の標準偏差から計算されたバンドである.価格が下帯に近づくと,過剰販売状態をシグナル化する.この戦略は,より広いボリンジャーバンドの標準偏差の2倍にパラメータを設定し,より多くの偽信号をフィルターする.

両指標から得られた過剰販売信号により,戦略は複数のフィルター条件を追加し,買い入りのタイミングをさらに特定します.

  1. 価格がボリンジャー下帯から上向きに反転した.
  2. Nバー前の閉店よりも高いので,購入力が示されています.
  3. 現在の閉店は,長期または中期回顧期間の閉店よりも低い.

購入シグナルは,包括的な基準が満たされたときに発信されます.

強度分析

二重指標でフィルタリングされた戦略にはいくつかの重要な強みがあります.

  1. 二重インジケーター設計により 偽信号を避けることで 買い信号がより信頼性が高まります
  2. 複数のフィルター条件により,範囲限定市場での過剰な購入は防げます.
  3. ストカスティックRSI指標とボリンジャー帯の組み合わせにより 価格異常が検出されます
  4. 購入力のフィルターは 購入に十分な勢いを保ちます
  5. 引き戻しフィルターはさらに買い区間の信頼性を検証します

要するに,戦略は,様々な技術指標とフィルタリング技術を組み合わせて,より正確に購入開始タイミングを特定し,より良い取引パフォーマンスをもたらします.

リスク分析

戦略の強みにも関わらず 管理するリスクもあります

  1. パラメータの調節が正しくない場合,信号が頻繁すぎたり保守的であることもあります.注意深く最適化する必要があります.
  2. 厳格なフィルタリングロジックは 急速に変化する市場で 機会を逃す可能性があります
  3. 異なる指標は 誤った信号を生む可能性があります.
  4. トレンド決定の欠如は,熊市における戦略を暴露します.

リスクを軽減するための改善策は以下の通りです.

  1. フィルターの感度を均衡させるように指標のパラメータを調整する.
  2. トレンド決定フィルターを導入して 罠を避ける
  3. ストップ・ロスのメカニズムを組み込む

増進 の 機会

戦略は以下の点においてさらに改善することができる.

  1. より良い購入タイミングモデルのためにより多くの指標組み合わせをテストします.例えばVRSI,DMIなど.
  2. マシン学習アルゴリズムを導入して パラメータを自動最適化します
  3. 利益のマイルストーンでストップを追跡する 適応性のあるストップ・ロスのメカニズムを構築します
  4. 十分な勢いを確保するために,音量指標を組み込む.
  5. 損失を制限するために動的ポジションサイズ化のようなマネーマネジメントモデルを最適化します

より高度な技術導入により,戦略はより正確な信号生成能力とより強力なリスク管理を達成し,ライブ取引でより信頼できる利益をもたらすことができます.

結論

要するに,ダブルインジケーターフィルタドバイシグナル戦略は,ストカスティックRSI,ボリンジャーバンド,価格強度やプルバック検証などの複数のフィルター条件を利用して,高い確率のバイエントリーポイントを特定します.適切なパラメータチューニング,リスクコントロールなどにより,安定した自動取引戦略になる可能性があります.

この戦略の核心強みは,正確なタイミングのための指標とフィルターの有効な組み合わせにあります.リスクと改善経路も識別可能で管理可能です.全体として,これは実行可能で効果的な定量戦略です.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SORAN Buy and Close Buy", pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, overlay=false)

////Buy and Close-Buy messages
Long_message = input("")
Close_message = input("")

///////////// Stochastic Slow
Stochlength = input(14, minval=1, title="lookback length of Stochastic")
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
smoothK = input(3, title="smoothing of Stochastic %K ")
smoothD = input(3, title="moving average of Stochastic %K")
k = sma(stoch(close, high, low, Stochlength), smoothK)
d = sma(k, smoothD)

 
///////////// RSI 
RSIlength = input( 14, minval=1 , title="lookback length of RSI")
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)

///////////// Double strategy: RSI strategy + Stochastic strategy

pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
new = input(false, title="-------Text Plots Below Use Original Criteria-------" )
sbc = input(false, title="Show Text Plot if WVF WAS True and IS Now False")
sbcc = input(false, title="Show Text Plot if WVF IS True")
new2 = input(false, title="-------Text Plots Below Use FILTERED Criteria-------" )
sbcFilt = input(true, title="Show Text Plot For Filtered Entry")
sbcAggr = input(true, title="Show Text Plot For AGGRESSIVE Filtered Entry")
ltLB = input(40, minval=20, maxval=99, title="Long-Term Look Back Current Bar Has To Close Below This Value OR Medium Term--Default=40")
mtLB = input(14, minval=1, maxval=40, title="Medium-Term Look Back Current Bar Has To Close Below This Value OR Long Term--Default=14")
str = input(3, minval=1, maxval=9, title="Entry Price Action Strength--Close > X Bars Back---Default=3")
//Alerts Instructions and Options Below...Inputs Tab
new4 = input(false, title="-------------------------Turn On/Off ALERTS Below---------------------" )
new5 = input(false, title="----To Activate Alerts You HAVE To Check The Boxes Below For Any Alert Criteria You Want----")
sa1 = input(false, title="Show Alert WVF = True?")
sa2 = input(false, title="Show Alert WVF Was True Now False?")
sa3 = input(false, title="Show Alert WVF Filtered?")
sa4 = input(false, title="Show Alert WVF AGGRESSIVE Filter?")

//Williams Vix Fix Formula
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph

//Filtered Bar Criteria
upRange = low > low[1] and close > high[1]
upRange_Aggr = close > close[1] and close > open[1]
//Filtered Criteria
filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh))
filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and not (wvf < upperBand and wvf < rangeHigh)

//Alerts Criteria
alert1 = wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
alert2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh) ? 1 : 0
alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered ? 1 : 0
alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr ? 1 : 0

//Coloring Criteria of Williams Vix Fix
col = wvf >= upperBand or wvf >= rangeHigh ? #00E676 : #787B86

isOverBought = (crossover(k,d) and k > StochOverBought) ? 1 : 0
isOverBoughtv2 = k > StochOverBought ? 1 : 0
filteredAlert = alert3 ? 1 : 0
aggressiveAlert = alert4 ? 1 : 0

plot(isOverBought, "Overbought / Crossover", style=plot.style_line, color=#FF5252) 
plot(filteredAlert, "Filtered Alert", style=plot.style_line, color=#E040FB) 
plot(aggressiveAlert, "Aggressive Alert", style=plot.style_line, color=#FF9800)

if (filteredAlert or aggressiveAlert)
    strategy.entry("Buy", strategy.long, alert_message = Long_message)

if (filteredAlert or aggressiveAlert)
    alert("Buy Signal", alert.freq_once_per_bar)


if (isOverBought)
    strategy.close("Buy", alert_message = Close_message)


もっと