A estratégia de ruptura do intervalo do MACD Stochastics combina os indicadores MACD e Stochastics em uma estratégia de negociação quantitativa.
Ao tomar posições, esta estratégia considera os sinais do MACD e do Estocástico para melhorar a qualidade das entradas.
A estratégia de ruptura do intervalo do MACD Stochastics baseia-se principalmente nos seguintes princípios:
Especificamente, a estratégia usa a linha MACDDIFF cruzando a linha DEA para determinar sinais de tendência de alta ou baixa.
Enquanto isso, os cruzes entre a linha K e a linha D do Estocástico em torno de áreas de sobrecompra/supervenda (default 30 e 70) também produzem sinais comerciais.
Quando o MACD e o Estocástico derem sinais alinhados, a estratégia assumirá uma posição.
Após a entrada, os pontos de stop loss e take profit são definidos para controlar racionalmente a perda de uma única negociação e bloquear os lucros.
A estratégia de ruptura do intervalo do MACD Stochastics tem os seguintes pontos fortes:
A combinação de indicadores melhora a qualidade do sinal
Utilizando tanto o MACD quanto o Estocástico, filtra alguns sinais falsos e permite uma melhor qualidade de entrada.
Captura de movimentos de ruptura e negociação de tendências
A estratégia especializa-se em capturar movimentos significativos de fuga após o alcance.
O mecanismo de stop loss/take profit otimizado controla eficazmente os riscos
A lógica de stop loss/take profit integrada limita razoavelmente as perdas de transações individuais e bloqueia os ganhos em tempo hábil.
Apesar do design cuidadoso, a estratégia de ruptura do intervalo do MACD Stochastics tem alguns riscos inerentes:
Falta de tempo de entrada perfeito
Falsos breakouts são comuns antes de breakouts válidos acontecerem.
Fracassou a fuga
Embora sejam feitos preparativos adequados antes das entradas, ainda são possíveis fugas fracassadas, levando a perdas.
Optimização incorreta de parâmetros
Configurações de parâmetros inadequadas prejudicam seriamente o desempenho da estratégia.
Para enfrentar os riscos acima referidos, podem ser adoptadas as seguintes optimizações:
Adição de outros indicadores aos sinais filtrados
Intervenção manual para garantir uma ruptura válida
Testes rigorosos de otimização de parâmetros de múltiplos conjuntos
Ainda há espaço para uma maior otimização da estratégia de ruptura do intervalo do MACD Stochastics:
Otimizar os parâmetros MACD para encontrar a melhor combinação
Otimize os parâmetros estocásticos para encontrar a melhor combinação
Incorporar outros indicadores como KDJ, BOLL para melhorar a qualidade da entrada
Teste diferentes períodos de detenção, otimize o stop loss/take profit
Diferenças de parâmetros entre os activos de ensaio
Introduzir algoritmos de aprendizagem de máquina para otimização automatizada de parâmetros
A estratégia de quebra de faixa do MACD Stochastics capitaliza as quebras de faixa, entrando com base em sinais alinhados do MACD e do Stochastics. O mecanismo de stop loss/take profit controla ainda mais os riscos.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true) // Getting inputs fast_length = input(title = "Fast Length", defval = 180) slow_length = input(title = "Slow Length", defval = 390) src = input(title = "Source", defval = close) signal_length = input.int(title = "Signal Smoothing", minval = 1, maxval = 500, defval = 135) sma_source = input.string(title = "Oscillator MA Type", defval = "EMA", options = ["SMA", "EMA"]) sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // hline(0, "Zero Line", color = color.new(#787B86, 50)) // plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252))) // plot(macd, title = "MACD", color = #2962FF) // plot(signal, title = "Signal", color = #FF6D00) periodK = input.int(14, title="%K Length", minval=1) smoothK = input.int(1, title="%K Smoothing", minval=1) periodD = input.int(3, title="%D Smoothing", minval=1) k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) // plot(k, title="%K", color=#2962FF) // plot(d, title="%D", color=#FF6D00) // h0 = hline(80, "Upper Band", color=#787B86) // hline(50, "Middle Band", color=color.new(#787B86, 50)) // h1 = hline(20, "Lower Band", color=#787B86) // fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background") // Make inputs that set the take profit % (optional) longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01 // Calculate trading conditions enterLong = macd>signal and ta.crossover(k,30) enterShort = macd<signal and ta.crossunder(k,70) // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Plot take profit values for confirmation plot(strategy.position_size > 0 ? longExitPrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Long Take Profit") plot(strategy.position_size < 0 ? shortExitPrice : na, color=color.red, style=plot.style_circles, linewidth=3, title="Short Take Profit") // Submit entry orders if enterLong strategy.entry("long", strategy.long) if enterShort strategy.entry("short", strategy.short) // STEP 3: // Submit exit orders based on take profit price if strategy.position_size > 0 strategy.exit("long TP", limit=longExitPrice) if strategy.position_size < 0 strategy.exit("short TP", limit=shortExitPrice)