RSI 추적 ADX 전략은 RSI 지표와 ADX 지표를 결합한 긴 선의 트렌드 추적 전략이다. 이 전략은 RSI 지표를 통해 시장을 과매매하거나 과매매하는지 여부를 판단하고, ADX 지표와 결합하여 현재 트렌드가 강하다는 것을 판단하고, 트렌드가 상승하면서도 과매하지 않은 상태에서 긴 포지션 입지를 실현하고, 트렌드가 약해지거나 과매할 때 평정 포지션을 종료하는 긴 선의 포지션 보유 전략이다.
이 전략은 주로 RSI 지표와 ADX 지표의 조합을 사용하여 진입 및 퇴출 시간을 판단한다.
입장 조건:
아니면:
탈퇴 조건:
아니면:
아니면:
20일 SMA는 하락했다.
이 전략은 RSI 판단을 통해 과매매 과매매하고, ADX 판단 트렌드와 결합하여, 트렌드가 상승하면 과매매하지 않은 상태에서 구매를 실현하고, 과매매하거나 트렌드가 약해지면 퇴출하여, 전체적으로 중장선 상향 트렌드를 추적하는 효과를 달성한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
RSI와 ADX를 결합하면 트렌드와 오버 바이 오버 소드를 더 정확하게 판단할 수 있으며, 진입과 출입이 더 정확합니다.
ADX를 통해 동향이 강하다고 판단하면, 흔들리는 시장의 약점으로 인해 출전을 줄일 수 있다.
RSI는 좀 더 느슨한 변수를 설정하여 중장선 트렌드를 추적하고, 자주 거래되는 것을 줄여줍니다.
전략적 조작은 간단하고, 실행하기 쉽으며, 긴 라인 보유에 적합하다.
구성 가능한 매개 변수가 유연하고, 조정 가능한 공간이 넓다.
이 전략에는 위험도 있습니다.
ADX 지표는 지연되어 있고, 트렌드 전환점을 놓치면 손실이 확대될 수 있다.
주가가 급격히 하락할 때, 정지는 늦어서 손실을 확대할 수 있다.
출입시 RSI 파라미터가 너무 느슨하게 설정되어 있기 때문에 과도한 구매와 과도한 지주 기간이 발생할 수 있습니다.
ADX 매개 변수는 너무 민감하게 설정되어 있어 추세가 약할 때 잘못된 출전을 초래할 수 있다.
대시장 비정상시, 개별 주식도 역동할 수 있다.
대응 위험 관리:
ADX 파라미터를 적절히 줄여서 좀 더 민감하게 만드십시오.
더 엄격한 스톱 라인을 설정하여 손실을 확대하지 마십시오.
RSI 변수를 적절히 강화하여 과도한 구매와 과도한 지분을 유지하는 것을 방지하십시오.
ADX 파라미터를 너무 민감하게 설정하지 마십시오. 오류가 발생하지 않도록하십시오.
대가 변동이 있을 때, 적절히 전략을 중지하고 수동으로 개입한다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
RSI 변수 설정을 최적화하고, 다른 주기 변수들이 전략 효과에 미치는 영향을 테스트한다.
ADX 파라미터 조합을 최적화하고, DI와 ADX 주기 파라미터가 전략의 트렌드 캡처 능력에 미치는 영향을 테스트한다.
테스트는 MACD와 같은 다른 지표를 보조 판단으로 추가한다.
다양한 평행선 조합을 테스트하여 진출 시기를 최적화한다.
스톱 스톱 손실 전략에 추가하여 전략의 수익 위험 비율을 높이는 테스트.
대장 지수 상태를 판단하고, 대장 회전시 수동으로 전략을 중지한다.
RSI 추적 ADX 전략은 전체적으로 간단하고 실용적인 긴 선의 트렌드 추적 전략이다. RSI와 ADX 두 지표의 장점을 동시에 결합하고, 트렌드 판단과 오버 바이 오버 세 판단에서 더 정확하다. 전략 운영은 간단하고, 실행하기 쉽고, 또한 특정 변수 최적화 공간도 있다. 그러나 ADX 지연 문제와 스톱 손실 설정 문제에 대해서도 주의를 기울여야 한다.
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Copyright by Reed Asset Management registered in Shanghai, China
//该策略为上海蘆田资产管理有限公司制
//@version=2
strategy("[蘆田策略]ADX+RSI", overlay=true)
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, 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)
plot(sig, color=red, title="ADX")
//ADX+RSI Strategy Long Entry
longEntry1 = sma(close, 20) > sma(close, 20)[1] //check if the ADX is rising
longEntry2 = (adx(14, 14) - adx(14, 14)[1]) > 0.2
longEntry3 = rsi(close, 14) < 85
longEntry4 = (adx(14, 14) - adx(14, 14)[1]) > 0
longEntry5 = (adx(14, 14) - adx(14, 14)[1] ) < 0.2
longEntry6 = rsi(close, 14) < 50
longCondition1 = longEntry1 and longEntry2 and longEntry3
longCondition2 = longEntry1 and longEntry4 and longEntry5 and longEntry6
if(longCondition1 or longCondition2)
strategy.entry("long", strategy.long)
//ADX+RSI Strategy Long Exit
longExit1 = rsi(close, 9) > 75
longExit2 = (adx(14, 14) - adx(14, 14)[1]) > 0
longExit3 = (adx(14, 14) - adx(14, 14)[1] ) < 0.2
longExit4 = (adx(14, 14) - adx(14, 14)[1]) > 0.2
longExit5 = sma(close, 20) < sma(close,20)[1]
longExitCondition1 = longExit1 and longExit2 and longExit3
longExitCondition2 = longExit1 and longExit4
longStop1 = strategy.position_avg_price + 4 * tr
longExitCondition3 = longExit5
longStop2 = sma(close, 20)
strategy.close_all(when = longExitCondition1)
if (longExitCondition2)
strategy.exit("exit", "long", stop = longStop1)
if (longExitCondition3)
strategy.exit("exit", "long", stop = longStop2)
//Strategy