
A estratégia combina três indicadores de média móvel, faixa de Brin e indicadores relativamente fortes para a negociação de ações em vários períodos. Ao comprar, ele considera simultaneamente os três requisitos de atravessar a média móvel lenta em uma média móvel rápida, o indicador relativamente forte abaixo de 50 e o preço de fechamento abaixo da linha média da faixa de Brin. Ao vender, ele considera o indicador relativamente forte acima de 70 e o preço de fechamento acima da faixa de Brin.
A estratégia utiliza três indicadores principais para julgar. O primeiro é o indicador MACD, que é composto por uma média móvel de dois períodos diferentes, rápida e lenta, que gera um sinal de compra quando a linha rápida atravessa a linha lenta. O segundo indicador é a faixa de Bryn, que é composta por três linhas de trajectória central, ascendente e descendente.
Em negociações concretas, a estratégia requer primeiro que a média móvel rápida atravesse a média móvel lenta, indicando que o preço da ação está aumentando e pode ser comprado. Ao mesmo tempo, requer que o RSI esteja abaixo de 50, indicando que a ação pode estar em uma zona de venda excessiva e entrar em um momento de compra. Além disso, requer que o preço de encerramento esteja abaixo da faixa central de Brin, indicando que a ação está no vale e também é um bom ponto de entrada para compra.
No que diz respeito a paradas e paradas, quando o RSI é superior a 70, indica que o preço da ação pode estar na zona de supercompra, mostrando que o impulso ascendente diminuiu, e deve-se considerar a parada. Além disso, quando o preço de fechamento é superior ao traçado da faixa de Brin, também indica que o preço da ação pode ser muito alto e há risco de reversão, e deve-se parar adequadamente.
A análise da estratégia usa os benefícios de três indicadores: a média móvel, a banda de Brin e o RSI, para determinar com mais precisão o momento de compra e venda. Os benefícios específicos são os seguintes:
As médias móveis podem determinar a tendência de alta dos preços das ações, a trajetória do cinturão central de Brin pode encontrar pontos de compra nos vales dos preços das ações, o RSI pode evitar o pico de compra das ações. A combinação dos três pode determinar o melhor momento de compra no período médio de alta dos preços das ações.
A combinação entre o RSI e o Brin pode ajudar a controlar o pico do preço das ações, evitar a sobrevenda e parar o pico.
Aplicando o julgamento de múltiplos ciclos, é possível aproveitar as oportunidades de negociação em diferentes níveis, ampliando a margem de lucro.
A lógica de negociação da estratégia é simples, clara e fácil de entender, adequada para investimentos de médio e longo prazo.
Apesar de a estratégia integrar vários critérios de avaliação, aumentando a precisão das decisões de negociação, os principais riscos são:
Riscos de configuração de parâmetros. Os parâmetros das médias móveis, das faixas de Bryn e do RSI precisam ser ajustados de acordo com a situação real. Se os parâmetros forem configurados incorretamente, isso afetará a eficácia da negociação.
A estratégia de “multi-headedness” é mais adequada. Em um mercado de baixa, os preços das ações caem mais rapidamente e as medidas de “stop loss” podem não ser tão eficazes.
Risco de ações individuais. Esta estratégia é mais adequada para portfólios, pois o risco de ações individuais permanece e o investimento precisa ser diversificado.
A frequência de transação pode ser excessiva. Se os parâmetros forem configurados corretamente, a estratégia pode transacionar com frequência. Isso aumenta os custos de transação e as taxas de imposto.
Resolução:
Os parâmetros devem ser ajustados de acordo com os dados de retrospecção para tornar a frequência do sinal emitido pelo indicador mais adequada.
Pode-se ajustar adequadamente o ciclo da média móvel, reduzindo a frequência de compra e reduzindo os prejuízos.
Aumentar a variedade de investimentos e reduzir o risco de ações individuais por meio de investimentos diversificados.
A liberalização apropriada das condições de compra e parada, reduzindo a frequência de transações.
A estratégia ainda tem espaço para ser melhorada:
Pode-se introduzir mais filtros de indicadores, como indicadores de volume de transação, para garantir que o volume de transação seja ampliado ao comprar, aumentando a precisão da decisão.
Pode ser adicionado um módulo de gerenciamento de posições para ajustar dinamicamente as posições de acordo com a situação do mercado.
Pode ser combinado com algoritmos de aprendizagem profunda, treinando em grandes quantidades de dados para otimizar automaticamente a configuração de parâmetros.
Pode-se adicionar mais períodos de tempo para ampliar a aplicação.
A estratégia é, em geral, lógica clara, fácil de entender, com a aplicação de vários indicadores de julgamento, reduzindo os falsos sinais até certo ponto. Otimizando os parâmetros e adicionando mais indicadores técnicos, pode aumentar ainda mais a precisão da decisão, aumentando a robustez da estratégia. A estratégia é mais adequada para investimentos de médio e longo prazo, mas também pode ser usada para negociação quantitativa.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
//@author Alorse
//@version=4
strategy("MACD + BB + RSI [Alorse]", shorttitle="BB + MACD + RSI [Alorse]", overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)
txtVer = "1.0.1"
version = input(title="Version", type=input.string, defval=txtVer, options=[txtVer], tooltip="This is informational only, nothing will change.")
src = input(title="Source", type=input.source, defval=close)
// MACD
fast_length = input(title="Fast Length", type=input.integer, defval=12, group="MACD")
slow_length = input(title="Slow Length", type=input.integer, defval=26, group="MACD")
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group="MACD")
sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD")
sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD")
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
// Bollinger Bands
bbGroup = "Bollindger Bands"
length = input(20, title="Length", group=bbGroup)
mult = input(2.0, title="StdDev", minval=0.001, maxval=5, group=bbGroup)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
// RSI
rsiGroup = "RSI"
lenRSI = input(14, title="Length", minval=1, group=rsiGroup)
// lessThan = input(50, title="Less than", minval=1 , maxval=100, group=rsiGroup)
RSI = rsi(src, lenRSI)
// Strategy Conditions
buy = crossover(macd, signal) and RSI < 50 and close < basis
sell = RSI > 70 and close > upper
// Stop Loss
slGroup = "Stop Loss"
useSL = input(false, title="╔══════ Enable ══════╗", group=slGroup, tooltip="If you are using this strategy for Scalping or Futures market, we do not recommend using Stop Loss.")
SLbased = input(title="Based on", type=input.string, defval="Percent", options=["ATR", "Percent"], group=slGroup, tooltip="ATR: Average True Range\nPercent: eg. 5%.")
multiATR = input(10.0, title="ATR Mult", type=input.float, group=slGroup, inline="atr")
lengthATR = input(14, title="Length", type=input.integer, group=slGroup, inline="atr")
SLPercent = input(10, title="Percent", type=input.float, group=slGroup) * 0.01
longStop = 0.0
shortStop = 0.0
if SLbased == "ATR"
longStop := valuewhen(buy, low, 0) - (valuewhen(buy, rma(tr(true), lengthATR), 0) * multiATR)
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop := (valuewhen(sell, rma(tr(true), lengthATR), 0) * multiATR) + valuewhen(sell, high, 0)
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] > shortStopPrev ? max(shortStop, shortStopPrev) : shortStop
if SLbased == "Percent"
longStop := strategy.position_avg_price * (1 - SLPercent)
shortStop := strategy.position_avg_price * (1 + SLPercent)
strategy.entry("Long", true, when=buy)
strategy.close("Long", when=sell, comment="Exit")
if useSL
strategy.exit("Stop Loss", "Long", stop=longStop)