기하급수적인 이동평균의 크로스오버 전략

저자:차오장, 날짜: 2024-01-08 11:30:21
태그:

img

전반적인 설명

기하급수적 이동 평균 크로스오버 전략은 가격 추세를 추적하는 간단한 수치적 거래 전략이다. 그것은 구매 및 판매 신호로 다른 매개 변수 설정과 함께 두 기하급수적 이동 평균의 교차를 사용합니다. 단기 EMA가 장기 EMA를 넘을 때 구매 신호가 생성됩니다. 단기 EMA가 장기 EMA를 넘을 때 판매 신호가 생성됩니다.

전략 논리

이 전략의 핵심 논리는 EMA 이론에 기반한다. 기하급수적인 이동 평균은 가격 변동을 효과적으로 부드럽게하고 가격 트렌드의 방향을 결정할 수 있다. 빠른 EMA는 가격 변화에 신속하게 반응하고 느린 EMA는 가격 트렌드 방향에 대한 참조를 제공한다. 빠른 EMA가 느린 EMA를 넘으면 가격이 상승하기 시작했고 구매 신호가 생성된다. 빠른 EMA가 느린 EMA를 넘으면 가격이 떨어지기 시작했고 판매 신호가 생성된다.

특히, 이 전략은 먼저 두 개의 기하급수적인 이동 평균을 정의합니다: fib_level과 fib_price. fib_level는 사용자 입력에 의해 설정되며, fib_price는 가장 최근의 100 바의 가장 높고 가장 낮은 가격에 기초하여 계산됩니다. 닫기 가격이 fib_price보다 높거나 낮을 때 각각 구매 및 판매 신호가 생성됩니다. 동시에, 스톱 로스는 가장 최근의 10 바의 가장 높고 가장 낮은 가격에 설정됩니다.

이점 분석

  • 가격 트렌드 방향을 결정하고 잘못된 신호를 피하기 위해 이중 EMA 시스템을 사용
  • 사용자 정의 매개 변수와 맞춤형 전략
  • 스톱 로스를 설정하는 것은 위험 통제에 유리합니다.

위험 분석

  • EMA 지연은 가격 전환점을 놓칠 수 있습니다.
  • 빈번한 EMA 교차는 거래 비용과 미끄러짐 손실을 증가시킵니다.
  • 부적절한 스톱 로스 설정으로 인해 조기 스톱 로스 또는 과도한 손실이 발생할 수 있습니다.

위험은 EMA 매개 변수를 최적화, 트리플 EMA 시스템을 사용하거나 신호 확인을 위해 다른 지표와 결합하여 줄일 수 있습니다. 또한 과도한 초기 스톱아웃을 방지하기 위해 적절한 스톱 손실을 느슨하게 할 수 있습니다.

최적화 방향

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

  1. EMA 기간 매개 변수를 최적화합니다. 가장 좋은 매개 변수를 찾기 위해 다른 기간 조합을 테스트합니다.

  2. 부피 및 다른 필터를 추가합니다. 부피가 상승할 때 구매 신호를 생성하고 부피가 떨어지면 판매 신호를 생성하여 급격한 가격 상승 중에 잘못된 신호를 피합니다.

  3. 기계 학습 알고리즘을 활용하여 역사적 데이터에 기반한 매개 변수를 자동으로 최적화합니다.

  4. 손해를 막기 위해 후속 스톱 메커니즘을 추가합니다. 조기 스톱 아웃을 방지하기 위해 수익을 증가시키는 스톱 손실 라인을 이동하십시오.

요약

기하급수적 이동 평균 크로스오버 전략은 일반적으로 사용하기 쉬운 양적 거래 전략입니다. 가격 추세를 결정하고 위험을 제어하기 위해 정지점을 설정하기 위해 EMA의 장점을 활용합니다. 전략은 이해하기 쉽고 매개 변수에서 유연하며 다른 제품에 대한 양적 거래에 적용됩니다. 매개 변수 조정, 추가 필터 및 트레일링 스톱의 추가 최적화는 더 나은 전략 성능으로 이어질 수 있습니다.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Strategy", overlay=true)

// Define Fibonacci 0.5 level
fib_level = input(0.5, title="Fibonacci Level")

// Calculate Fibonacci 0.5 level price
fib_price = ta.lowest(low, 100) + (ta.highest(high, 100) - ta.lowest(low, 100)) * fib_level

// Define entry and exit conditions
long_condition = ta.crossover(close, fib_price)
short_condition = ta.crossunder(close, fib_price)

// Set exit points (using previous high or low)
long_exit = ta.highest(high, 10)
short_exit = ta.lowest(low, 10)

// Plot Fibonacci 0.5 level
plot(fib_price, "Fib 0.5", color=color.blue, linewidth=1, style=plot.style_circles)

// Initialize variables
var inLong = false
var inShort = false

// Set trading signals
if (long_condition)
    if not inLong
        strategy.entry("Buy", strategy.long)
        inLong := true
    strategy.exit("Exit", "Buy", limit=long_exit)

if (short_condition)
    if not inShort
        strategy.entry("Sell", strategy.short)
        inShort := true
    strategy.exit("Exit", "Sell", limit=short_exit)

if (ta.crossover(close, long_exit) or ta.crossunder(close, short_exit))
    inLong := false
    inShort := false


더 많은