En la carga de los recursos... Cargando...

Estrategia de mantenimiento de posiciones SMA sólidas y estables

El autor:¿ Qué pasa?, Fecha: 2023-12-18 17:44:16
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de mantenimiento de posición simple basada en las líneas SMA.

Principio de la estrategia

La estrategia utiliza dos líneas de SMA, una línea a corto plazo de 20 días y una línea a largo plazo de 50 días. La línea a corto plazo puede capturar los cambios de tendencia de precios más rápido, mientras que la línea a largo plazo filtra el ruido a corto plazo. Cuando la línea a corto plazo se eleva rápidamente por encima de la línea a largo plazo, indica que la tendencia puede haber comenzado un repunte a largo plazo, por lo que vamos largo aquí. Cuando la línea a corto plazo cae por debajo de la línea a largo plazo, sugiere que la tendencia alcista puede haber terminado, por lo que cerramos la posición aquí.

En resumen, esta estrategia utiliza las características de la curva de las líneas SMA para determinar las tendencias del movimiento de precios en dos dimensiones temporales, y obtiene ganancias estables con una posición relativamente estable.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Simple de operar, fácil de entender, baja barrera de uso
  2. Relativamente estable aprovechando las fortalezas de las líneas SMA
  3. Períodos de retención largos, menos afectados por el ruido del mercado a corto plazo
  4. Pocos parámetros configurables, fácil de encontrar combinaciones óptimas de parámetros

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Más pérdidas de parada posibles cuando los mercados de rango limitado se prolongan
  2. Las líneas SMA tienen un efecto de retraso, no pueden captar los cambios de precios inmediatos
  3. Incapacidad para capitalizar los patrones de retroceso de picos a corto plazo
  4. No se puede controlar el tamaño de las pérdidas por transacción única

Direcciones de optimización

Esta estrategia puede optimizarse aún más en los siguientes aspectos:

  1. Añadir el indicador MACD para identificar el momento de rebote inferior para menos pérdidas durante los mercados de rango
  2. Prueba diferentes combinaciones de parámetros de línea SMA para encontrar el óptimo
  3. Incorporar indicadores nacionales para detectar la divergencia de tendencias, mejorando la precisión de las entradas
  4. Mecanismos de toma de ganancias y detención de pérdidas para controlar las pérdidas/ganancias por operación

Resumen de las actividades

En resumen, esta estrategia de mantenimiento de posiciones SMA es estable, simple y fácil de operar, adecuada para el comercio en vivo de principiantes.


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

//@version=5
strategy('Zlema Strateg Long 5m', overlay=true )

// FUNCTIONS

Atr(p) =>
    atr = 0.
    Tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
    atr := nz(atr[1] + (Tr - atr[1]) / p, Tr)
    atr

// ZLEMA
length = input(title='Length', defval=14)
highlightMovements = input(title='Highlight Movements ?', defval=true)
src = input(title='Source', defval=close)

lag = math.floor((length - 1) / 2)

zlema = ta.ema(src + src - src[lag], length)

zlemaColor = highlightMovements ? zlema > zlema[1] ? color.green : color.red : #6d1e7f
plot(zlema, title='ZLEMA', linewidth=2, color=zlemaColor, transp=0)


// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input.float(1, title='Long Take Profit 1 %', step=0.1) / 100
long_tp1_qty = input.int(10, title='Long Take Profit 1 Qty', step=1)

long_tp2_inp = input.float(5, title='Long Take Profit 2%', step=0.1) / 100
long_tp2_qty = input.int(50, title='Long Take Profit 2 Qty', step=1)

long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)




// Stop Loss
multiplier = input.float(2.2, 'SL Mutiplier', minval=1, step=0.1)
ATR_period = input.int(17, 'ATR period', minval=1, step=1)

// Strategy
entry_long = zlema > zlema[1]
entry_price_long = ta.valuewhen(entry_long, close, 0)
SL_floating_long = entry_price_long - multiplier * Atr(ATR_period)
exit_long = zlema < zlema[1]

///// BACKTEST PERIOD ///////
testStartYear = input(2022, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(31, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)
    strategy.exit('TP1', 'long', qty_percent=long_tp1_qty, limit=long_take_level_1)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.exit('TP2', qty_percent=long_tp2_qty, limit=long_take_level_2)  //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.close('long', when=exit_long, comment='exit long')


// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='1st Long Take Profit')
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='2nd Long Take Profit')
plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')


if testPeriod()
    strategy.entry('long', strategy.long, comment='Long', when=entry_long)


// LONG POSITIONplot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Stop Loss')



Más.