이 전략은 가격 트렌드를 추적하기 위해 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를 통과하는 것은 상승 추세의 끝과 후퇴의 시작을 나타냅니다.
이 전략의 장점은 다음과 같습니다.
주요 위험은 다음과 같습니다.
위의 위험을 줄이기 위해 다음과 같은 최적화 조치를 취할 수 있습니다.
전략은 다음 측면에서 최적화 될 수 있습니다:
요약하자면, 이것은 가격 추세를 판단하기 위해 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)