
A estratégia combina os sinais de ruptura das médias móveis do índice e do MACD, estabelecendo dois períodos de detenção mais longos e mais curtos para obter lucro através do acompanhamento de tendências e negociação de reversão.
A estratégia baseia-se principalmente nos seguintes princípios:
Calcule a média móvel de 200 dias do índice para determinar a direção da grande tendência. Os preços de fechamento acima dessa média são otimistas e abaixo são pessimistas.
A média de preços baseada no preço máximo, o preço mínimo e o preço de fechamento traça uma média móvel do índice, calcula a diferença entre a média e o preço máximo e o preço mínimo, e constrói um gráfico em forma de coluna MACD.
Calcule a média móvel de 9 dias do gráfico de colunas do MACD para construir uma linha de sinalização do MACD.
O MACD gera um sinal de compra quando o MACD atravessa a linha de sinal de cima para baixo; e um sinal de venda quando o MACD atravessa a linha de sinal de cima para baixo.
A linha curta é a linha mais curta, mas a linha curta é a linha mais curta, e a linha mais curta é a mais curta.
A estratégia combina tendências e reversões para acompanhar tendências de períodos mais longos e capturar oportunidades de reversão em linhas curtas, respondendo de forma flexível a diferentes situações de mercado.
As vantagens incluem:
Utilize a média móvel de 200 dias para determinar a direção das principais tendências, evitando operações de contra-balanço.
Os indicadores MACD são mais sensíveis às mudanças de preços de curto prazo e podem capturar oportunidades de reversão mais eficazes.
Uma combinação de MACDs com diferentes configurações de parâmetros permite sinais de negociação em vários prazos.
A combinação de estratégias de stop-loss permite um controle eficaz dos prejuízos individuais.
A estratégia tem os seguintes riscos:
Quando um indicador de curto período emite um sinal de negociação, pode haver um certo tempo de diferença, o que requer um julgamento abrangente da grande tendência.
Como um indicador de reversão, o MACD diminui sua interpretação quando ocorre uma situação dramática.
O ponto de parada não foi configurado corretamente, podendo ser prematuro ou muito grande.
Os sinais de ruptura são considerados muito frequentes e podem gerar mais falsos sinais.
Resolução:
Optimizar os parâmetros MACD e ajustar a sensibilidade do indicador.
Combinado com outros indicadores, evite seguir os sinais MACD à cegas.
Teste e otimize os parâmetros da estratégia de stop loss.
Aumentar as condições de filtragem para evitar falsos sinais.
A estratégia pode ser otimizada nas seguintes direções:
Optimizar os parâmetros das médias móveis e MACD para obter sinais de negociação mais eficientes.
Aumentar outros indicadores para melhorar a eficácia da estratégia.
Set up a position sizing strategy rather than fixed lots for each trade. Estabelecer uma estratégia de dimensionamento de posição em vez de lotes fixos para cada transação.
Add more advanced exit rules rather than just stop loss. Such as profit target, trailing stops etc. Adicionar regras de saída mais avançadas, em vez de apenas um stop loss, como um stop loss, um stop loss móvel, etc.
Backtest with more complex fee settings to better simulate real trading environoment. Backtest com configurações de taxas mais complexas para melhor simular o ambiente de negociação real.
Walk forward analysis, robustness test among multiple products to enhance reliability. Análise de andamento, teste de robustez entre vários produtos para melhorar a confiabilidade.
A estratégia contempla simultaneamente a tendência e a reversão de negociação. A chave está na definição dos parâmetros indicadores e na precisão da compreensão das grandes tendências. Através de meios como a otimização contínua dos parâmetros de configuração e o aumento das condições de onda, a estratégia pode ser mais precisa no julgamento de sinais de mercado e obter lucros mais estáveis.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)
// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)
var float ema200 = na
if bar_index >= ema_length
ema200 := ema(close, ema_length)
// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na
calc_smma(src, len) =>
var float smma = na
if na(smma)
smma := sma(src, len)
else
smma := (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
d = ema1 - ema2
ema1 + d
if bar_index >= lengthMA
src = hlc3
hi := calc_smma(high, lengthMA)
lo := calc_smma(low, lengthMA)
mi := calc_zlema(src, lengthMA)
impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
impulseMACDSignal := sma(impulseMACD, lengthSignal)
// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na
stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)
// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na
if not na(stopLossLong)
takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
takeProfitShort := close - (stopLossShort - close) * 1.5
// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)
// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)
// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")
// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)
// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)
// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")