Esta estrategia es un sistema de negociación basado en la banda de soporte del mercado alcista. Utiliza principalmente señales de cruce entre la media móvil simple (SMA) de 20 semanas y la media móvil exponencial (EMA) de 21 semanas para determinar la dirección de la tendencia del mercado y tomar decisiones comerciales. La estrategia genera señales largas cuando las medias móviles cruzan hacia arriba y sale cuando cruzan hacia abajo, con el objetivo de capturar oportunidades de tendencia a medio y largo plazo.
La lógica central de la estrategia es monitorear la posición relativa de la SMA de 20 semanas y la EMA de 21 semanas para juzgar las tendencias del mercado. Cuando el promedio a corto plazo (20-semana SMA) se rompe por encima del promedio a largo plazo (21-semana EMA), indica una tendencia alcista potencial, lo que desencadena una entrada de posición larga. Cuando el promedio a corto plazo cae por debajo del promedio a largo plazo, indica un posible fin de la tendencia alcista, lo que desencadena el cierre de posición. La estrategia emplea la gestión de posiciones de porcentaje_de_equidad, con una comisión de trading del 0.1% y un deslizamiento de 3 puntos básicos.
La estrategia de trading de la banda de soporte del mercado alcista es un sistema de seguimiento de tendencias basado en la teoría del análisis técnico clásico. Captura oportunidades de tendencia a medio y largo plazo a través de cruces de promedio móvil de un marco de tiempo semanal, con una lógica clara y un riesgo controlable. Sin embargo, la estrategia tiene un mal rendimiento en mercados variados y muestra cierto retraso.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 // © zkdev //@version=6 strategy(title='Demo GPT - Bull Market Support Band', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // ------------------------------------------------------------------------- // Compile-time timestamp constants for default date range // (2018-01-01 00:00:00 UTC -> 1514764800000 // 2069-12-31 23:59:59 UTC -> 3155759999000) // ------------------------------------------------------------------------- const int defaultFromDate = 1514764800000 const int defaultToDate = 3155759999000 // ------------------------------------------------------------------------- // Inputs: date range // ------------------------------------------------------------------------- fromDate = input(title='Start Date', defval=defaultFromDate) toDate = input(title='End Date', defval=defaultToDate) // ------------------------------------------------------------------------- // Indicator settings & calculations // ------------------------------------------------------------------------- smaLength = 20 emaLength = 21 source = close sma = ta.sma(source, smaLength) ema = ta.ema(source, emaLength) // ------------------------------------------------------------------------- // Fetch weekly SMA & EMA // ------------------------------------------------------------------------- outSma = request.security(syminfo.tickerid, 'W', sma, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) outEma = request.security(syminfo.tickerid, 'W', ema, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) // ------------------------------------------------------------------------- // Plot visuals (20w SMA, 21w EMA, fill in between) // ------------------------------------------------------------------------- smaPlot = plot(outSma, color=color.new(color.red, 0), title='20w SMA') emaPlot = plot(outEma, color=color.new(color.green, 0), title='21w EMA') fill(smaPlot, emaPlot, color=color.new(color.orange, 75), fillgaps=true) // ------------------------------------------------------------------------- // We evaluate crossover/crossunder on *every bar* and store the result // ------------------------------------------------------------------------- crossUp = ta.crossover(outSma, outEma) crossDown = ta.crossunder(outSma, outEma) // ------------------------------------------------------------------------- // Trade logic: only operate within chosen date range // Buy when outSma crosses above outEma; Sell (close) when outSma crosses below outEma // ------------------------------------------------------------------------- inDateRange = true if inDateRange // If we have a crossUp event on this bar, buy (go Long) if crossUp strategy.entry('Long', strategy.long) // If we have a crossDown event on this bar, sell (close Long) if crossDown strategy.close('Long')