Estrategia HODL de oscilación media móvil

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

Esta estrategia observa la oscilación de precios alrededor de promedios móviles de largo período (por ejemplo, de 200 días) para determinar las señales de retención, las rupturas comerciales para la entrada de la posición y el uso de la ruptura por debajo como stop loss.

Estrategia lógica:

  1. Calcular una media móvil de largo plazo, normalmente de 200 días.

  2. Entrar en el largo cuando el precio se rompe por encima del promedio móvil.

  3. Salida larga cuando el precio vuelve a caer por debajo del promedio móvil.

  4. Mantenga la posición larga hasta que se rompa por debajo del stop loss.

Ventajas:

  1. El MA a largo plazo identifica eficazmente las tendencias a medio y largo plazo.

  2. Las operaciones de ruptura capturan las reversiones a largo plazo de manera oportuna.

  3. Una menor frecuencia de negociación reduce los costes y los riesgos.

Riesgos:

  1. Las AMP más largas se retrasan significativamente, lo que resulta en un mal calendario de entrada.

  2. No hay límite para los riesgos de extracción posteriores a la ruptura.

  3. Frecuentes escapes menores traen pequeñas pérdidas sostenidas.

En resumen, esta estrategia HODL utiliza una oscilación de MA larga para determinar el tiempo de retención, minimizando la frecuencia del comercio.


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

//@version=3
strategy("HODLBot", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, overlay=true)
    
//// Time limits 
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2029, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

maPeriod = input(200, "MA Period")
smoothing = input(defval="EMA", options=["EMA", "SMA"])

ma(smoothing, src, length) => 
    if smoothing == "EMA"
        ema(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        
//// Main ////

movingAverage = ma(smoothing, close, maPeriod)

plot(movingAverage, color=orange, style = line, linewidth = 4)
 
// very simple, price over MA? Buy and HODL 
if (testPeriod() and close > movingAverage)
    strategy.entry("HODL", strategy.long)

// Price under, close long
if (testPeriod() and close < movingAverage)
    strategy.close("HODL")


Más.