이동평균선과 상대강도지수에 기반한 모멘텀 반전 전략


생성 날짜: 2024-01-03 17:14:15 마지막으로 수정됨: 2024-01-03 17:14:15
복사: 10 클릭수: 547
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

이동평균선과 상대강도지수에 기반한 모멘텀 반전 전략

개요

이 전략은 이동 평균과 상대적으로 강한 지표에 기반한 역동 역전 전략이다. 그것은 빠른 이동 평균과 느린 이동 평균의 교차와 과매매 과매매 신호를 이용하여 엔트리와 엑시트를 판단한다.

전략 원칙

이 전략은 14일 이동 평균을 빠른 신호선으로, 28일 이동 평균을 느린 신호선으로 사용한다. RSI 지표와 결합하여 시장이 과매매되고 있는지 판단한다.

14일 이동 평균 상에서 28일 이동 평균을 뚫고 RSI가 30 이하 또는 RSI가 13 이하일 때, 판정상황이 역전되고, 더 많은 진출을 한다. 14일 이동 평균 아래에서 28일 이동 평균을 뚫을 때, 판정상량 역전이 무효화되고, 부분적으로 진출을 중지한다.

또한, 전략은 부분 중단 메커니즘을 설정한다. 지분 수익이 설정된 중단 지점 (설정 8%) 을 달성했을 때 부분 중단 (설정 50% 판매) 을 설정한다.

우위 분석

이 전략은 이동 평균의 장점을 결합하면서, whipsaw의 손실을 피합니다.

  1. 은 이동 평균을 사용하여 일부 잡음을 필터링하십시오.

  2. RSI 지표는 과매매를 판단하고, 추이를 피한다.

  3. 부분 차단 메커니즘은 수익의 일부를 잠금하고 위험을 줄여줍니다.

위험 분석

  1. 이중 이동 평균 교차 전략은 손해를 초래하는 whipsaw를 쉽게 생성한다. 이 전략은 RSI 지표를 통해 보조 판단을 통해 일부 whipsaw를 필터링 할 수 있습니다.

  2. 부분적인 정지는 더 큰 상황을 놓칠 수 있다. 정지점을 조정함으로써 위험과 이익을 균형을 잡을 수 있다.

최적화 방향

  1. 다양한 변수의 이동 평균 조합을 테스트하여 최적의 변수를 찾습니다.

  2. 다양한 RSI 임계값을 테스트할 수 있다.

  3. 부분적으로 중지되는 중지점과 판매 비율을 조정할 수 있으며, 위험과 수익을 균형을 이룬다.

요약하다

이 전략은 전체적으로 전형적인 반전 전략이다. 이것은 시장의 반전을 판단하기 위해 급속한 평균선과 RSI 지표의 필터링 신호를 결합하는 것을 이용한다. 동시에 부분적인 스톱을 설정하여 부분적인 이익을 잠금한다. 이 전략은 간단하고 실용적이며, 파라미터를 조정하여 다른 시장에 적응할 수 있다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "14/28 SMA and RSI", shorttitle = "14/28 SMA and RSI", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)
src = close, len = input(14, minval=1, title="Length")
take_Profit=input(8, title="Take Profit")
quantityPercentage=input(50, title="Percent of Quantity to Sell")
closeOverbought=input(true, title="Close Overbought and Take Profit")
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))
longCondition = 0
sellCondition = 0
takeProfit = 0
quantityRemainder = 100
smaSignal = input(14, title="SMA Signal Period")
smaLong = input(28, title="SMA Longer Period")
if ((sma(close, smaSignal) >= sma(close, smaLong) and rsi<= 30) or (rsi<=13)) and strategy.position_size==0
    longCondition:=1

if longCondition==1
    strategy.entry("Buy", strategy.long)
    
profit = ((close-strategy.position_avg_price)/strategy.position_avg_price) * 100

if sma(close, smaSignal) <= sma(close, smaLong) and strategy.position_size>1
    sellCondition := 1

if strategy.position_size>=1
    if closeOverbought == true
        if profit>=take_Profit and takeProfit == 0
            strategy.exit("Take Profit", profit=take_Profit, qty_percent=quantityPercentage)
            takeProfit:=1
            quantityRemainder:=100-quantityPercentage
    if sellCondition == 1 and quantityRemainder<100
        strategy.close("Buy")

    if closeOverbought == false and rsi>70
        strategy.close("Take Profit")
        
plot(longCondition, "Buy Condition", green)
plot(takeProfit, "Partial Sell Condition", orange)
plot(sellCondition, "Sell Condition", red)