이 전략은 RSI 지표를 사용하여 시장의 추세를 판단하고, 오버 바이 오버 셀 영역에서 거래 신호를 발송하여 시장의 단선 조정 움직임을 잡기 위해 노력하고 있습니다. 그것은 평행선 지표와 스톱 스톱 로직을 결합하여 거래 신호를 필터링하고 위험을 제어합니다.
RSI ((14) 지표값을 계산하고, 오버 바이 라인을 67으로 설정하고, 오버 소이드 라인을 44으로 설정한다.
RSI 상위에서 오버 바이 라인을 넘으면 팔기 신호를 발산한다. RSI 아래에서 오버 바이 라인을 넘으면 구매 신호를 발산한다.
중첩 평균선 필터링은 RSI 상위에서 매매 신호를 발산할 때만, 그리고 RSI 상위에서 매매 신호를 발산할 때만, 어제의 평균 가격보다 낮습니다.
스톱 스톱 로직을 설정한다. 고정 점 수 스톱 스톱 손실을 선택하거나 RSI 값에 따라 스톱 스톱.
RSI를 이용해 과매매를 판단하고, 단선 조정 기회를 잡습니다.
동선과 결합된 필터링으로 트렌드 상황에서 역작업을 피한다.
단기 손실을 제어하기 위해 단기 손실을 제어하기 위해 단기 손실을 제어합니다.
트렌드 반전의 전날에 반전 기회를 잡을 수 있다.
RSI는 지연성이 있으며, 잘못된 신호로 인한 이탈이 발생할 수 있습니다. 해결 방법은 적절한 변수를 조정하거나 다른 지표와 함께 사용하는 것입니다.
고정 스톱 포인트는 너무 크거나 너무 작을 수 있습니다. 더 유연한 트레일링 스톱을 선택할 수 있습니다. 동적 스톱.
고정 스톱은 조기 스톱 또는 스톱 포인트가 너무 적을 수 있습니다. RSI 값이나 ATR 스톱에 따라 스톱을 고려할 수 있습니다.
효과적 인 필터링이 불가능한 동요 추세 현상, 자주 포지션 개설과 손실을 초래할 수 있습니다. RSI 파라미터를 적절히 조정하거나 다른 필터링 조건을 추가 할 수 있습니다.
다양한 주기적 변수의 RSI 지표 효과를 테스트한다.
RSI의 변수를 조정하여 다양한 오버 바이 오버 셀 라인을 테스트합니다.
다른 종류의 이동 평균이나 다른 필터링 지표를 시도해보세요.
고정 스톱 스톱 손실과 동적 스톱 스톱 손실의 효과를 테스트한다.
시장의 변동 법칙에 더 잘 맞추기 위해 스톱 스톱 손실 값을 최적화하십시오.
새로운 입구 필터링 조건으로, 진동이 발생하지 않도록 한다.
여러 시간 주기를 결합하여 검증을 고려하여 신호 품질을 향상시킵니다.
이 전략은 RSI 지표를 사용하여 과매매 과매매 상황을 판단하고, 평평선과 중지 중지 손실과 결합하여 양방향 거래를 합니다. 단기간에 시장 역전 기회를 잡을 수 있습니다. 매개 변수 최적화 및 필터 조건의 보완을 통해 전략의 수익 효과를 더욱 높이고 위험을 제어 할 수 있습니다. 이 전략은 짧은 선의 변화에 민감하고, 높은 주파수 거래를 추구하는 투자자에게 적합합니다.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//© профешинил хомячело
//@version = 4
strategy("RSI Strategy Professional Хомячело", overlay=false)
length = input( 14 )
overSold = input( 44 )
overBought = input( 67 )
price = open
rsi = rsi(price, length)
band1 = hline(overSold, "overSold12", color=#C0C0C0)
band0 = hline(overBought, "overBought12", color=#C0C0C0)
plot(rsi, "RSI", color=color.red)
fill(band1, band0, color=color.black, transp=90, title="Background")
src = close
a = sma(src, 1)
aaa = strategy.opentrades + 1
n = input(defval = 0.0576923077, title = "AvgPrice - n")
//n = 0.0576923077
buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0)
sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0)
// crossover(rsi, overSold)
// crossunder(rsi, overBought)
if (not na(rsi))
if(buysignal)
strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
if(sellsignal)
strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
//лонги орні
if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//шорти орні
if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//стоп-лосс і ціль
//rsi
rsion = input(defval = false, title = "Тейк-профіт по RSI")
rcl = input(defval = 73.0, title = "RSI тейк по лонгу")
rcs = input(defval = 44.0, title = "RSI тейк по шорту")
possize = input(defval = 250.0, title = "Маржа")
posp = input(defval = 3.0, title = "Плече")
//tick
ut = input(defval = false, title = "Тейк-профіт")
tar = input(defval = 4500.0, title = "Тейк-профіт у тіках")
us = input(defval = false, title = "Стоп-лосс")
stop = input(defval = 0.0, title = "Стоп-лосс у тіках")
tar:=tar/syminfo.mintick
stop:=stop/syminfo.mintick
if(ut==true and us==false)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS")
if(us==true and ut==false)
strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL")
strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS")
if(ut==true and us==true)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS")
//закриття по rsi
if(rsion == 1 )
pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2)
ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2)
spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2)
sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2)
if(rsi > rcl)
strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a))
if(rsi < rcs)
strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))