
La estrategia es un sistema de trading de seguimiento de tendencias basado en la banda de soporte del mercado alcista. Utiliza principalmente las señales de cruce de las medias móviles simples de 20 semanas (SMA) y las medias móviles de 21 semanas (EMA) para determinar la dirección de la tendencia del mercado y luego tomar decisiones comerciales. La estrategia emite más señales cuando las dos líneas se cruzan hacia arriba y se sitúa en posición plana cuando se cruzan hacia abajo, para obtener ganancias al capturar oportunidades de tendencia a medio y largo plazo.
La lógica central de la estrategia es determinar la tendencia del mercado mediante el monitoreo de la relación de posición entre las líneas de la media de 20 semanas y la EMA de 21 semanas. Cuando la media de 20 semanas (la media de 20 semanas) se encuentra por debajo de la media de 21 semanas (la EMA de 21 semanas), se abre una posición adicional cuando el mercado puede formar una tendencia alcista. Cuando la media de corto plazo se encuentra por encima de la media de largo plazo, se abre una posición adicional cuando la tendencia alcista puede terminar.
La estrategia de comercio de la banda de apoyo del mercado alcista es un sistema de seguimiento de tendencias basado en la teoría clásica del análisis técnico. La estrategia capta oportunidades de tendencia a medio y largo plazo a través de cruces de línea media a nivel de la circunferencia, con claridad lógica y características de control de riesgo.
/*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')