
이 전략은 RSI-MA 트렌드 추적 전략 이라고 하며, RSI 지표와 MA 평균선을 동시에 사용하여 가격 트렌드를 판단하고 거래 신호를 발산한다. RSI 지표가 설정된 상하값을 초과할 때 거래 신호를 발생시키고, MA 선은 가짜 신호를 필터링하기 위해 사용되며, 가격이 계속 상승하거나 하락할 때만 신호를 발산한다. 이것은 약간의 수익 공간을 유지하면서 효과적인 필터링 쇼크 상황을 할 수 있다.
이 전략은 주로 RSI 지표와 MA 평균선을 사용합니다. RSI는 과매매를 판단하는 데 사용되며 MA는 트렌드 방향을 결정하는 데 사용됩니다. 구체적인 논리는 다음과 같습니다.
RSI 지표값을 계산하고 상위 90위와 하위 10위 설정합니다. RSI가 90을 초과하면 과매매 신호이며 10 미만하면 과매매 신호입니다.
일정 주기 (예: 4일) 의 MA 평균선을 계산한다. 가격이 계속 상승할 때 MA 선이 상승한다. 가격이 계속 하락할 때 MA 선이 하락한다.
RSI가 90이 넘으면 MA가 오프라인으로 오르고, RSI가 10이 넘으면 MA가 오프라인으로 오르고, 더 많은 것을 한다.
스톱 손실은 각 손마다 고정된 점수, 스톱 은 각 손마다 고정된 퍼센트로 설정된다.
이 전략은 RSI 지표와 MA 평행선 이중 필터링을 결합하여 위기 상황에서의 가짜 신호를 효과적으로 필터링 할 수 있습니다. 동시에 RSI의 설정을 통해 신호가 너무 늦게 오는 것을 피하고, 약간의 수익 공간을 보장합니다. MA를 사용하여 트렌드 방향을 결정하고 역전 거래를 피합니다. 또한, 전략 매개 변수는 간단하고 이해하기 쉽고 최적화됩니다.
이 전략의 주요 위험은 다음과 같습니다.
급격한 하락이나 폭락으로 이어지는 급격한 사건으로 인해 RSI와 MA는 반응하지 않고 큰 손실을 초래할 수 있습니다.
RSI와 MA는 종종 신호를 발산할 수 있으며, 이는 거래비용과 슬라이드 포인트 비용을 증가시킬 수 있습니다.
매개 변수 설정이 잘못되면 전략 성능에도 영향을 미칠 수 있습니다. 예를 들어 RSI 위아래 임계값이 너무 넓게 설정되면 신호가 지연되고, 너무 좁게 설정되면 신호가 너무 자주 발생합니다.
이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.
다양한 품종과 주기 파라미터에 따라 테스트하고 최적화하여 최적의 파라미터 조합을 설정한다.
KDJ, BOLL 등과 같은 다른 지표 조합을 추가하여 더 엄격한 필터링 조건을 설정하여 잘못된 거래 가능성을 줄입니다.
변동율과 ATR에 따라 동적으로 중지 가격을 조정하는 등 적응형 중지 차단 장치를 설정하십시오.
기계 학습 알고리즘을 추가하여 시장 상황에 따라 전략 매개 변수를 자동으로 조정하고 매개 변수를 동적으로 최적화합니다.
이 RSI-MA 전략은 전체적으로 간단하고 실용적이며, 동향 추적과 과매매 판단을 결합하여 좋은 시장 환경에서 더 나은 수익을 얻을 수 있습니다. 그러나 특정 확률의 잘못된 거래 위험이 있으며, 위험을 줄이고 안정성을 높이기 위해 더 많은 최적화가 필요합니다.
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//This strategy is best used with the Chrome Extension AutoView for automating TradingView alerts.
//You can get the AutoView extension for FREE using the following link
//https://chrome.google.com/webstore/detail/autoview/okdhadoplaoehmeldlpakhpekjcpljmb?utm_source=chrome-app-launcher-info-dialog
strategy("4All", shorttitle="Strategy", overlay=false)
src = close
len = input(4, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, color=purple)
band1 = hline(90)
band0 = hline(10)
fill(band1, band0, color=purple, transp=90)
rsin = input(5)
sn = 100 - rsin
ln = 0 + rsin
short = crossover(rsi, sn)
long = crossunder(rsi, ln)
strategy.entry("long", strategy.long, when=long)
strategy.entry("short", strategy.short, when=short)
TP = input(15) * 10
SL = input(23) * 10
TS = input(0) * 10
CQ = 100
TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)
strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)