
A estratégia é um sistema de negociação de acompanhamento de tendências baseado na banda de suporte do mercado de touros. Utiliza principalmente os sinais de cruzamento das médias móveis simples de 20 semanas (SMA) e as médias móveis de 21 semanas (EMA) para determinar a direção da tendência do mercado e, em seguida, tomar decisões de negociação. A estratégia emite mais sinais quando as duas linhas se cruzam para cima e se posicionam em equilíbrio quando se cruzam para baixo, para obter lucro capturando oportunidades de tendência de médio e longo prazo.
A lógica central da estratégia é julgar a tendência do mercado monitorando a relação de posicionamento entre as duas linhas médias, a SMA de 20 semanas e a EMA de 21 semanas. Quando a média de curto prazo (SMA de 20 semanas) quebra a média de longo prazo (EMA de 21 semanas) abaixo, indicando que o mercado pode formar uma tendência ascendente, o sistema abre uma posição maior. Quando a média de curto prazo cai acima da média de longo prazo, indicando que a tendência ascendente pode terminar, o sistema abre uma saída.
A estratégia de negociação de correias de suporte de mercado é um sistema de acompanhamento de tendências baseado na teoria clássica da análise técnica. Captura de oportunidades de tendência de médio e longo prazo através de cruzamentos de linha média em nível de circunferência, com características de clareza lógica e controle de risco. Mas a estratégia não tem um bom desempenho em mercados turbulentos e existe um certo atraso.
/*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')