전략에 따른 RSI 트렌드

저자:차오장, 날짜: 2023-10-26 15:44:15
태그:

img

전반적인 설명

이 전략은 RSI 지표에 기반한 간단한 트렌드 다음 거래 시스템을 설계하고, RSI를 통해 시장 트렌드 방향을 결정하고 특정 날짜 범위 내에서 자동화된 긴 및 짧은 포지션을 구현할 수 있습니다.

전략 논리

이 전략은 시장 추세를 결정하기 위해 RSI 지표를 사용하고, 과잉 구매 및 과잉 판매 구역을 확인하기 위해 볼링거 밴드를 사용합니다.

우선, RSI 값은 계산된다. 볼링거 밴드의 상부 및 하부 대역은 이동 평균과 RSI의 표준 편차를 기반으로 계산된다. RSI는 0-1 사이 변동하며, 볼링거 밴드는 표준 편차를 통해 과반 구매 및 과반 판매 구역을 식별한다. RSI가 상위 대역보다 높을 때, 그것은 과반 구매 구역이며, 하위 대역보다 낮을 때, 그것은 과반 판매 구역이다.

RSI가 하단에서 상단으로 돌파할 때 구매 신호가 생성됩니다. RSI가 상단에서 하단으로 돌파할 때 트렌드를 따라 판매 신호가 생성됩니다. 시장에 진출한 후 지정된 날짜 범위의 끝에서 포지션이 닫히기 전까지는 스톱 로스 또는 수익을 취하지 않습니다.

전략은 간단하고 효과적으로 RSI를 사용하여 트렌드 방향을 결정하고 볼링거 밴드를 사용하여 특정 거래 기회를 식별합니다. 날짜 범위를 정의함으로써 불필요한 위험을 피할 수 있습니다.

이점 분석

  • 트렌드 방향 을 결정 하기 위해 RSI 를 이용 하는 것 은 간단 하고 효과적 이다
  • 거래 신호를 확인하기 위해 볼링거 밴드를 결합하면 가짜 브레이크가 피할 수 있습니다.
  • 거래 날짜 범위를 정의하는 것은 시장 위험을 피하는 데 도움이됩니다.
  • 손해를 멈추거나 이익을 취하지 않고, 추세를 최대화합니다.
  • 유연한 매개 변수 조정, 다양한 시장 환경에 적응

위험 과 최적화

  • 시장은 손실로 이어지는 격렬한 변동이 있을 수 있습니다.
  • 스톱 로스 또는 수익 취득은 위험을 효과적으로 제어하지 않습니다.
  • 부적절한 매개 변수 설정은 오버 트레이딩 또는 놓친 기회로 이어질 수 있습니다.

최적화 방향:

  • 리스크를 제어하기 위해 스톱 로스 및 수익을 추가합니다.
  • 승률을 향상시키기 위해 매개 변수 설정을 최적화
  • 신호를 필터하는 다른 표시기를 추가하고 거짓 파장을 피하십시오.
  • 위치 크기를 동적으로 조정

요약

요약하면, 이것은 매우 간단하고 직접적인 트렌드 다음 전략입니다. 트렌드를 결정하기 위해 RSI를 사용하여 신호를 필터하고 거래 날짜 범위를 정의하여 효과적으로 트렌드를 추적하고 위험을 제어 할 수 있습니다. 그러나 전략은 더 이상 최적화 될 수 있습니다. 간단하고 효과적인 유지하면서, 중지 손실, 매개 변수 최적화 및 신호 필터링과 같은 방법을 추가하여 라이브 거래에 더 적합 할 수 있습니다.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Gidra
//2018

//@version=2
strategy(title = "Gidra's RSI or MFI Strategy v0.1", shorttitle = "Gidra's RSI or MFI v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, title="source")
lengthRSI = input(14, title="RSI or MFI length")
// RSI %B
useRSI = input(true, title="use RSI or MFI")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//MFI
upper = sum(volume * (change(src) <= 0 ? 0 : src), lengthRSI)
lower = sum(volume * (change(src) >= 0 ? 0 : src), lengthRSI)
mf = rsi(upper, lower)

//RSI
rsi = useRSI?rsi(src, lengthRSI): mf

// %B
length = input(50, minval=1, title="BB length")
mult = input(1.618, minval=0.001, maxval=50)
basis = sma(rsi, length)
dev = mult * stdev(rsi, length)
upperr = basis + dev
lowerr = basis - dev
bbr = (rsi - lowerr)/(upperr - lowerr)

plot(bbr, color=black, transp=0, linewidth=2)
// band1 = hline(1, color=white, linestyle=dashed)
// band0 = hline(0, color=white, linestyle=dashed)
// fill(band1, band0, color=teal)
hline(0.5, color=white)

//Signals
up = bbr >= 0 and bbr[1] < 0
dn = bbr <= 1 and bbr[1] > 1
//exit = ((bbr[1] < 0.5 and bbr >= 0.5) or (bbr[1] > 0.5 and bbr <= 0.5))

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
    strategy.close_all()

더 많은