골드 합성 이동 평균 교차 RSI 혼합 전략


생성 날짜: 2024-03-01 12:28:38 마지막으로 수정됨: 2024-03-01 12:28:38
복사: 0 클릭수: 414
1
집중하다
1166
수행원

골드 합성 이동 평균 교차 RSI 혼합 전략

개요

이 전략은 이동 평균 지표, 상대적으로 약한 지표 ((RSI) 와 포식 형태를 결합하여 금 거래에서 긴 짧은 양방향 작업을 수행합니다. 21 일 일, 50 일 일 및 200 일 일 일선의 교차를 주요 거래 신호로 사용하며, RSI 지표와 포식 형태는 필터링 신호를 보조하여 시장 진입 지점을 더 최적화합니다.

전략 원칙

이 전략은 주로 다음과 같은 요소들을 통해 거래 결정을 내립니다.

  1. 이동 평균의 크로스

21일선과 200일선의 황금포크/죽음포크를 트렌드 전환을 판단하는 주요 지표로 사용한다. 21일선 상의 200일선을 통과할 때 상향 신호이며, 21일선 아래의 200일선을 통과할 때 하향 신호이다.

  1. RSI 지표 보조

RSI 지표의 오버 바이 라인과 오버 소이 라인을 설정합니다. RSI가 70보다 높으면 오버 바이, RSI가 30보다 낮으면 오버 소이입니다. RSI는 부어 신호를 할 때 오버 바이 영역에 있어야 하고, 하향 신호를 할 때 RSI는 오버 소이 영역에 있어야 합니다.

  1. 포식 형식 확인

보수 신호가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신될 때 보수 삼킨 형태 candle가 발신 경향을 확인하기 위해

위의 세 가지 조건이 동시에 충족되면 거래 신호가 생성되고 주문이 이루어지며, 엄격한 필터 세트가 형성된다.

전략적 이점

이 전략의 가장 큰 장점은 여러 가지 변수와 지표를 사용하여 종합적인 판단을 함으로써 잘못된 신호를 더 잘 필터링하여 불필요한 손실을 줄일 수 있다는 것입니다. 구체적인 장점은 다음과 같은 몇 가지 측면에서 나타납니다:

  1. 이동 평균 전략은 그 자체로 안정성이 있습니다.

  2. RSI 지표의 설정은 구매 하위점과 판매 하위점을 피한다.

  3. 모형의 추가는 추세 반전의 신뢰성을 더욱 확증할 수 있습니다.

  4. 스탠포드 대학 (University of Maryland) 의 한 연구소에서

전략적 위험

이 전략은 신호 필터링과 위험 관리에 있어 좋은 성과를 거뒀지만, 모든 전략에는 약점과 위험이 있다.

  1. 매개 변수 설정은 더 복잡하며, 최적의 매개 변수 조합을 찾기 위해 많은 테스트가 필요할 수 있다.

  2. 입시 신호가 엄격하기 때문에 좋은 기회를 놓칠 수 있습니다.

  3. “이런 일이 벌어진다면, 어떤 일이 벌어질까요?”

  4. 하지만, 장기적인 안정성은 아직 확인되지 않았다.

위와 같은 위험에는 변수를 조정하고, 코드 논리를 최적화하고, 다른 지표와 결합하여 개선하고 최적화 할 수 있습니다.

최적화 방향

이 전략은 여러 지표들을 종합적으로 판단하는 데 좋은 성과를 거뒀지만, 여전히 최적화할 수 있는 여지가 있다. 주요 최적화 방향은 다음과 같다:

  1. 최적의 조합을 찾기 위해 파라미터를 조정한다. 더 많은 역사적 데이터를 회수하여 다른 파라미터의 결과에 대한 영향을 비교하여 더 나은 파라미터 세트를 찾을 수 있다.

  2. 다른 지표와 결합하여 보조한다. MACD, KD와 같은 지표는 또한 트렌드 전환의 시간을 판단하는 데 도움을 줄 수 있다. 적절한 다른 지표의 도입은 더 강력한 지표 시스템을 형성할 수 있다.

  3. 최적화 및 개선된 손실 메커니즘. 현존하는 막힘은 작고, 다른 막힘의 막힘이 불필요한 포지션 전환을 줄일 수 있는지에 대한 추가 테스트를 할 수 있습니다.

  4. 더 긴 기간의 데이터를 테스트하고, 전략의 장기적인 효과를 검증한다. 더 많은 연도와 시장 상황에 대한 반감으로, 전략의 안정성을 검증한다.

요약하다

이 전략은 이동 평균, RSI 지표 및 흡수 형태와 같은 여러 가지 기술 분석 도구를 사용하여 금 거래에서 긴 긴 양방향 작업을 수행합니다. 파라미터 설정 및 신호 필터링을 통해 상당히 엄격한 전략 시스템을 형성하여 위험을 어느 정도 제어합니다. 그러나 어떤 전략도 100% 완벽 할 수는 없으며, 이 전략에는 여전히 최적화 할 수있는 공간과 방향이 있습니다.

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

//@version=4
strategy("Gold Trading with Simons Strategy", overlay=true)

// Parameters
length21 = input(21, minval=1, title="Length for 21 MA")
length50 = input(50, minval=1, title="Length for 50 MA")
length200 = input(200, minval=1, title="Length for 200 MA")
rsiLength = input(14, minval=1, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")
takeProfitPercent = input(4, title="Take Profit %")
stopLossPercent = input(1, title="Stop Loss %")

// Moving Averages
ma21 = sma(close, length21)
ma50 = sma(close, length50)
ma200 = sma(close, length200)

// RSI
rsi = rsi(close, rsiLength)

// Engulfing Pattern
isBullishCandle(c) => close[c] > open[c]
isBearishCandle(c) => close[c] < open[c]

bearishEngulfing = isBullishCandle(1) and isBearishCandle(0) and close < open[1] and open > close[1]
bullishEngulfing = isBearishCandle(1) and isBullishCandle(0) and close > open[1] and open < close[1]

// Calculate Take Profit and Stop Loss Levels
takeProfitLevel(entryPrice) => entryPrice * (1 + takeProfitPercent / 100)
stopLossLevel(entryPrice) => entryPrice * (1 - stopLossPercent / 100)

// Entry Conditions
longCondition = crossover(ma21, ma200) and close > ma21 and close > ma50 and rsi < rsiOverbought and bullishEngulfing
shortCondition = crossunder(ma21, ma200) and close < ma21 and close < ma50 and rsi > rsiOversold and bearishEngulfing

// Entry
if (longCondition)
    entryPrice = close
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit", "Long", limit=takeProfitLevel(entryPrice))
    strategy.exit("Stop Loss", "Long", stop=stopLossLevel(entryPrice))
if (shortCondition)
    entryPrice = close
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit", "Short", limit=takeProfitLevel(entryPrice))
    strategy.exit("Stop Loss", "Short", stop=stopLossLevel(entryPrice))

// Plotting
plot(ma21, color=color.blue, title="21 MA")
plot(ma50, color=color.orange, title="50 MA")
plot(ma200, color=color.red, title="200 MA")
hline(rsiOverbought, "RSI Overbought", color=color.green)
hline(rsiOversold, "RSI Oversold", color=color.red)
plot(rsi, "RSI", color=color.purple)