리소스 로딩... 로딩...

두 개의 이동 평균 크로스오버, RSI 및 스토카스틱 지표에 기초한 단기적인 양적 거래 전략

저자:차오장, 날짜: 2024-06-17 15:35:40
태그:SMARSIATR

img

전반적인 설명

이 전략은 복수의 기술적 지표의 공동 확인을 통해 단기 거래에서 높은 확률의 거래 기회를 찾기 위해 이중 이동 평균 크로스오버, RSI 및 스토카스틱 지표를 결합합니다. 이 전략은 20 일 및 50 일 이동 평균의 크로스오버를 주요 거래 신호로 사용하고 RSI와 스토카스틱 지표를 보조 판단으로 통합하여 거래 신호를 두 번 확인합니다. 또한 전략은 ATR을 중지 손실 및 수익을 취하기 위한 기초로 사용하고 있으며, 고정된 위험-상금 비율로 포지션을 관리하며 위험을 제어하면서 안정적인 수익을 얻기 위해 노력합니다.

전략 원칙

  1. 20일 및 50일 이동 평균을 계산합니다. 단기 평균이 장기 평균을 넘으면 긴 신호를 생성합니다. 반대로 짧은 신호를 생성합니다.
  2. RSI 지표를 보조 판단으로 도입하고, RSI 지표가 과소 구매 또는 과소 판매 범위를 달성하지 않은 경우에만 포지션을 설정하는 것을 고려합니다.
  3. 스톡라스틱 지표를 보조 판단으로 도입하고 스톡라스틱 지표의 K 라인이 과잉 구매 또는 과잉 판매 범위에 도달하지 않은 경우에만 포지션을 설정하는 것을 고려하십시오.
  4. ATR를 사용하여 스톱 로스 및 취리 레벨을 계산하고, 1: 2 리스크/이익 비율에 따라 스톱 로스 및 취리 가격을 설정합니다.
  5. 장기간 거래할 때, 스톱 로스 레벨은 ATR를 빼고 가장 낮은 가격이고, 영업 수익 레벨은 가장 높은 가격과 ATR의 2배입니다. 단위로 거래할 때, 스톱 로스 레벨은 가장 높은 가격과 ATR이고, 영업 수익 레벨은 가장 낮은 가격과 ATR의 2배입니다.

전략적 장점

  1. 이중 이동 평균 크로스오버는 간단하고 사용하기 쉬운 트렌드 판단 지표이며, RSI와 스토카스틱 지표와 결합하면 잘못된 신호를 효과적으로 필터링할 수 있습니다.
  2. RSI와 스토카스틱 지표는 시장이 너무 많이 구매되거나 너무 많이 팔렸는지 결정하는 데 도움이 될 수 있으며 극단적인 시장 조건에서 입장을 피합니다.
  3. 고정된 리스크/이익 비율을 가진 포지션 관리 방법은 전체 리스크를 통제한다는 전제 아래 비교적 안정적인 수익을 얻을 수 있습니다.
  4. 매개 변수는 조정 가능하며 다른 시장 환경과 거래 스타일에 적합합니다.

전략 위험

  1. 트렌드를 따르는 전략은 변동적인 시장에서 더 많은 잘못된 신호를 생성하는 경향이 있으며, 이는 빈번한 거래와 자본 손실로 이어집니다.
  2. 일정한 비율의 스톱 손실은 과도한 단독 손실로 이어질 수 있으며, 자금 곡선을 약화시킬 수 있습니다.
  3. 포지션 관리와 자본 관리에 대한 고려가 부족하기 때문에 극단적인 시장 조건에 대처하는 것이 어렵습니다.

전략 최적화 방향

  1. 신호의 정확성과 신뢰성을 향상시키기 위해 더 효과적인 기술 지표를 도입합니다.
  2. 전략의 수익성을 높이기 위해 더 역동적이고 지능적인 방법을 채택하여 스톱 로스 및 수익을 취하는 설정 방법을 최적화하십시오.
  3. 포지션 관리의 측면에서, ATR과 같은 변동성 지표와 함께 포지션에 대한 동적 조정도 가능합니다.
  4. 자본 관리의 측면에서, 자본 활용 효율성을 향상시키기 위해 위험 예산화 및 켈리 공식과 같은 방법을 도입 할 수 있습니다.

