Esta estratégia é um sistema de negociação de tendência baseado na banda de suporte do mercado de touros. Ele usa principalmente sinais de cruzamento entre a média móvel simples (SMA) de 20 semanas e a média móvel exponencial (EMA) de 21 semanas para determinar a direção da tendência do mercado e tomar decisões de negociação.
A lógica central da estratégia é monitorar a posição relativa da SMA de 20 semanas e da EMA de 21 semanas para julgar as tendências do mercado. Quando a média de curto prazo (20-semana SMA) rompe acima da média de longo prazo (21-semana EMA), ela indica uma tendência de alta potencial, desencadeando uma entrada de posição longa. Quando a média de curto prazo cai abaixo da média de longo prazo, ela sinaliza um fim potencial da tendência de alta, desencadeando o fechamento de posição. A estratégia emprega percent_of_equity gestão de posição, com uma comissão de negociação de 0,1% e deslizamento de 3 pontos base.
A estratégia de negociação da banda de suporte do mercado touro é um sistema de tendência baseado na teoria clássica da análise técnica. Captura oportunidades de tendência de médio a longo prazo através de cruzamento de média móvel semanal, com lógica clara e risco controlável. No entanto, a estratégia apresenta desempenho fraco em mercados variados e apresenta algum atraso. Através da adição de indicadores auxiliares, otimização de stop-loss e melhoria da gestão de capital, a estratégia tem espaço significativo para otimização. É adequada para investidores com capital substancial e tolerância ao risco.
/*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')