Estratégia de negociação dinâmica de stop-profit e stop-loss EMA RSI MACD

EMA RSI MACD
Data de criação: 2024-06-14 15:38:17 última modificação: 2024-06-14 15:38:17
cópia: 4 Cliques: 767
1
focar em
1617
Seguidores

Estratégia de negociação dinâmica de stop-profit e stop-loss EMA RSI MACD

Visão geral

A estratégia de negociação combina três indicadores técnicos, a média móvel do índice (EMA), o índice de fraqueza relativa (RSI) e a média móvel de convergência e divergência (MACD), para gerar um sinal de compra e venda quando o preço atende a determinadas condições, analisando suas relações cruzadas e numéricas. A estratégia também configura um stop loss dinâmico para gerenciar o risco de negociação.

Princípio da estratégia

  1. Calcular a média de preços de fechamento mais ou menos elevados ((HLCC4) como base para a estratégia.
  2. Indicadores de EMA e RSI com base em HLCC4 calculados em três períodos diferentes.
  3. Calcule o valor do gráfico MACD.
  4. Para julgar o cruzamento entre o EMA1 e o EMA2:
    • Quando o EMA1 usa o EMA2, gera um sinal de alerta.
    • Quando a EMA1 atravessa a EMA2, gera um sinal de baixa.
  5. Considerando os valores dos indicadores EMA, RSI e MACD em conjunto, para determinar se o critério de compra ou venda é cumprido:
    • Condições de compra: EMA1 com EMA2, HLCC4 acima do EMA3, RSI acima da depreciação, preço de fechamento acima do preço de abertura, gráfico MACD é positivo.
    • Condições de venda: EMA1 abaixo de EMA2, HLCC4 abaixo de EMA3, RSI abaixo da depreciação, preço de fechamento abaixo do preço de abertura, MACD negativo.
  6. Se houver um sinal contrário durante a manutenção da posição, primeiro elimine a posição original e abra uma nova posição.
  7. Quando você compra ou vende, defina o preço de parada e de perda de acordo com o número de pontos definidos.

Vantagens estratégicas

  1. A combinação de vários indicadores técnicos para um julgamento integrado aumenta a confiabilidade do sinal.
  2. A introdução de um mecanismo dinâmico de suspensão e parada de perdas pode controlar o risco de forma eficaz.
  3. A posição original é liquidada quando surge um sinal contrário, evitando a repetição da posse.
  4. Os parâmetros são ajustáveis, adaptáveis e podem ser otimizados para diferentes ambientes de mercado.

Risco estratégico

  1. Em situações de turbulência, a frequência de cruzamentos pode levar a transações excessivas, aumentando os custos de processamento.
  2. O stop loss com um número fixo de pontos pode não se adaptar às flutuações do mercado, resultando em um stop loss prematuro ou um stop loss atrasado.
  3. A estratégia baseia-se em dados históricos e pode não reagir rapidamente a situações inesperadas ou anormais.

Direção de otimização da estratégia

  1. Pode-se considerar a introdução de mais indicadores técnicos ou indicadores de sentimento de mercado, como o Brinks, ATR, etc., para melhorar a precisão do sinal.
  2. Para o stop loss, pode-se adotar formas mais dinâmicas, como o rastreamento de stop loss ou o ajuste da distância de stop loss de acordo com a taxa de flutuação.
  3. Pode ser combinado com análises fundamentais, como notícias importantes, divulgação de dados econômicos, etc., para filtrar os sinais de negociação e evitar a negociação em períodos especiais.
  4. Para a configuração de parâmetros, pode-se adotar algoritmos de aprendizado de máquina ou otimização para encontrar a combinação de parâmetros mais ótima.

Resumir

A estratégia combina vários indicadores técnicos, como EMA, RSI e MACD, formando um conjunto completo de sistemas de negociação. Em situações de tendência, a estratégia pode capturar efetivamente a tendência e controlar o risco de stop loss através de um stop loss dinâmico. Mas em situações de turbulência, a frequência de negociação pode afetar os lucros.

Código-fonte da estratégia
/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[BUY/SELL]EMA RSI MACD with TP and SL", overlay=true)

// Input parameters
ema1Length = input.int(9, title="EMA 1 Length")
ema2Length = input.int(21, title="EMA 2 Length")
ema3Length = input.int(34, title="EMA 3 Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.int(50, title="RSI Threshold")
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
tpPips = input.int(10, title="Take Profit (pips)")
slPips = input.int(10, title="Stop Loss (pips)")

// HLCC4 calculation
hlcc4_custom = (high + low + close + close) / 4

// Calculate EMA and RSI based on HLCC4
ema1 = ta.ema(hlcc4_custom, ema1Length)
ema2 = ta.ema(hlcc4_custom, ema2Length)
ema3 = ta.ema(hlcc4_custom, ema3Length)
rsi = ta.rsi(hlcc4_custom, rsiLength)

// Calculate MACD Histogram
[a, b, histogram] = ta.macd(hlcc4_custom, macdFastLength, macdSlowLength, macdSignalSmoothing)

// EMA1 and EMA2 crossover conditions
emaCrossUp = ta.crossover(ema1, ema2)
emaCrossDown = ta.crossunder(ema1, ema2)

// BUY signal conditions
buySignal = emaCrossUp and hlcc4_custom > ema3 and rsi > rsiThreshold and close > open and histogram > 0

// SELL signal conditions
sellSignal = emaCrossDown and hlcc4_custom < ema3 and rsi < rsiThreshold and close < open and histogram < 0

var float entryPrice = na
var float tpPrice = na
var float slPrice = na

// Check if there is an open position and a contrary signal appears, then close all old orders first
if strategy.opentrades > 0
    if sellSignal and strategy.position_size > 0
        strategy.close("Buy", comment="Close Buy Order")
    if buySignal and strategy.position_size < 0
        strategy.close("Sell", comment="Close Sell Order")

// Place a BUY order when there is a BUY signal and set TP and SL based on pips
if buySignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice + tpPips * syminfo.mintick
    slPrice := entryPrice - slPips * syminfo.mintick
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tpPrice, stop=slPrice)

// Place a SELL order when there is a SELL signal and set TP and SL based on pips
if sellSignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice - tpPips * syminfo.mintick
    slPrice := entryPrice + slPips * syminfo.mintick
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tpPrice, stop=slPrice)

// Plot the crossover points of EMA1 and EMA2
plotshape(series=emaCrossUp, location=location.belowbar, color=color.aqua, style=shape.triangleup, title="EMA Cross Up", size=size.small)
plotshape(series=emaCrossDown, location=location.abovebar, color=color.red, style=shape.triangledown, title="EMA Cross Down", size=size.small)

// Plot the EMA lines on the chart
plot(ema1, title="EMA 1", color=color.aqua)
plot(ema2, title="EMA 2", color=color.red)
plot(ema3, title="EMA 3", color=color.yellow, linewidth=2)