개요: 이것은 암호화폐 시장을 위해 고안된 빠른 RSI 격차 거래 전략입니다. 거래 기회를 찾기 위해 촛불 차트에서 빠른 RSI 지표와 격차 패턴을 모두 활용합니다.
원칙: 이 전략은 두 가지 주요 기술을 사용합니다. 빠른 RSI 지표와 격차 패턴.
먼저, 그것은 단지 7 개의 촛불을 기반으로 빠른 RSI 지표를 계산합니다. 이것은 RSI를 더 민감하게 만들어 지나치게 구매 / 지나치게 판매 된 조건을 신속하게 감지 할 수 있습니다. RSI 상한도는 70로 설정되고 하한도는 30로 설정됩니다. 70 이상은 지나치게 구매 된 것으로 간주되며 30 이하에는 지나치게 판매되었습니다.
두 번째로, 촛불 차트에서 격차 패턴을 감지합니다. 격차는 현재 오픈 가격과 이전 종료 가격 사이의 빈 공간을 의미합니다. 격차는 높은 변동성과 잠재적 인 트렌드 역전을 나타냅니다.
급속한 RSI가 과잉 매매 상태를 표시하는 동안 하락 격차가 나타나면, 긴 이동. 급속한 RSI가 과잉 매매 상태를 표시하는 동안 상승 격차가 나타나면, 짧은 이동.
또한, 전략은 잘못된 신호를 피하기 위해 SMA 및 Min/Max 지표 등 다른 필터를 사용합니다. 필터를 통과 할 때만 실제 거래 신호가 활성화됩니다.
장점: 이 전략의 가장 큰 장점은 초고속 과반 구매 / 과반 판매 회전 및 격차 반전 기회를 잡는 것입니다. 그것은 특히 매우 변동적인 암호화 시장에 빠른 트렌드 변화를 포착하기에 적합합니다. 일반 RSI와 비교하면 빠른 RSI는 암호화 거래의 고 주파수 성격에 맞게 훨씬 빠르게 반응합니다. 추가 필터는 또한 잘못된 신호를 제거하고 신뢰성을 향상시키는 데 도움이됩니다.
위험성:
전략에 직면한 주요 위험은 다음과 같습니다.
빠른 RSI는 지나치게 민감하여 과도한 잘못된 신호를 유발할 수 있습니다.
격차는 실제 반전이 아닌 정상적인 가격 변동일 수 있습니다. 전략은 스톱 로스 위험을 감수 할 수 있습니다.
낮은 변동성 기간 동안, 포지션은 긴 시간 동안 비활성 상태로 유지될 수 있습니다.
미니 / 맥스 기간과 같은 부적절한 매개 변수 설정은 희석 된 신호와 낮은 효율으로 이어질 수 있습니다.
따라서 다음과 같은 방법은 위의 위험을 완화하는 데 도움이 될 수 있습니다.
빠른 RSI 매개 변수를 조정하고 RSI 기간을 증가시켜 덜 민감하게 만듭니다.
수익을 확보하기 위해 동적 스톱 로스를 적용합니다. 격차 스파이크를 쫓는 것을 피하십시오.
전략 참여율을 최적화 하 고, 낮은 변동성 환경에서 참여를 제한 합니다.
안정적인 설정을 보장하기 위해 지속적으로 역 테스트하고 매개 변수를 최적화합니다.
강화: 주요 최적화 방향은 다음과 같습니다.
MACD, KDJ와 같은 다른 지표를 탐구하고, 정확도를 높이기 위해 격차를 결합하십시오.
시장의 변동성에 기반한 적응적인 스톱 로스 메커니즘을 구축합니다.
OBV와 같은 부피 지표를 포함해서 격차 후 반전을 확인합니다.
가짜 신호를 낮추기 위한 최적의 설정을 발견하기 위해 Min/Max 기간과 같은 필터 매개 변수를 최적화합니다.
다양한 암호화 자산에 대한 매개 변수 적응성을 연구합니다.
이러한 노력은 전략의 안정성, 적응성 및 신뢰성을 크게 향상시킬 수 있습니다.
결론: 요약하자면, 빠른 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()