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

신호 평형 에일러 사이버 사이클 전략

저자:차오장, 날짜: 2024-02-19 10:42:34
태그:

img

전반적인 설명

이 전략은 윤택한 거래 신호로 거래 전략을 설계하기 위해 Ehlers가 제안한 사이버 사이클 이론을 기반으로 윤택한 가격 신호를 계산합니다. 시장 소음을 효과적으로 필터하고 더 신뢰할 수있는 거래 신호를 생성 할 수 있습니다.

전략 원칙

  1. 원시 가격 신호 src를 두 번째 순서 매끄러운 신호를 얻기 위해 매끄럽게 매끄럽게.

  2. 평형 신호를 기반으로 순환 지표 주기를 계산합니다. 계산 방법은 다음과 같습니다. 사이클:= (1 -.5알파) (1 - .5 알파)(슬라드 - 2)매끄러운[1] + 매끄러운[2]) + 2(1 - 알파)사이클[1] - (1 - 알파)(1 - 알파) * 사이클[2]

    여기서 α는 평형 매개 변수입니다.

  3. 최종 거래 신호 신호를 얻기 위해 순환 지표를 1차 순위 평평화로 기하급수적으로 평평화합니다. 계산 방법은: 신호:= 알파2사이클 + (1 - 알파2)nz (신호[1])

    여기서 α2는 1차 평형 매개 변수입니다.

  4. 신호가 신호를 넘을 때 길다[1]; 신호가 신호 아래를 넘을 때 짧다[1].

이점 분석

  1. 가격 신호의 2차 평형화는 고주파 소음을 효과적으로 필터링하여 거래 신호를 더 신뢰할 수 있습니다.

  2. 에일러스의 사이버 사이클 이론을 적용하면 시장 트렌드의 전환점을 더 정확하게 결정할 수 있습니다.

  3. 첫 번째 순위의 기하급수 평형은 더 신뢰할 수 있는 거래 신호를 생성하기 위해 순환 지표의 소음을 필터합니다.

  4. 전략의 전체 과정은 합리적이고 과학적이며, 큰 매개 변수 최적화 공간과 훌륭한 실제 성능입니다.

위험 분석

  1. 다른 기술 지표 전략과 마찬가지로 이 전략도 체계적 시장 위험에 상대적으로 민감합니다. 블랙 스완 이벤트의 경우 큰 손실을 입을 수 있습니다.

  2. 복잡한 계산 과정으로 인해 부적절한 매개 변수 설정은 계산 지연을 유발하여 실제 성능에 영향을 줄 수 있습니다. 과학적이고 합리적인 설정을 보장하기 위해 매개 변수를 신중하게 테스트해야합니다.

  3. 부드러운 처리는 또한 시장 전환점을 적시에 포착하지 못하는 지체된 거래 신호로 이어지며 기회를 놓칠 수 있습니다. 부드러운 매개 변수 설정은 균형을 유지해야합니다.

최적화 방향

  1. 다양한 종류의 평형 알고리즘을 테스트 할 수 있습니다. 첫 번째 순위의 기하급수 평형, 이동 평균 평형 등이 최적의 평형 스키마를 찾기 위해 사용됩니다.

  2. 적응적인 매개 변수 조정 메커니즘을 도입하여 전략 안정성을 향상시키기 위해 시장 조건에 따라 매개 변수를 동적으로 조정할 수 있습니다.

  3. 스톱 로스 및 수익 전략은 단일 손실의 위험을 줄이고 동시에 수익을 차단하도록 설계 될 수 있습니다.

  4. 그것은 다른 기계 학습 모델과 결합하여 모델 포트폴리오를 달성하고 다른 모델을 사용하여 거래 신호를 필터 할 수 있습니다.

요약

이 전략은 가격 신호 평형화 및 Ehlers 사이버 사이클 지표 계산을 통해 거래 신호 평형화 Ehlers 사이버 사이클 거래 전략을 설계합니다. 그것은 효과적으로 소음을 필터하고 더 신뢰할 수있는 거래 신호를 생성 할 수 있습니다. 동시에 매개 변수 공간이 크고 실제 성능이 좋습니다. 적응 메커니즘, 중지 손실 전략 및 다른 최적화를 도입함으로써 전략의 안정성과 효과를 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers 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

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]

alpha2 = 1 / (lag + 1)
signal = na
signal := alpha2 * cycle + (1 - alpha2) * nz(signal[1])
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)

더 많은