전략에 따른 EMA의 크로스오버 트렌드

저자:차오장, 날짜: 2023-12-27 16:31:15
태그:

img

전반적인 설명

이 전략은 가격 트렌드를 추적하기 위해 EMA 크로스오버를 채택합니다. 빠른 EMA가 느린 EMA를 넘을 때 길게 이동하고 빠른 EMA가 느린 EMA를 넘을 때 포지션을 닫습니다. 주로 명백한 트렌드를 가진 제품, 효과적으로 트렌드를 따라 과잉 수익을 얻는 데 적합합니다.

전략 논리

이 전략의 핵심 지표는 EMA입니다.

EMA (t) = C (t) ×2/ (n+1) + EMA (t-1) × (n-1) / (n+1)

여기서 t는 현재 틱, C(t) 는 현재 폐쇄 가격, n는 N 매개 변수 값이다. EMA는 가중 인수와 함께 움직이는 평균 기법으로 최근 가격에 더 많은 무게를 부여하여 최신 가격 변화에 더 빠르게 반응합니다.

이 전략은 빠른 EMA와 느린 EMA를 구성하고 느린 EMA 위에 빠른 EMA를 통과하는 것을 구매 신호로, 느린 EMA 아래에 빠른 EMA를 통과하는 것을 판매 신호로 취합니다. 위의 빠른 EMA를 통과하는 것은 새로운 상승 라운드의 시작을 나타냅니다. 아래의 빠른 EMA를 통과하는 것은 상승 추세의 끝과 후퇴의 시작을 나타냅니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 논리는 간단하고 이해하기 쉽고 실행하기 쉽습니다.
  2. 단순하고 실용적인 EMA를 사용하여 주요 트렌드를 놓치지 않도록 가격 동향을 판단하십시오.
  3. 조정 및 최적화 가능한 매개 변수가 거의 없으며, 주로 빠른 EMA와 느린 EMA에 의존합니다.
  4. 구매 후 상승 추세를 따라갈 수 있습니다.
  5. 판매 후 인출을 피할 수 있고 위험을 줄일 수 있습니다.
  6. 높은 신뢰성을 가진 충분한 백테스트 데이터

위험 분석

주요 위험은 다음과 같습니다.

  1. EMA에서 잘못된 신호가 나올 확률이 높습니다.
  2. 시장이 변화할 때 EMA가 쉽게 교차할 때 빈번한 신호
  3. 갑작스러운 사건이 급격한 방향 변경을 유발할 때 손실을 제때 중지할 수 없습니다.
  4. 제한된 최적화 공간으로 실제 성능은 백테스트 결과를 저하시킬 수 있습니다.

위의 위험을 줄이기 위해 다음과 같은 최적화 조치를 취할 수 있습니다.

  1. 거짓 신호를 피하기 위해 다른 표시기와 함께 필터 조건을 추가합니다.
  2. 신호 주파수를 줄이기 위한 매개 변수 조정
  3. 단일 손실을 통제하기 위해 스톱 로스 전략을 추가합니다.
  4. 최적의 시기를 찾기 위해 다양한 시간 패러미터를 테스트합니다.

최적화 방향

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

  1. 복수의 시간 프레임에 걸쳐 복합 지표, 예를 들어 주간 또는 월간 경향을 결합;
  2. 가짜 파열을 피하기 위해 필터 조건을 추가합니다. 예를 들어 볼리저 밴드, 부피 등.
  3. 실시간 시장 변화에 따라 매개 변수를 동적으로 조정합니다.
  4. 다른 지표를 통합하여 모델을 구축합니다. 예를 들어, 그리드, 회귀 알고리즘.

요약

요약하자면, 이것은 가격 추세를 판단하기 위해 EMA를 활용한 간단한 실용적인 추세 추세 전략이다. 논리는 명확하고 구현하기 쉽습니다. 이점은 매개 변수를 조정하고 트렌드를 효과적으로 따라가는 것이 간단하다는 것입니다. 단점은 잘못된 신호에 취약하고 실제 성능은 백테스트에서 떨어질 수 있습니다. 최적화의 다음 단계는 필터, 동적 매개 변수, 모델을 추가하는 데 집중하여 전략을 더 견고하게 할 수 있습니다.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA交叉策略by GPT",
     format = format.inherit,
     overlay = true,
     default_qty_type= strategy.percent_of_equity,
     default_qty_value = 100,
     currency = currency.USD,
     initial_capital = 1000000)


// 定義回測交易開始和結束時間的變數
start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000"))
end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000"))


// 判斷是否在回測交易時間範圍內
in_range = true


// Define input variables
fast_length = input(title="Fast EMA Length", type=input.integer, defval=5)
slow_length = input(title="Slow EMA Length", type=input.integer, defval=20)


// Define EMAs
fast_ema = ema(close, fast_length)
slow_ema = ema(close, slow_length)


// Define buy and sell signals
buy_signal = crossover(fast_ema, slow_ema)
sell_signal = crossunder(fast_ema, slow_ema)


// Buy signal
if in_range and buy_signal
    strategy.entry("Buy", strategy.long, when=in_range)
   
// Sell signal
if in_range and sell_signal
    strategy.close("Buy", when=sell_signal)

더 많은