Esta estrategia es una estrategia de mantenimiento de posición simple basada en las líneas SMA.
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.
Las ventajas de esta estrategia incluyen:
Los riesgos de esta estrategia incluyen:
Esta estrategia puede optimizarse aún más en los siguientes aspectos:
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')