Stochastic Slow Indicator를 기반으로 한 거래 전략

EMA RSI TP SL AI RNN
생성 날짜: 2024-04-12 16:26:06 마지막으로 수정됨: 2024-04-12 16:26:06
복사: 3 클릭수: 649
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Stochastic Slow Indicator를 기반으로 한 거래 전략

개요

이 전략은 무작위 느린 지표 (Stochastic Slow Oscillator) 를 기반으로 한 거래 전략이며, 이동 평균 (Moving Average), 상대적으로 약한 지수 (RSI) 및 인공지능 (AI) 기술을 결합합니다. 이 전략은 무작위 느린 지표의 교차 신호를 통해 판단하며, 200 일 이동 평균에 대한 가격의 위치와 인공지능 모델에서 생성 된 신호를 고려하여 구매 신호를 결정합니다.

전략 원칙

  1. K값의 평준화 주기가 18이고, D값의 평준화 주기가 7인 30주기의 무작위 느린 속도 지표를 계산한다.
  2. 과매매와 과매매의 임계값을 각각 40과 19로 설정하고, 최소 K값을 12로 설정한다.
  3. 트렌드 필터로 200일 간소 이동 평균을 계산한다.
  4. 회귀신경망 ((RNN) 모형을 사용하여 구매/판매 신호를 생성한다.
  5. 다중 입점 조건: 가격이 200일 이동 평균을 통과하고, K값은 초매한치보다 작고 최소 K값보다 크며, AI 신호는 1 ᆞ이다.
  6. 공허 진입 조건: 가격이 200일 이동 평균을 넘어서 K 값이 초과 구매 마이너스보다 크며 최소 K 값보다 크며, AI 신호는 -1.
  7. 무작위 지표가 교차되어 오버 바이 오버 세 조건이 충족될 때, 구매/판매 신호가 생성된다.
  8. 스톱 포스트는 현재 가격에서 500 포인트 상하로, 스톱 로스는 현재 가격에서 200 포인트 상하로 설정한다.

전략적 이점

  1. 여러 기술 지표와 인공지능 기술을 결합하여 전략의 안정성과 적응성을 높였습니다.
  2. 무작위 느린 지표를 주요 구매 신호로 사용하여 시장의 과매매 과매매 상태를 효과적으로 캡처하십시오.
  3. 트렌드 필터로 200일 이동 평균을 도입하여 역동적인 트렌드에서 거래하는 것을 피하십시오.
  4. 인공지능 모델을 사용하여 구매 및 판매 신호를 생성하여 전략의 지능화를 강화합니다.
  5. 명확한 스톱 스톱 손실을 설정하여 위험을 효과적으로 제어합니다.

전략적 위험

  1. 무작위 지표는 특정 시장 조건에서 더 많은 가짜 신호를 생성 할 수 있습니다.
  2. 인공지능 모델의 유효성은 훈련 데이터의 품질과 모델의 디자인에 달려 있으며, 일정 정도의 불확실성이 존재한다.
  3. 고정된 스톱 스톱 리스는 다양한 시장 변동 상황에 적응하지 못할 수 있다.
  4. 시장의 갑작스러운 사건과 비정상적인 변동에 대응하는 전략이 부족하다.

전략 최적화 방향

  1. K값과 D값의 부드러운 주기를 조정하는 것과 같은 무작위 지표의 매개 변수를 최적화하여 지표의 유효성을 향상시킵니다.
  2. 인공지능 모델의 디자인을 개선하고, 더 많은 시장 특성과 데이터를 도입하여 모델의 예측 정확도를 향상시킵니다.
  3. 동적 중지 중지 손실 메커니즘을 적용하여 시장의 변동성과 위험 수준에 따라 중지 중지 손실을 조정합니다.
  4. 시장 감정 분석과 이벤트 동력을 도입하여 시장의 갑작스러운 사건에 대한 대응 능력을 강화합니다.
  5. 포지션 관리 및 자금 관리 모듈을 추가하여 전략의 자금 사용 효율성과 위험 통제를 고려하십시오.

요약하다

이 전략은 무작위 느린 지표, 이동 평균, 상대적으로 강한 지표와 인공 지능 기술을 결합하여 다중 요소 거래 전략을 구성한다. 전략은 무작위 지표를 사용하여 과매도 과매도 신호를 캡처하고, 트렌드 필터와 지능화 신호를 사용함으로써 전략의 안정성과 적응력을 향상시킨다. 전략에는 지표 실패와 모델 불확실성과 같은 특정 위험이 있지만, 지표 매개 변수를 최적화하고, 인공 지능 모델을 개선하고, 동적 위험 관리 조치 방법을 채택함으로써 전략의 성능과 위험 제어 능력을 더욱 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2024-03-12 00:00:00
end: 2024-04-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Stochastic Slow Strategy with More Entries and AI", overlay=true)

length = input.int(30, minval=1)
OverBought = input(40)
OverSold = input(19)
smoothK = input.int(18, minval=1)
smoothD = input.int(7, minval=1)
minKValue = input(12, title="Minimum K Value")

// Stochastic calculations
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
co = ta.crossover(k, d)
cu = ta.crossunder(k, d)

// Trend filter (200-period simple moving average)
ema200 = ta.sma(close, 200)

// Define la función para calcular la señal de la red neuronal recurrente
rnn_signal(price_series) =>
    // Aquí implementa tu modelo de red neuronal recurrente para generar la señal
    // Puedes usar bibliotecas externas o implementar tu propio modelo aquí

    // Ejemplo de señal aleatoria
    signal = ta.rsi(price_series, 14) > 50 ? 1 : -1
    
    // Devuelve la señal generada por la red neuronal recurrente
    signal

// Calcula la señal utilizando la función definida anteriormente
ai_signal = rnn_signal(close)

// Entry conditions
longCondition = ta.crossover(close, ema200) and k < OverSold and k > minKValue and ai_signal == 1
shortCondition = ta.crossunder(close, ema200) and k > OverBought and k > minKValue and ai_signal == -1

if (not na(k) and not na(d))
    if (co and k < OverSold and k > minKValue)
        strategy.entry("LONG", strategy.long, comment="LONG")
        strategy.exit("ExitLong", "LONG", profit = close * 500, loss = close * 200)
    if (cu and k > OverBought and k > minKValue)
        strategy.entry("SHORT", strategy.short, comment="SHORT")
        strategy.exit("ExitShort", "SHORT", profit = close * 500, loss = close * 200)
    
if (longCondition)
    strategy.entry("LongEntry", strategy.long, comment="LongEntry")
    strategy.exit("ExitLongEntry", "LongEntry", profit = close * 500, loss = close * 200)
if (shortCondition)
    strategy.entry("ShortEntry", strategy.short, comment="ShortEntry")
    strategy.exit("ExitShortEntry", "ShortEntry", profit = close * 500, loss = close * 200)

// Plotting
plot(ema200, color=color.blue, title="200 SMA")