Esta estratégia usa uma combinação de médias móveis exponenciais (EMA) e indicadores de cruzamento da média móvel (MACD) para identificar ações supervalorizadas no curto prazo e tomar posições curtas para lucrar com quedas de preços.
Calcule a EMA de 8 dias e a EMA de 26 dias.
Calcule o MACD com a EMA de 12 dias, a EMA de 26 dias e a EMA de 9 dias da diferença chamada DEA. Quando o MACD cruza acima da DEA, é considerado um sinal de compra.
Regra de entrada: EMA de 8 dias > EMA de 26 dias e MACD cruzam acima da DEA, longo quando ambas as condições são cumpridas.
Regra de saída: defina stop loss a 3% do preço de entrada, stop loss a 1% do preço de entrada, saia quando um dos dois for tocado.
A estratégia utiliza tanto a reação rápida da EMA ao preço quanto o julgamento do MACD sobre a direção do momento, identificando os principais pontos de virada do touro para o urso.
A combinação de EMA e MACD melhora a precisão da captura de sinais de negociação.
O trailing stop loss controla os riscos e sai oportunamente.
A estratégia é testada em todo o mercado de baixa em 2022, simulando ambientes reais de negociação.
Ajuste flexível de parâmetros, taxa de stop loss, taxa de dimensionamento de posição são personalizáveis para corresponder às preferências pessoais de risco.
O prazo de 5 minutos significa uma alta frequência de entradas e saídas, exigindo tempo suficiente para acompanhar as operações.
O trailing stop loss pode sair prematuramente, o trailing stop loss demasiado apertado pode levar a saídas prematuras.
EMA e MACD funcionam melhor para mercados de tendência.
Os custos de negociação devem ser considerados. Cada negociação corresponde a comissões, a negociação frequente aumenta os custos.
Ajustar os parâmetros do período EMA para otimizar entradas e saídas. Pode testar encurtar o período EMA rápido, aumentando o spread entre EMAs para encontrar combinações ideais.
Otimizar a taxa de stop loss para reduzir o risco de stop prematuro.
Teste diferentes períodos de detenção para encontrar o ideal.
Avalie a adição de outros filtros técnicos. Teste a adição de índice de volatilidade etc. para melhorar a eficácia das decisões de negociação.
Esta estratégia de negociação dupla EMA e MACD visa capturar oportunidades de retração de curto prazo para curto prazo e lucro. Utiliza plenamente a reação rápida da EMA e a força de julgamento da mudança de momento do MACD para melhorar a precisão no tempo do comércio com confirmação dupla. Espaços de otimização estão no ajuste de parâmetros, controle de deslizamento, período de retenção, etc. A otimização cuidadosa dos parâmetros pode levar a bons retornos.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Coinrule //@version=5 // strategy('Fast EMA above Slow EMA with MACD (by Coinrule)', // overlay=true, // initial_capital=1000, // process_orders_on_close=true, // default_qty_type=strategy.percent_of_equity, // default_qty_value=30, // commission_type=strategy.commission.percent, // commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0) notInTrade = strategy.position_size <= 0 // EMAs fastEMA = ta.ema(close, 8) slowEMA = ta.ema(close, 26) plot(fastEMA, color = color.blue) plot(slowEMA, color = color.green) //buyCondition1 = ta.crossover(fastEMA, slowEMA) buyCondition1 = fastEMA > slowEMA // DMI and MACD inputs and calculations [macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9) buyCondition2 = ta.crossover(macd, macd_signal) // Configure trail stop level with input options longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 if (buyCondition1 and buyCondition2 and notInTrade and timePeriod) strategy.entry(id="Long", direction = strategy.long) strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice) //if (sellCondition1 and sellCondition2 and notInTrade and timePeriod) //strategy.close(id="Close", when = sellCondition1 or sellCondition2)