동력 트렌드 이중 전략

저자:차오장, 날짜: 2024-01-22 17:04:36
태그:

img

전반적인 설명

이 전략은 상대적 강도 지수 (RSI) 와 볼링거 밴드 지표를 결합하여 입출에 대한 이중 확인 논리를 구현합니다. 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)

더 많은