추세와 이동평균을 기반으로 한 양적 거래 전략


생성 날짜: 2023-12-06 17:55:42 마지막으로 수정됨: 2023-12-06 17:55:42
복사: 0 클릭수: 545
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

추세와 이동평균을 기반으로 한 양적 거래 전략

개요

이 전략은 트렌드 추적과 지수 이동 평균 (EMA) 의 두 가지 기술 지표를 결합하여 주식이나 다른 금융 제품의 가격 트렌드를 식별하고 그에 따라 구매 및 판매 작업을 수행합니다.

전략 원칙

이 전략의 주요 논리는 다음과 같습니다.

  1. 180주기 길이의 낮은 점과 닫힌 가격의 교차를 사용하여 가격 상승 경향을 판단하십시오. 낮은 점 위에 닫힌 가격을 통과하면 가격이 상승하기 시작하여 추세를 형성하고 더 많은 것을 할 수 있습니다.

  2. 가격이 하향에서 상향으로 전환할 때, 즉 종전 가격에서 종전 가격으로 전환할 때, 그리고 EMA 라인 아래에 있을 때, 더 많이 할 수 있습니다.

  3. 가격이 상승 추세에서 하향 추세로 바뀌면, 즉, 상반기 가격이 상반기 가격보다 낮아지면, 상반기 포지션을 평행합니다.

  4. 180주기 길이의 최고점과 EMA의 교차점을 사용하여 가격 하향 경향을 판단하십시오. 최고점이 EMA선을 넘어서고 최고점이 EMA선보다 낮을 때 공백을하십시오.

  5. 가격이 상승 추세에서 하향 추세로 전환했을 때, 즉, 종료 가격 아래에서 오픈 가격을 뚫고 EMA 라인 위에 있을 때, 공백을 뚫습니다.

  6. 가격이 하향 경향에서 상승 경향으로 바뀌었을 때, 즉, 종전 가격에 종전 가격이 넘었을 때, 공백 포지션을 평행하십시오.

전략적 강점 분석

이 전략은 트렌드 추적과 평행 지표를 결합하여 가격 트렌드의 전환점을 효과적으로 포착할 수 있으며 다음과 같은 장점이 있습니다.

  1. 트렌드 추적 부분은 가격 트렌드의 방향을 파악하고 잘못된 조작의 가능성을 줄일 수 있습니다.
  2. 평균선 부분은 가격의 작은 변동의 소음을 효과적으로 차단하고, 더 큰 경향을 식별할 수 있습니다.
  3. 두 가지 지표의 결합은 거래 신호의 신뢰성을 높여서 거짓 긍정적 인 결과를 피할 수 있습니다.
  4. 변수 설정은 합리적으로 유연하며, 주기 길이는 다른 품종과 거래 스타일에 맞게 조정할 수 있다.

위험 분석

이 전략에는 위험도 있습니다.

  1. 급격한 가격 변동 시나리오에서 EMA 평균은 큰 지연을 겪을 수 있으며 가장 좋은 진입 시기를 놓칠 수 있습니다.
  2. 동향 판단 지표는 변수에 민감하며, 다른 주기적 설정은 거래 신호와 수익을 다르게 초래합니다.
  3. 다중 헤드 빈 헤드 포지션의 전환 빈도가 너무 높을 수 있으며 거래 슬라이드 및 수수료의 손실을 증가시킵니다.

위험과 대응하는 해결책은 다음과 같습니다.

  1. EMA 평균선의 주기적 변수를 최적화하여 지연 확률을 감소시킨다.
  2. 변수를 최적화하여 품종에 가장 적합한 주기 변수를 찾습니다.
  3. 스톱로스 스 조건을 설정하여 너무 자주 포지션을 전환하는 것을 피하십시오.

전략 최적화 방향

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

  1. 시장의 변동에 따라 동적으로 위치를 조정할 수 있는 변동율 기반의 위치 관리 모듈을 추가합니다.
  2. 가격 동향을 판단하는 기계학습 모형을 추가하고, 간단한 크로스 판단을 대신하여 정확도를 향상시킵니다.
  3. 기본적 데이터와 함께 거래 신호를 정제하여 회사의 성과 변화에 대한 잘못된 신호를 방지합니다.
  4. 여러 품종의 변수를 최적화하여 최적의 주기 변수 조합을 찾아 안정성을 높이고 수익을 극대화한다.

요약하다

이 전략은 전체적으로 전형적인 트렌드 추적 전략으로, 가격 자체의 특징 지표를 사용하여 방향을 판단하고 트렌드를 추적한다. 그것은 간단하고 효과적이며, 구현하기 쉽고, 정량 거래의 입문 전략으로 적합하다. 그러나 지표 지연, 변수 민감성 등과 같은 몇 가지 문제도 있다. 이러한 문제는 더 많은 데이터 소스를 도입하고 기계 학습을 사용하는 등의 방법으로 개선할 수 있다.

전략 소스 코드
/*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()