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

저자:차오장, 날짜: 2023-12-07 15:29:12
태그:

img

전반적인 설명

이 전략은 간단한 이동 평균 (SMA) 및 기하급수 이동 평균 (EMA) 두 가지 지표에 기반하여 단기 거래를 수행합니다. EMA가 SMA를 넘을 때 구매 신호를 생성하고 SMA가 EMA를 넘을 때 판매 신호를 생성합니다. 이 전략은 1 분 시간 프레임에서 고주파 거래에 적합합니다.

전략 논리

이 전략의 핵심 지표는 20 기간 SMA와 21 기간 EMA이다. SMA는 무작위 가격 변동을 효과적으로 필터링하고 장기적인 경향을 포착할 수 있다. SMA와 비교할 때, EMA는 최근 가격 변화에 더 빠르게 반응하고 새로운 경향을 더 일찍 식별할 수 있다.

EMA가 SMA보다 높을 때, 단기 평균선은 장기선보다 높고 가격이 상승하기 시작한다는 것을 나타냅니다. 이 황금 십자가는 구매 신호입니다. SMA가 EMA보다 낮을 때, 장기 평균선은 단기선보다 낮고 가격이 감소하기 시작합니다. 이 죽음의 십자가는 판매 신호입니다.

전략은 간단하고 직설적입니다. EMA와 SMA 사이의 황금 / 죽음의 십자가를 캡처함으로써 거래 신호를 쉽게 생성 할 수 있습니다.

이점 분석

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

  1. 이해와 실행에 편리한 두 가지 일반적인 간단한 지표를 사용합니다.

  2. SMA와 EMA의 조합은 더 명확한 거래 신호를 생성합니다.

  3. 고주파 단기 거래에 적합하며 단기 가격 변동을 포착합니다.

  4. 거래 논리는 매우 간단하고 명확하고 매개 변수 최적화를 위해 쉽습니다.

  5. 구현 코드는 간결하고 확장하고 최적화하기가 쉽습니다.

위험 분석

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

  1. 성능은 매개 변수 조정에 크게 의존합니다. 부적절한 매개 변수는 과잉 거래 또는 놓친 거래로 이어질 수 있습니다.

  2. 불분명하거나 잘못된 신호는 시장의 격렬한 변동 중에 발생할 수 있습니다.

  3. 단기 지표는 불필요한 손실을 초래하는 가짜 파업에 취약합니다.

  4. 고주파 거래는 충분한 자금 지원이 필요합니다. 그렇지 않으면 최대 손실을 초과 할 위험이 있습니다.

최적화 방향

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. SMA와 EMA의 기간을 최적화하여 격자 검색과 유전 알고리즘과 같은 방법을 사용하여 최상의 매개 변수 조합을 찾습니다.

  2. 단 하나의 거래 손실을 통제하고 수익 공간을 늘리기 위해 스톱 로스를 포함하고 수익을 취합니다.

  3. KDJ, RSI와 같은 다른 지표와 결합하여 잘못된 브레이크를 필터링합니다.

  4. 최대 손실을 초과하는 것을 방지하기 위해 중간 포지션 사이징.

결론

이 전략은 SMA와 EMA, 두 가지 간단하고 효과적인 지표를 활용하고 지표의 조합을 채택하여 명확한 거래 신호를 생성합니다. 논리의 단순함은 구현 및 테스트를 쉽게합니다. 한편, 전략에는 여전히 몇 가지 위험이 있습니다. 실제 세계 적용 전에 추가 테스트와 최적화가 필요합니다. 결론적으로, 단기 거래에 효율적인 아이디어를 제공하며 추가 탐구 가치가 있습니다.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Cruce de SMA y EMA - Estrategia", overlay=true)

// Definición de variables
smaLength = 20
emaLength = 21

sma = ta.sma(close, smaLength)
ema = ta.ema(close, emaLength)

// Cruce de SMA y EMA hacia arriba (orden de compra)
buySignal = ta.crossover(ema, sma)

// Cruce de EMA y SMA hacia arriba (orden de venta)
sellSignal = ta.crossover(sma, ema)

// Configuración de la relación riesgo/recompensa
stopLoss = input(1, title="Stop Loss")
takeProfit = input(2, title="Take Profit")

// Gestión de órdenes
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.entry("Sell", strategy.short, when = sellSignal)

strategy.exit("Take Profit/Stop Loss", from_entry = "Buy", stop = close * (1 - stopLoss/100), limit = close * (1 + takeProfit/100))
strategy.exit("Take Profit/Stop Loss", from_entry = "Sell", stop = close * (1 + stopLoss/100), limit = close * (1 - takeProfit/100))

// Marcado de señales en el gráfico
plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal")
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal")


더 많은