
이 전략은 먼저 높은 시간 프레임에 ADX와 SMA를 계산하여 트렌드 방향과 트렌드 변화를 식별합니다. 그리고 낮은 시간 프레임에 RSI를 계산하여 과매매 현상을 식별하여 거래 신호를 형성합니다.
높은 시간 프레임에서 ADX 판단 트렌드 강도를 계산한다. ADX 상승은 트렌드 강화를 의미한다.
높은 시간 프레임에 대한 SMA 판단 트렌드 방향. SMA 상승은 가격 상승을, SMA 하락은 가격 하락을 의미한다.
낮은 시간 프레임에서 RSI를 계산하여 과매매 현상을 판단하십시오. RSI가 경량보다 높으면 과매매를 나타냅니다. RSI가 경량보다 낮으면 과매를 나타냅니다.
ADX가 상승하면 SMA가 상승하면 RSI가 오버 바이를 할 때, 추세는 상승세를 강화하고 있다고 생각하면 공백을 수 있습니다.
ADX가 상승하고 SMA가 하락하고 RSI가 하락할 때, 추세는 하향으로 강화되고 있다고 생각하면 더 많은 것을 할 수 있습니다.
트렌드 판단과 반전 거래의 조합으로, 큰 트렌드에서 반전 기회를 잡을 수 있다.
다른 시간 프레임에 대한 지표의 조합을 사용하여 신호의 신뢰성을 향상시킬 수 있습니다.
RSI 전략은 단순함 자체를 이해하고 실행하기 쉽다.
RSI가 가짜 신호를 생성할 가능성이 존재하여 거래가 손실을 초래한다. 파라미터 최적화를 통해 가짜 신호의 확률을 줄일 수 있다.
대주기 트렌드 판단은 틀릴 수 있으며, 전략이 해당 시장 환경에 적합하지 않습니다. 더 많은 지표 판단 트렌드를 결합하는 것을 고려할 수 있습니다.
거래 빈도가 너무 높을 수 있으며 거래 비용이 수익성에 영향을 미칩니다. RSI 파라미터를 적절히 조정하여 거래 횟수를 줄일 수 있습니다.
더 많은 변수 조합을 테스트하여 RSI 변수와 ADX, SMA 변수의 최적의 매칭을 찾습니다.
단편적 손실을 통제하기 위한 손해 방지 제도를 늘립니다.
변동률 지표와 함께, 변동이 느려질 때 포지션을 낮추는 것을 고려하십시오.
특정 입구 및 출구 가격을 최적화합니다. 예를 들어, K 라인을 뚫고 가장 높은 가격으로 공백을 뚫습니다.
이 전략은 트렌드 판단과 반전 거래 신호를 통합하여 큰 주기적 추세에서 지역 반전 기회를 찾습니다. RSI를 단독으로 사용하는 것과 비교하여 신뢰성이 높으며, 을 피합니다. 전체적으로 더 보수적인 전략으로, 가짜 신호의 가능성을 줄이는 투자자에게 적합합니다.
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("RSI scalping", overlay=true)
CustSession = input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0 = input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )
RSI = rsi(close, 7)
res = CustSession ? SessionTF0 : period
o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)
// ADX higher time frame
dirmov(len) =>
up = change(h)
down = -change(l)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truer = request.security(syminfo.tickerid, res, tr)
truerange = rma(truer, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len
ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2] > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising
if (longCondition)
strategy.entry("Long entry", strategy.long)
if (shortCondition)
strategy.entry("Short Entry", strategy.short)