이중 스토카스틱 오시레이터 전략

저자:차오장, 날짜: 2023-09-17 18:26:16
태그:

전반적인 설명

이 전략은 황소/곰의 조건을 결정하기 위해 서로 다른 매개 변수와 함께 두 개의 스토카스틱 오시레이터를 사용합니다. 이것은 전형적인 이동 평균 크로스오버 시스템입니다. 더 빠른 오시레이터는 단기 트렌드와 엔트리 신호를 판단하고 느린 것은 전체 트렌드 방향을 확인합니다. 신호는 조합에서 생성됩니다.

전략 논리

  1. 빠른 %K는 단기 트렌드 방향을 나타냅니다.

  2. 느린 %K는 전체 트렌드 조건을 반영합니다. 빠른 오시일레이터가 반전 신호를 표시하면 느린 오시일레이터가 트렌드 유효성을 확인합니다.

  3. SM1 이상의 빠른 크로스오버 %K는 상승 신호를 나타냅니다. 50 이상의 느린 %K는 상승 추세를 나타내고 긴 조건을 만족시킵니다.

  4. SM1 이하의 %K 빠른 크로스오버는 하락 신호를 나타냅니다. 50 이하의 느린 %K는 하락 추세를 나타냅니다.

  5. 고정된 비율로 수익을 취하고 손실을 멈추는 지점을 설정합니다.

이점 분석

  1. 이중 스토카스틱 필터는 소음을 차단하고 정확도를 향상시킵니다. 빠르고 느린 조합은 함락 될 위험을 줄입니다.

  2. 작은 SM1 매개 변수는 %K를 단기 기회에 민감하게 만듭니다.

  3. 더 큰 사이클은 전체 추세를 판단하고 더 작은 사이클은 반전을 포착합니다. 이중 장기/단기 전략은 대부분의 시장 환경에 적합합니다.

  4. 고정된 수익점과 손해를 막는 지점은 큰 변동 없이 위험을 조절할 수 있게 합니다.

위험 분석

  1. 지표들 사이의 오차는 놓친 거래나 잘못된 신호를 유발할 수 있습니다.

  2. 고정 수익 취득 및 중단 손실 포인트는 시장에 적응하는 데 유연성이 없습니다.

  3. 스토카스틱 매개 변수는 반복적인 최적화가 필요하고 잘못된 설정은 실패로 이어집니다.

  4. 단기 거래의 높은 거래 빈도는 거래 비용을 증가시킵니다.

최적화 방향

  1. 신호 품질을 보장하기 위해 다른 표시기 또는 필터를 추가합니다.

  2. 최적의 설정을 찾기 위해 다른 매개 변수 조합을 테스트합니다.

  3. 이윤 취득 및 스톱 손실 수준을 동적으로 만들기 위해 변동성 조치를 포함합니다.

  4. 시간 필터를 사용하여 주요 이벤트와 비합리적인 가격 변동을 피하십시오.

  5. 자본 효율을 높이기 위해 포지션 사이즈와 같은 자본 관리 전략을 최적화하십시오.

요약

이 전략은 빠른 및 느린 스토카스틱 오시레이터를 이중 방향 시스템으로 통합합니다. 추가 매개 변수 최적화 및 트렌드 및 변동성 지표와 같은 필터를 추가하면 개선 될 수 있습니다. 적절한 위험 통제와 함께이 전략은 비교적 안정적인 초과 수익을 얻을 수 있습니다.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

더 많은