에일러스 스토카스틱 사이버 사이클 전략

저자:차오장, 날짜: 2024-01-17 16:03:30
태그:

img

전반적인 설명

에일러스 스토카스틱 사이버 사이클 전략은 에일러스 스토카스틱 사이클 지표를 사용하여 거래 신호를 생성하는 양적 거래 전략이다. 이 전략은 시장에서 순환적 기회를 포착하는 것을 목표로 스토카스틱 지표와 사이클 지표의 장점을 결합합니다.

전략 논리

이 전략은 먼저 매끄러운 사이클 지표를 만들고 그 지표에 기반한 스토카스틱 지표 값을 만듭니다. 거래 신호의 생성은이 스토카스틱 지표 값의 이동 평균 라인의 교차로 결정됩니다.

구체적으로 평형 주기 지표는 다음과 같이 계산됩니다.

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

src는 종료 가격과 같은 입력 가격 데이터입니다. 이 지표는 현재 가격과 이전 3 기간의 가격을 결합하여 부드러운 사이클 신호를 구성합니다.

이 부드러운 지표에 기초하여 스토카스틱 사이클 사이클을 계산할 수 있습니다.

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) *  
           (smooth - 2 * smooth[1] + smooth[2]) +  
           2 * (1 - alpha) * cycle[1] -  
           (1 - alpha) * (1 - alpha) * cycle[2]

이 계산 공식은 평형 주기 신호의 두 번째 순위 차이와 이전 두 주기의 값을 포함합니다. α는 새와 오래된 주기의 값을 조정하는 평형 요인입니다.

마지막으로, 이 사이클 지표에 기초하여 0-100 무작위 값 값1이 계산되고, 신호 값 신호는 값의 10일 이동 평균에 기초하여 구성된다. 신호의 이동 평균 선이 상향 또는 하향을 넘을 때 거래 신호가 발행된다.

전략 의 장점

이 전략은 스토카스틱 지표와 사이클 지표를 결합하여 둘의 장점을 통합합니다. 이동 평균과 같은 간단한 트렌드 전략에 비해이 전략은 순환적 기회를 더 잘 포착하여 더 나은 결과를 얻을 수 있습니다.

주요 장점은 다음과 같습니다.

  1. 순환 지표는 순환 패턴을 식별 할 수 있습니다. 스토카스틱 지표는 거래 기회를 제공합니다.
  2. 이중 표시기 설계는 거짓 신호를 효과적으로 필터 할 수 있습니다.
  3. 사용자 정의 가능한 매개 변수는 다른 시장 환경에 적합합니다

전략 의 위험

이 전략의 주요 위험은 다음과 같습니다.

  1. 부적절한 매개 변수 설정은 거래의 빈도와 거래 비용 및 미끄러짐 비용을 증가시킬 수 있습니다.
  2. 큰 손실로 이어질 수 있는 치열한 가격 변동이 있는 시장을 효과적으로 처리할 수 없습니다.
  3. 사이클 표시기 곡선 부착에 크게 의존합니다, 부적절한 부착은 잘못된 신호를 생성 할 수 있습니다

위험은 매개 변수 설정을 최적화하고, 스톱 손실 지점을 설정하고, 다른 필터링 지표를 결합하여 제어 할 수 있습니다.

최적화 방향

이 전략은 다음 측면에서도 최적화 될 수 있습니다.

  1. 거짓 신호를 줄이기 위해 볼링거 밴드, RSI 등 신호 필터링을 위한 다른 기술적 지표와 결합
  2. 적응 가능한 출구 메커니즘을 추가하고 시장 변동성에 따라 스톱 로스 포인트를 동적으로 조정합니다.
  3. 기계 학습 방법을 사용하여 시장에 동적으로 적응하기 위해 매개 변수를 자동으로 최적화합니다.
  4. 레버리지, 컴파운딩 및 기타 방법을 통해 자본 활용을 최적화

결론

에일러스 스토카스틱 사이버 사이클 전략은 위험을 효과적으로 제어하기 위해 이중 신호 디자인을 통해 스토카스틱 및 사이클 지표의 장점을 통합하고 강력한 순환성을 가진 시장에서 좋은 수익을 얻을 수 있습니다. 추가 최적화로이 전략은 추천 할만한 양적 거래 전략이 될 수 있습니다.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)

더 많은