EMA/MA 교차에 기반한 거래 전략


생성 날짜: 2024-01-16 14:14:42 마지막으로 수정됨: 2024-01-16 14:14:42
복사: 0 클릭수: 402
1
집중하다
1166
수행원

EMA/MA 교차에 기반한 거래 전략

개요

이 전략은 지수 이동 평균 (EMA) 과 이동 평균 (MA) 의 교차를 기반으로 거래 신호를 생성하는 단선 옵션 거래 전략이다. 빠른 EMA 상에서 느린 MA를 통과하면 구매 신호를 생성하고, 빠른 EMA 아래에서 느린 MA를 통과하면 판매 신호를 생성한다.

전략 원칙

이 전략은 두 가지 다른 변수인 EMA와 MA를 사용하여 계산합니다. 빠른 EMA와 느린 MA입니다. 빠른 EMA 변수는 50로 설정되며 느린 MA 변수는 100으로 설정됩니다. EMA 지수 이동 평균은 가격 변화에 더 빠르게 반응하지만, 간단한 이동 평균은 가격 변화에 더 느리게 반응합니다.

단기 가격 상승이 가속화될 때, 빠른 EMA는 느린 MA보다 먼저 상향으로 돌파되어 구매 신호를 발생시킨다. 이것은 시장의 단기 투기 감정이 증가하여 구매 또는 구매 투기 옵션을 고려할 수 있다.

단기 가격 하락이 가속화 될 때, 빠른 EMA는 느린 MA가 하향으로 돌파되기 전에 판매 신호를 생성한다. 이것은 시장의 단기 하향 감정이 증가하여 하향 옵션을 판매하거나 구매하는 것을 고려 할 수 있음을 나타냅니다.

빠른 EMA/MA의 교차를 통해 단기 가격 변화의 추세와 시장 정서를 판단하고, 적시에 옵션 거래를 시행하여 짧은 선의 가격 변동에서 이익을 얻을 수 있습니다.

우위 분석

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

  1. 신속한 반응, 짧은 선의 가격 변동에 대한 적시에 잡을 수 있다. 빠른 EMA와 느린 MA의 교차 형성 신호를 통해 단기 하락 변화를 빠르게 발견한다.

  2. 간단하고 쉽게 구현할 수 있습니다. 두 개의 이동 평균의 교차 상황을 관찰하는 것만으로도 복잡한 계산이 필요하지 않습니다.

  3. 유연하게 사용할 수 있으며, 옵션 또는 지분을 거래할 수 있다. 신호에 따라 포지션 구매할 수 있고, 포지션 판매를 할 수 있으며, 직접 상장 또는 상장 할 수 있다.

  4. 통제 가능한 위험, 스톱 손실 메커니즘이 명확하다. 스톱 손실 포인트를 미리 설정하고 단독 손실을 제어할 수 있다.

위험 분석

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

  1. 잘못된 신호와 흔들림의 위험이 있을 수 있다. 빠른 EMA/MA는 여러 번 교차 흔들릴 수 있으며, 거래가 빈번하게 평지점을 열고 거래 비용이 증가하고 실행의 어려움이 있다.

  2. 대시장이 지속적으로 약하면 손실이 발생할 수 있다. 전략은 단선을 잡는 것을 주력으로 하고, 지속적인 하락상황에 있어서는, 상쇄가 자주 유발될 수 있다. 이 때 대시장이 따뜻해지기를 기다리는 대기 상태로 전환하여 전략을 일시 중단하는 것을 고려할 수 있다.

  3. 중요한 사건으로 인한 주식 가격의 비정상적인 변동의 위험에 주의해야 합니다. 중요한 사건이 발생하면 주식 가격이 비정상적인 변동으로 인해 중지 손실이 깨지거나 큰 손실이 발생할 수 있습니다. 이 단계에서 전략 거래를 사용하는지 여부를 충분히 고려해야합니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 변동율에 기반한 중지 손해 조정. 동적 중지 사용, 주식 가격 변동율에 따라 실시간으로 중지 손해 폭을 조정. 중지 손해가 충격을 받을 확률을 줄인다.

  2. 여러 시간 주기 EMA를 통합한다. 일선과 주경 EMA를 추가하는 것과 같이, 대주기 경향을 판단하고, 역동 거래를 피한다.

  3. RSI 지표 필터 RSI 지표에 추가하여 오버 바이 오버 세일 영역을 판단하여 일부 노이즈 신호를 필터

  4. 기계학습 변동률 예측. LSTM와 같은 딥러닝 모델을 사용하여 주식 가격 변동률과 위험을 예측하고 포지션 및 스톱을 동적으로 조정한다.

요약하다

이 단선 EMA/MA 교차 전략은 빠른 EMA와 느린 MA의 교차를 통해 가격 단기 경향과 시장 정서를 판단하고, 가격 변화에 신속하게 반응하여 단선 거래 기회를 신속하게 포착할 수 있습니다. 전략은 실행하기 간단하지만, 일부 잡음 신호와 지속적인 손실의 위험이 있습니다. 스톱 최적화, 다중 시간 주기 통합, RSI 필터링 및 기계 학습과 같은 방법으로 업그레이드 할 수 있으며, 위험을 통제하면서 전략 수익을 높일 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(50, title="Select EMA 1")
ema2 = input(100, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)


longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)

exitlongCondition = crossunder(expo, ma)

exitshortCondition = crossover(expo, ma) 


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = #FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)