다기간 EMA 크로스오버 양적 거래 전략

저자:차오장, 날짜: 2023-12-27 17:09:23
태그:

img

전반적인 설명

이 문서에서는 세 가지 다른 기간에 걸쳐 기하급수적 이동 평균 (EMA) 의 교차점을 기반으로 한 양적 거래 전략을 소개합니다. 이 전략은 효과적인 거래 결정을 위해 주식 시장의 장기 및 단기 트렌드를 식별하기 위해 EMA 교차점을 활용하는 것을 목표로합니다.

전략 원칙

이 전략은 10일, 100일, 200일이라는 세 가지 다른 기간의 EMA를 사용한다. 단기 EMA (10일) 가 더 긴 기간의 EMA (100일 또는 200일) 를 넘을 때 크로스오버 방향에 따라 구매 또는 판매 신호가 생성된다. 이 전략은 또한 특정 시간 프레임 내에서만 거래가 실행되도록 시간 필터를 통합한다. 이 조합은 전략에 유연성과 적응성을 추가한다.

이점 분석

이 전략의 강점은 단순성과 높은 적응력이다. 다기기 EMA는 시장 트렌드에 대한 다차원적 시각을 제공하여 거래 결정의 정확성을 높인다. 또한 시간 필터는 특정 시장 기간 동안 불안정을 피하고 잠재적 위험을 줄인다.

위험 분석

이 전략의 효율성에도 불구하고, 이 전략은 특정 위험을 안고 있다. 주요 위험은 예측할 수 없는 사건으로 인한 시장 변동성이며, 이는 전략 실패로 이어질 수 있다. 또한, EMA는 지연되어 시장 변화의 반영을 지연시킬 수 있다. 이러한 위험을 완화하기 위한 방법에는 실시간 시장 모니터링과 의사결정 정확성을 높이기 위해 다른 기술적 지표를 결합하는 것이 포함된다.

최적화 방향

전략의 최적화 방향은 상대적 강도 지수 (RSI) 와 볼링거 밴드 (Bollinger Bands) 와 같은 다양한 기술적 지표의 통합 사용으로 시장 분석을 심화하고 넓힐 수 있습니다. 또한 EMA의 기간을 다른 시장 조건에 더 잘 맞게 조정하는 것이 유용 할 수 있습니다.

결론

전체적으로,

다기기 EMA 크로스오버 양적 거래 전략은 거래자가 변동적인 시장에서 더 나은 결정을 내리는 데 도움이 될 수있는 효과적인 도구입니다. 시장 변화에 대한 지속적인 최적화와 적응으로이 전략은 미래의 거래 노력에서 더 높은 수익을 얻을 수 있습니다.


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

//@version=5
start = timestamp(2023,1,1,0,0)
end = timestamp(2024,1,1,0,0)
strategy("Tester Emas", overlay = true)

periodo1 = input(10,"Periodo_1")
periodo2 = input(100,"Periodo_2")
periodo3 = input(200,"Periodo_3")

//definir media moviles
ema1 = ta.ema(close,periodo1)
ema2 = ta.ema(close,periodo2)
ema3 = ta.ema(close,periodo3)

//Desde
desde_a = input(2000, title = "Desde año")
desde_m = input.int(   1, title = "Desde mes", minval=1, maxval = 12)
desde_d = input.int(   1, title = "Desde dia", minval=1, maxval = 31)

//Hasta
hasta_a = input(2030, title = "Hasta año")
hasta_m = input.int(   1, title = "Hasta mes", minval=1, maxval = 12)
hasta_d = input.int(   1, title = "Hasta dia", minval=1, maxval = 31)

FechaValida() => true

//Condicion de entradas
longCondition = ta.crossover(ema1, ema2)
shortCondition = ta.crossunder(ema1,ema2)

alcista = (ema1 > ema2) and (ema2 > ema3)
comprado =strategy.position_size > 0



//Comprar o vender segun las condiciones de entradas

//if (longCondition)
if (not comprado and alcista and FechaValida())
    // Round redondea mi capital para comprar las acciones en cantidades enteras
    cantidad = math.round(strategy.equity/ close)
    strategy.entry("Compra", strategy.long, cantidad)
//if (shortCondition)
if (comprado and not alcista and FechaValida())
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta")

if (comprado and not FechaValida())
    //Cierre x finalizacion de periodo
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta x fin")

//Graficar las medias moviles
plot(ema1, color = color.green, title = "Ema1")
plot(ema2, color = color.yellow, title = "Ema2")
plot(ema3, color = color.red, title = "Ema2")
//GMarca los cruces de medias
bgcolor(longCondition ? color.green : na)
bgcolor(shortCondition ? color.red : na)

더 많은