モメント トレンド 双重戦略

作者: リン・ハーンチャオチャン開催日: 2024-01-22 17:04:36
タグ:

img

概要

この戦略は,相対強度指数 (RSI) とボリンジャーバンド (Bollinger Bands) を組み合わせ,エントリーと出口の二重確認ロジックを実装する.RSIとボリンジャーバンドの両方が同時に過買いまたは過売信号を示す場合にのみ取引信号を生成する.これは誤った信号を効果的に削減し,戦略の安定性を向上させる.

戦略の論理

  1. RSI 判断論理
    • RSIが45を超えると過売り信号とみなされます.
    • RSIが55を下回ると過買い信号とみなされます.
  2. ボリンジャー・バンド 判断論理
    • ボリンジャー・ローナー・バンドの値越えは過売りとみなされる.
    • ボリンジャー上部帯を下回る価格は過買いとみなされる.
  3. 二重確認論理
    • ロングポジションは,RSIとボリンジャー・バンドの両方が過売り信号を示した場合にのみ開かれます.
    • ショートポジションは,RSIとボリンジャー・バンドの両方が過買い信号を示した場合にのみ開かれます.

上記の論理は,入口と出口の安定した二重確認戦略を実装します.

利点分析

  1. 双重確認メカニズムは 騒音の取引を フィルタリングし,不必要な取引を避け,取引コストを削減し,収益性を向上させます

  2. RSI は,トレンドと逆転を特定するのに効果的です.ボリンジャー帯は,サポートとレジスタンスを判断するのに効果的です.両者は互いに完璧に補完します.

  3. 柔軟なパラメータ設定で 異なる製品や取引の好みに合わせて調整できます

リスク分析

  1. RSIとボリンジャー帯は,変動市場では,同時に間違った信号を発し,不必要な損失を引き起こす可能性があります.パラメータを最適化することで,誤判の確率を減らすことができます.

  2. 双重確認メカニズムは,エントリー遅延をわずかに増加させ,非常に短期的な取引機会を逃す可能性があります.遅延に非常に敏感な戦略に適していません.

  3. 戦略はパラメータに非常に敏感である.不適切なパラメータ設定は収益性を大幅に低下させる可能性がある.最適なパラメータ組み合わせを見つけるために十分なバックテストとレビューが必要です.

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

  1. 効率を向上させるため,最適なマッチング期パラメータを見つけるために,異なる期間のRSI指標をテストします.

  2. ストップ損失ロジックを追加し,単一の取引損失リスクを制御するために合理的な移動ストップ損失または固定ストップ損失を設定します.

  3. チャンネル範囲を最適化し効率を向上させるためにボリンガー帯域幅パラメータをテストします.

  4. 安定性を高めるための最良の価格入力を見つけるために,近,高,低などのような異なる価格入力をテストします.

概要

この戦略は,RSIとボリンジャー帯の指標をうまく組み合わせて,二重確認論理を実装し,十分な取引機会を確保し,ノイズ取引を効果的に削減します.適切なパラメータ最適化とリスク管理により,非常に安定し信頼性の高いトレンド追跡と取引戦略になります.


/*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Bollinger + RSI, Double Strategy (by ChartArt)", shorttitle="CA_-_RSI_Bol_Strat", overlay=true)

// ChartArt's RSI + Bollinger Bands, Double Strategy
//
// Version 1.0
// Idea by ChartArt on January 14, 2015.
//
// This strategy uses a modfied RSI to sell
// when the RSI increases over the value of 55
// (or to buy when the value falls below 45),
// with the classic Bollinger Bands strategy
// to sell when the price is above the
// upper Bollinger Band (and to buy when
// this value is below the lower band).
//
// This simple strategy only triggers when
// both the RSI and the Bollinger Bands
// indicators are at the same time in
// a overbought or oversold condition.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 


///////////// RSI
RSIlength = input( 16 ,title="RSI Period Length") 
RSIvalue = input( 45 ,title="RSI Value Range") 
RSIoverSold = 0 + RSIvalue
RSIoverBought = 100 - RSIvalue
price = close
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Bands SMA Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) ? red : RSIoverSold and (price[1] < BBlower and price > BBlower)  ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short, stop=BBupper, comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

もっと