Estrategia de comercio cruzado de TEMA

El autor:¿ Qué pasa?, Fecha: 2023-09-12 16:40:50
Las etiquetas:

Esta estrategia intercambia el cruce entre dos líneas TEMA de períodos diferentes para capturar tendencias a medio plazo.

Estrategia lógica:

  1. Calcular líneas TEMA rápidas y lentas, típicamente 5 y 8 períodos.

  2. Ir largo cuando el TEMA rápido cruza sobre el TEMA lento.

  3. Salida larga cuando el TEMA rápido cruce por debajo del TEMA lento.

  4. Opción de filtrar en función de la dirección de la vela para evitar operaciones contra tendencia.

  5. Prueba posterior durante un período especificado para simular señales históricas.

Ventajas:

  1. TEMA filtra fuertemente el ruido de los precios.

  2. El combo rápido/lento captura tendencias intermedias.

  3. El filtro de dirección mejora la tasa de ganancia al evitar entradas de tendencia contraria.

Riesgos:

  1. TEMA todavía está rezagado, potencialmente perdiendo las mejores entradas.

  2. Se necesita ajuste de parámetros para una coincidencia ideal.

  3. Difícil de sostener señales en mercados variados.

En resumen, esta estrategia cruza las líneas de TEMA para intercambiar tendencias con filtro de ruido para la estabilidad.


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

//@version=4
strategy("Tema",overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

tema_length_1 = input(5, "Fast TEMA")
tema_length_2 = input(8, "Slow TEMA")
usedir       = input(true, "Use bar's direction ?" )
dirtime      = input(2,"direction bars")

tema(sec, length)=>
    tema1= ema(sec, length)
    tema2= ema(tema1, length)
    tema3= ema(tema2, length)
    tema = 3*tema1-3*tema2+tema3

tema1 = tema(hlc3, tema_length_1)
tema2 = tema(hlc3, tema_length_2)

dir=if close/close[dirtime] > 1
    1
else
    -1

plot(tema1, color=color.green, transp=50)
plot(tema2, color=color.red, transp=50)


up =  crossover(tema1, tema2) 
down = crossunder(tema1, tema2)

long_condition =  up and (usedir ? dir==1 : true) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  down
strategy.close('BUY', when=short_condition)

Más.