요약

이 전략은 이중 이동 평균, RSI 및 스토카스틱 지표에 기반한 단기 거래 전략이다. 여러 기술적 지표의 공동 확인을 통해 트렌드 기회를 파악하는 동안 거래 위험을 제어합니다. 전략 논리는 명확하고 매개 변수는 최적화하기 쉽고 단기 거래에 종사하는 투자자에게 적합합니다. 그러나 전략에는 제한된 트렌드 포착 능력 및 포지션 및 자본의 동적 관리 부족과 같은 몇 가지 단점이 있습니다. 이러한 문제는 더 많은 기술적 지표, 신호 최적화 및 포지션 관리 등을 도입하여 개선 할 수 있습니다.


/*backtest
start: 2024-05-17 00:00:00
end: 2024-06-16 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Cruce de Medias con Filtros de RSI y Estocástico", overlay=true)

// Definir parámetros de las medias móviles
fast_length = input(20, title="Periodo de Media Rápida")
slow_length = input(50, title="Periodo de Media Lenta")

// Calcular medias móviles
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)

// Añadir filtro RSI
rsi_length = input(7, title="Periodo del RSI")
rsi = ta.rsi(close, rsi_length)
rsi_overbought = input(70, title="RSI Sobrecomprado")
rsi_oversold = input(30, title="RSI Sobrevendido")

// Añadir filtro Estocástico
k_period = input(7, title="K Periodo del Estocástico")
d_period = input(3, title="D Periodo del Estocástico")
smooth_k = input(3, title="Suavización del Estocástico")
stoch_k = ta.sma(ta.stoch(close, high, low, k_period), smooth_k)
stoch_d = ta.sma(stoch_k, d_period)
stoch_overbought = input(80, title="Estocástico Sobrecomprado")
stoch_oversold = input(20, title="Estocástico Sobrevendido")

// Definir niveles de stop-loss y take-profit con ratio 2:1
risk = input(1, title="Riesgo en ATR")
reward_ratio = input(2, title="Ratio Riesgo/Beneficio")
atr_length = input(14, title="Periodo del ATR")
atr = ta.atr(atr_length)
stop_loss = risk * atr
take_profit = reward_ratio * stop_loss

// Señal de compra
long_condition = ta.crossover(fast_ma, slow_ma) and rsi < rsi_overbought and stoch_k < stoch_overbought
if (long_condition)
    strategy.entry("Compra", strategy.long)

// Señal de venta
short_condition = ta.crossunder(fast_ma, slow_ma) and rsi > rsi_oversold and stoch_k > stoch_oversold
if (short_condition)
    strategy.entry("Venta", strategy.short)

// Configurar Stop-Loss y Take-Profit para posiciones largas
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", from_entry="Compra", stop=low - stop_loss, limit=high + take_profit)

// Configurar Stop-Loss y Take-Profit para posiciones cortas
if (strategy.position_size < 0)
    strategy.exit("Take Profit/Stop Loss", from_entry="Venta", stop=high + stop_loss, limit=low - take_profit)

// Plotear las medias móviles en el gráfico
plot(fast_ma, title="Media Rápida (50)", color=color.blue)
plot(slow_ma, title="Media Lenta (200)", color=color.red)

// Plotear RSI y Estocástico en subgráficos
hline(rsi_overbought, "RSI Sobrecomprado", color=color.red)
hline(rsi_oversold, "RSI Sobrevendido", color=color.green)
plot(rsi, title="RSI", color=color.orange, linewidth=2)
hline(stoch_overbought, "Estocástico Sobrecomprado", color=color.red)
hline(stoch_oversold, "Estocástico Sobrevendido", color=color.green)
plot(stoch_k, title="Estocástico K", color=color.purple, linewidth=2)
plot(stoch_d, title="Estocástico D", color=color.purple, linewidth=1, style=plot.style_stepline)


관련

더 많은