ボリンジャーバンド + RSI + EMA デュアル取引戦略


作成日: 2023-12-29 14:46:57 最終変更日: 2023-12-29 14:46:57
コピー: 2 クリック数: 1097
1
フォロー
1621
フォロワー

ボリンジャーバンド + RSI + EMA デュアル取引戦略

概要

この戦略は,ブルイン帯,相対的に強い指数 (RSI) と指数移動平均 (EMA) の3つの指標を統合し,長線保有株の自動取引戦略を実現する. RSIが超売り線を下回り,価格がブルイン帯の下線に近づいた時または触れた時,買入シグナルを生成する.価格が上昇し,ブルイン帯上線に触れた時,売出シグナルを生成する.

戦略原則

この戦略は,ブリン帯,RSI,EMAの3つの指標に基づいて判断する.ブリン帯の中軌は,価格の簡単な移動平均であり,上下軌は,価格標準差の2倍範囲である.ブリン帯は,市場の超買い超売り現象を判断する.価格が下軌に近づくと超売り現象であり,上軌に近づくと超買い現象である.RSI指標は,株式が超買いであるかどうかを判断する重要な指標の1つである.RSIは,30時より低いと超売り,70時より高いと超買いである.EMAは,価格の指数加重移動平均線であり,価格の傾向を判断する.

この戦略の買取条件は,RSI指標が30を下回った時,買取シグナルが生み出され,同時に,価格がブリン帯下軌道に接近しているまたは触れている時,偽のシグナルを回避するために,買取シグナルが生み出されることが必要である.

この戦略のセール条件は,価格上昇の間,ブリン帯を触るとセールシグナルが生じ,comboBox1。そうしてブリン帯を判断してオーバーバイの状態を判断し,ストップセールを行う。

戦略的優位性

  1. ブリン帯とRSIが統合され,偽信号を避けるために,超買い超売り状態を判断するダブルフィルタリングが行われています.
  2. EMAは価格の方向を判断し,逆転取引を避けるために使用します.
  3. RSIパラメータとブリン帯パラメータは,異なる株式に適用してカスタマイズできます.
  4. 戦略の論理はシンプルで明快で,実行が分かりやすい.

戦略リスク

  1. ブリン帯とRSIの両方が誤ったシグナルを生じ,誤った買い方を引き起こす可能性があります.
  2. ストップダメージ位置の設定は最適化が必要で,撤回リスクが高い.
  3. EMAはトレンドを完璧に判断できず,トレンドの転換点を逃しているかもしれない.
  4. パラメータの設定を間違えた場合,取引が頻繁になり,取引機会が逃れることがあります.

リスク対策:

  1. ブリン帯周期を適切に短縮し,RSIパラメータを最適化する.
  2. ダイナミック・トラッキング・ストロー
  3. 他の指標の判断傾向を統合する.
  4. 異なるパラメータ設定をテストし,最適なパラメータ組み合わせを探します.

戦略最適化の方向性

この戦略は,以下の方向からさらに改善できます.

  1. KD指数などの他の指数判断を追加します.
  2. 移動ストップ,区間ストップなどのストップ戦略を追加してリスクを管理する.
  3. 販売条件に,EMAが判断したトレンドによる脱出策を追加する.
  4. ブリン帯域の調整など,パラメータ設定を最適化し,収益空間を改善する.
  5. 倉庫開設のルールを追加し,偽の突破を回避し,可能な限りフィルタリングする.

要約する

この戦略はブリン帯,RSI,EMAの3つの指標を統合し,双重フィルター判断の長線を持つ自動取引戦略を実現している. 超買い超売り状態の判断の双重フィルター機構は,偽信号を効果的に回避し,EMAの判断トレンドを利用して逆転取引を回避することができる. 同時に,戦略パラメータは,異なる株式に適用して柔軟に設定され,シンプルで実用的な量化取引戦略である. 停止損失戦略,出場規則などの最適化により,戦略の効率をさらに向上させ,撤回リスクを減らすことができる. この戦略は,初心者にとって参考枠を提供し,実用的な価値がある.

ストラテジーソースコード
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by ChartArt) v1.3", shorttitle="rsi 30 min ADJ Buy", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = input(30, title="RSI Oversold Level")  // Adjustable RSI oversold level
RSIoverBought = input(80, title="RSI Overbought Level")  // Adjustable RSI overbought level
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(231, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

///////////// EMA
useEMA = input(true, title="Use EMA?")
emaLength = input(20, title="EMA Period Length")
ema = useEMA ? ema(close, emaLength) : na

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
long = crossover(vrsi, RSIoverSold) and buyEntry
close_long = close >= BBupper

if (not na(vrsi))
    if long
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")