RSI 축 이동 평균 교차 전략


생성 날짜: 2023-11-23 16:45:55 마지막으로 수정됨: 2023-11-23 16:45:55
복사: 2 클릭수: 751
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 축 이동 평균 교차 전략

개요

RSI 축평균선 교차 전략은 RSI 지표와 간단한 이동 평균을 계산하고 두 사람의 금叉死叉를 관찰하여 진출을 판단합니다. 이 전략은 동시에 부린带을 RSI 축평균선으로 추가 지원 저항 판단에 결합합니다.

전략 원칙

이 전략은 먼저 14일 RSI 지표를 계산하고, 그 다음에는 RSI 지표의 8일 간단한 이동 평균을 계산한다. RSI 지표가 아래에서 위로 이동하는 평균을 돌파할 때 구매 신호를 발생시키고, RSI가 위에서 아래로 이동하는 평균을 돌파할 때 판매 신호를 발생시킨다.

동시에 이 전략은 RSI 축평균선에 부린 반을 추가한다. 부린 반은 RSI 축평균선이 상대적으로 너무 꽉 차있는지 판단하기 위해 표준 차이를 계산하여 높은 것을 사서 낮은 것을 팔지 않도록한다.

우위 분석

RSI 축평균선 교차전략은 트렌드 지표 RSI와 곡선 순차 지표 이동 평균을 결합하여 시장의 추세와 무작위성을 효과적으로 판단할 수 있습니다. RSI 지표의 수학적 평균은 가격 변동이 신호에 미치는 영향을 더 잘 평행 할 수 있습니다.

이 전략에 추가된 부린 밴드는 표준 차차 원리를 사용하며, 오르락 내리락의 폭을 자동으로 조정할 수 있어 거래 신호의 혼란을 효과적으로 방지한다. 부린 밴드가 좁아질 때, 변화가 서서히 완화되는 것을 나타내며, 역전 기회를 찾는 데 적합하다. 부린 밴드가 넓어질 때, 거래상황이 급격하게 변동하는 기간을 나타내어, 트렌드를 추적하는 데 적합하다.

위험 분석

RSI 축평균형 가로수지 전략의 가장 큰 위험은 RSI 지표와 이동 평균 자체의 지연성이다. 급격한 상황이 올 때, 지표의 계산과 트렌드 판단은 약간의 지연이 있을 것이다. 이것은 구매 지점이 높이고 판매 지점이 낮아질 수 있다.

또 다른 주요 위험은 트렌드 호이 베어 전환 시 지표의 오해입니다. 시장 상황이 변하면서 RSI와 평균 지표가 반응하지 않은 상태에서는 잘못된 거래 신호가 발생하여 손실이 발생합니다.

해결 방법은 RSI 파라미터를 적절하게 조정하여 평균 주기를 줄이는 것; 트렌드형 지표 보조 판단을 추가하는 것; 적절히 느슨한 스톱 레인지.

최적화 방향

RSI 축평선교차 전략은 다음과 같은 방향으로 최적화할 수 있다:

  1. RSI 파라미터를 최적화: RSI의 길이를 조정하면 민감성과 안정성을 균형을 잡을 수 있습니다.

  2. 이동 평균 파라미터를 최적화: 평균선 유형과 주기 파라미터를 조정하고, 지표의 점진성을 최적화

  3. 손해 제도를 늘리십시오: 이동 손해 또는 시간 손해를 설정하여 단독 손실을 제어하십시오.

  4. 트렌드 지표와 결합: MACD, KDJ 등의 지표를 추가하여 역전 오류 판단을 피하십시오.

  5. 다중 시간 프레임 검증: 더 높은 시간 프레임을 사용하여 트렌드를 확인하고, 함정을 피하십시오.

요약하다

RSI 축평선교차 전략은 전체적으로 비교적 성숙한 양적 거래 전략이다. 그것은 여러 가지 기술 지표의 장점을 결합하여, 매개 변수 조정 및 다차원 최적화를 통해 시장의 주류 현상에 진입할 수 있다. 이 전략의 가장 큰 위험은 지표의 낙후성이며, 손실을 제어하기 위해 중지 손실과 함께 필요하다. 적절하게 운용되면, RSI 축평선교차 전략은 더 안정적인 투자 수익을 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")