암호화폐에 대한 빠른 RSI 격차 거래 전략

저자:차오장, 날짜: 2023-11-27 11:22:19
태그:

img

개요: 이것은 암호화폐 시장을 위해 고안된 빠른 RSI 격차 거래 전략입니다. 거래 기회를 찾기 위해 촛불 차트에서 빠른 RSI 지표와 격차 패턴을 모두 활용합니다.

원칙: 이 전략은 두 가지 주요 기술을 사용합니다. 빠른 RSI 지표와 격차 패턴.

먼저, 그것은 단지 7 개의 촛불을 기반으로 빠른 RSI 지표를 계산합니다. 이것은 RSI를 더 민감하게 만들어 지나치게 구매 / 지나치게 판매 된 조건을 신속하게 감지 할 수 있습니다. RSI 상한도는 70로 설정되고 하한도는 30로 설정됩니다. 70 이상은 지나치게 구매 된 것으로 간주되며 30 이하에는 지나치게 판매되었습니다.

두 번째로, 촛불 차트에서 격차 패턴을 감지합니다. 격차는 현재 오픈 가격과 이전 종료 가격 사이의 빈 공간을 의미합니다. 격차는 높은 변동성과 잠재적 인 트렌드 역전을 나타냅니다.

급속한 RSI가 과잉 매매 상태를 표시하는 동안 하락 격차가 나타나면, 긴 이동. 급속한 RSI가 과잉 매매 상태를 표시하는 동안 상승 격차가 나타나면, 짧은 이동.

또한, 전략은 잘못된 신호를 피하기 위해 SMA 및 Min/Max 지표 등 다른 필터를 사용합니다. 필터를 통과 할 때만 실제 거래 신호가 활성화됩니다.

장점: 이 전략의 가장 큰 장점은 초고속 과반 구매 / 과반 판매 회전 및 격차 반전 기회를 잡는 것입니다. 그것은 특히 매우 변동적인 암호화 시장에 빠른 트렌드 변화를 포착하기에 적합합니다. 일반 RSI와 비교하면 빠른 RSI는 암호화 거래의 고 주파수 성격에 맞게 훨씬 빠르게 반응합니다. 추가 필터는 또한 잘못된 신호를 제거하고 신뢰성을 향상시키는 데 도움이됩니다.

위험성:
전략에 직면한 주요 위험은 다음과 같습니다.

  1. 빠른 RSI는 지나치게 민감하여 과도한 잘못된 신호를 유발할 수 있습니다.

  2. 격차는 실제 반전이 아닌 정상적인 가격 변동일 수 있습니다. 전략은 스톱 로스 위험을 감수 할 수 있습니다.

  3. 낮은 변동성 기간 동안, 포지션은 긴 시간 동안 비활성 상태로 유지될 수 있습니다.

  4. 미니 / 맥스 기간과 같은 부적절한 매개 변수 설정은 희석 된 신호와 낮은 효율으로 이어질 수 있습니다.

따라서 다음과 같은 방법은 위의 위험을 완화하는 데 도움이 될 수 있습니다.

  1. 빠른 RSI 매개 변수를 조정하고 RSI 기간을 증가시켜 덜 민감하게 만듭니다.

  2. 수익을 확보하기 위해 동적 스톱 로스를 적용합니다. 격차 스파이크를 쫓는 것을 피하십시오.

  3. 전략 참여율을 최적화 하 고, 낮은 변동성 환경에서 참여를 제한 합니다.

  4. 안정적인 설정을 보장하기 위해 지속적으로 역 테스트하고 매개 변수를 최적화합니다.

강화: 주요 최적화 방향은 다음과 같습니다.

  1. MACD, KDJ와 같은 다른 지표를 탐구하고, 정확도를 높이기 위해 격차를 결합하십시오.

  2. 시장의 변동성에 기반한 적응적인 스톱 로스 메커니즘을 구축합니다.

  3. OBV와 같은 부피 지표를 포함해서 격차 후 반전을 확인합니다.

  4. 가짜 신호를 낮추기 위한 최적의 설정을 발견하기 위해 Min/Max 기간과 같은 필터 매개 변수를 최적화합니다.

  5. 다양한 암호화 자산에 대한 매개 변수 적응성을 연구합니다.

이러한 노력은 전략의 안정성, 적응성 및 신뢰성을 크게 향상시킬 수 있습니다.

결론: 요약하자면, 빠른 RSI 격차 거래 전략은 변동적인 암호화 시장에 대해 명시적으로 설계된 효율적인 접근법입니다. 지속적인 테스트와 향상으로 빠른 시장 반전을 안정적으로 파악하고 일관된 수익성을 달성할 수 있습니다.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.5", shorttitle = "Fast RSI str 1.5", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usesma = input(false, defval = false, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
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")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > abody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm
dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm 
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

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

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, 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()

더 많은