SMA와 EMA를 기반으로 한 양적 거래 전략


생성 날짜: 2023-12-12 12:31:25 마지막으로 수정됨: 2023-12-12 12:31:25
복사: 0 클릭수: 669
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

SMA와 EMA를 기반으로 한 양적 거래 전략

전략 개요

이 전략은 SMA, EMA 기반의 수량 거래 전략이라고 불린다. 주요 아이디어는 상이한 파라미터의 SMA 평균선과 EMA 평균선을 결합하여 거래 신호를 구축하는 것이다.

2. 전략 원칙

  1. SMA9, SMA50, SMA180 평균선과 EMA20 평균선을 계산해

  2. 클로즈가 서포트 (sup) 와 레지스 (res) 에 대한 관계를 바탕으로 구매 신호와 판매 신호를 결정한다. 클로즈가 서포트 (sup) 를 돌파하면 구매 신호가 생성되고, 클로즈가 레스를 돌파하면 판매 신호가 생성된다.

  3. 신호 트리거를 구매할 때, 다중 상점 포지션 개시 전략을 실행; 신호 트리거를 판매할 때, 다중 상점 포지션을 청산한다.

  4. 신호 트리거를 팔 때, 공백 포지션 개시 전략을 실행; 신호 트리거를 살 때, 공백 포지션을 청산한다.

세, 전략적 장점 분석

  1. 여러 가지 평행선이 결합되어 거래 신호를 형성하여 신호의 정확성과 안정성을 향상시킵니다.

  2. 동적인 지지 저항 지점을 계산하여 거래 신호를 더 기초로 한다.

  3. 고위와 낮은 변동 평균선을 사용하여 장기적인 추세 판단에 중점을 두면서도 단기간의 돌파구를 고려하여 수익률을 높이는 전략 기회를 제공합니다.

  4. 더 많은 포커스 거래는 추세와 변동이 있을 때에도 수익을 얻을 수 있습니다.

4 전략적 위험 분석

  1. 평균 SMA는 지연되어 있고, 구매/판매 신호가 지연되어 전략의 효과에 영향을 줄 수 있다.

  2. 지분 손실이 확대될 수 있습니다.

  3. 리포트 데이터는 부족하고, 실 디스크의 매개 변수는 시장에 따라 조정할 필요가 있다.

  4. 기술 지표에 의존하여 거래 신호를 형성하는 것은 주요 블랙 스 사건의 충격에 대처할 수 없습니다.

위험과 대응하는 방법:

  1. SMA 평균선 주기를 적절하게 조정합니다.
  2. 합리적인 스톱 라인을 설정하세요.
  3. “이런 일이 벌어진다면, 우리는 더 많은 샘플을 채취할 수 있을 것이다.
  4. 풍력 조절 장치가 더 개선되어야 합니다.

다섯째, 전략적 최적화

  1. 변동율에 기반한 손해제도를 추가하여 단편적 손실을 통제한다.

  2. 트레이딩 신호를 형성하는 데 도움이 되는 트레이딩 트렌드를 판단하는 기계학습 모델을 추가한다.

  3. 핵심 가격 분석 모듈을 추가하여 저항 판단을 지원하는 정확도를 향상시킵니다.

  4. 다른 평균선 지표 변수의 조합을 테스트하여 더 우수한 변수를 찾습니다.

6 전략 요약

이 전략 종합은 SMA 평균선과 EMA 평균선의 기술 지표를 사용하여 거래 신호를 구성하고 동적 지원 저항 지점을 계산하여 보다 완전한 구매/판매 전략 논리를 형성한다. 전략은 지표 매개 변수 유연성, 양방향 거래, 다양한 상황의 적응의 장점을 가지고 있지만, 평균선 지연, 상쇄 불완전 등의 문제에 직면하고 있다. 향후 상쇄 장치, 트렌드 판단, 핵심 가격 지점 등의 판단 측면에서 전략 최적화를 할 수 있으며, 전략은 더 나은 안정성과 수익 공간을 가지고 있다.

]

전략 소스 코드
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

//SMA and EMA code
smaInput1 = input(9, title="SMA1")
smaInput2 = input(50, title="SMA2")
smaInput3 = input(180, title="SMA3")
emaInput1 = input(20, title="EMA1")
sma1 = sma(close, smaInput1)
sma2 = sma(close, smaInput2)
sma3 = sma(close, smaInput3)
EMA1 = ema(close, emaInput1)
plot(sma1, color= color.red , title="SMA1")
plot(sma2, color = color.blue, title="SMA2")
plot(sma3, color= color.white, title="SMA3")
plot(EMA1, color = color.yellow, title="EMA1")

no=input(3,title="BUY/SELL Swing")
Barcolor=input(false,title="BUY/SELL Bar Color")
Bgcolor=input(false,title="BUY/SELL Background Color")
res=highest(high,no)
sup=lowest(low,no)
avd=iff(close>res[1],1,iff(close<sup[1],-1,0))
avn=valuewhen(avd!=0,avd,0)
tsl=iff(avn==1,sup,res)

// Buy/sell signals
BuySignal = crossover(close, tsl)
SellSignal = crossunder(close, tsl)

// Enter long position
strategy.entry("Buy", strategy.long, when=BuySignal)

// Exit long position
strategy.exit("Sell", "Buy", when=SellSignal)

// Enter short position
strategy.entry("Sell", strategy.short, when=SellSignal)

// Exit short position
strategy.exit("Buy", "Sell", when=BuySignal)

colr = close>=tsl ? color.green : close<=tsl ? color.red : na
plot(tsl, color=colr)