이 전략의 이름은 EMA와 함께 트렌드 추적 (Trend Following with EMA) 이다. 이는 트렌드 추적 및 기하급수적 이동 평균 (EMA) 기술 지표에 기초한 양적 거래 전략이다. 트렌드 추적과 EMA를 결합하여 주식 또는 다른 금융 제품의 가격 추세를 파악하고 이에 따라 구매 및 판매 결정을 내린다.
이 전략의 주요 논리는 다음과 같습니다.
180주기 낮은 가격과 닫는 가격 사이의 교차점을 사용하여 상승 추세를 결정합니다. 낮은 가격이 닫는 가격보다 높을 때 가격이 상승하기 시작하고 추세가 형성되는 것을 나타냅니다. 이 시점에서 긴 지점이 열립니다.
가격이 하향 경향에서 상승 경향으로 변하면, 즉, 닫기 가격이 오픈 가격 이상과 EMA 라인이 아래로 넘어가면 긴 포지션도 열립니다.
가격이 상승 추세에서 하락 추세로 변하면, 즉 닫기 가격이 열기 가격보다 낮을 때, 기존의 긴 포지션은 종료됩니다.
180주기 최고와 EMA 사이의 교차점을 사용하여 하향 추세를 결정합니다. EMA 아래의 최고와 EMA 아래의 최고가 교차되면 짧은 지점이 열립니다.
가격이 상승 추세에서 하락 추세로 변하면, 즉 닫기 가격이 열기 가격 아래를 넘고 EMA 라인이 위에 있을 때, 짧은 포지션도 열립니다.
가격이 하락 추세에서 상승 추세로 변하면, 즉, 닫기 가격이 오픈 가격보다 높을 때, 기존의 단편 지점은 닫을 것입니다.
이 전략은 트렌드 추종 및 이동 평균 지표를 결합하여 가격 트렌드의 전환점을 효과적으로 파악 할 수 있습니다. 이점은 다음과 같습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
위험에 대한 해결책은 다음과 같습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
일반적으로, 이것은 방향 및 트렌드를 추적하기 위해 가격 자체의 특성을 사용하는 전형적인 트렌드 다음 전략입니다. 간단하고 효과적이며 구현하기 쉽고 초보자 양적 거래 전략으로 적합합니다. 그러나 지표 지연 및 매개 변수 민감성과 같은 몇 가지 문제가 있습니다. 더 많은 데이터 소스를 도입하고 기계 학습을 사용하여이 문제를 개선 할 수 있습니다. 따라서이 전략의 확장 및 최적화에 큰 잠재력이 있습니다. 그것은 권장되는 고 주파수 양적 거래 전략입니다.
/*backtest start: 2023-11-28 00:00:00 end: 2023-12-05 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Trend + EMA", overlay=true, initial_capital=10000, currency=currency.USD, pyramiding=0) tim=input("180", title="Period for trend") ema_period=input(180, title="EMA period") opn = request.security(syminfo.tickerid, tim, open) cls = request.security(syminfo.tickerid, tim, close) emaline = ema(close, ema_period) plot(opn, color=red) plot(cls, color=green) plot(emaline, color=black) if (crossover(low, emaline)) strategy.entry("long", strategy.long) if (crossover(cls, opn) and emaline < opn and strategy.position_size == 0) strategy.entry("long", strategy.long) if (crossunder(cls, opn) and strategy.position_size > 0) strategy.close_all() if (crossunder(high, emaline) and high < emaline) strategy.entry("short", strategy.short) if (crossunder(cls, opn) and emaline > opn and strategy.position_size == 0) strategy.entry("short", strategy.short) if (crossover(cls, opn) and strategy.position_size < 0) strategy.close_all()