- Quadrado
- Estratégia MACD avançada com Martingale limitado
Estratégia MACD avançada com Martingale limitado
Autora:
ChaoZhang, Data: 2024-05-11 17:24:43
Tags:
MACDMA
Resumo
Esta estratégia combina o indicador MACD com um método de gestão de dinheiro Martingale limitado para capturar oportunidades de negociação quando as tendências do mercado mudam. Um sinal de compra é gerado quando a linha rápida MACD cruza acima da linha lenta e um sinal de venda é gerado quando a linha rápida cruza abaixo da linha lenta. Ao mesmo tempo, a estratégia usa um método Martingale limitado para controlar os drawdowns, com um máximo de 3 posições adicionais. A estratégia define um take profit fixo e stop loss de 1% para cada negociação.
Princípios de estratégia
- Calcule a linha rápida, linha lenta e linha de sinal do indicador MACD.
- Determine o cruzamento das linhas rápidas e lentas, indo longo em um cruzamento de alta e curto em um cruzamento de baixa.
- Estabelecer um volume de negociação fixo (0,01) para cada transação.
- Registre o lucro líquido da transação anterior.
- Se o lucro líquido corrente for inferior ao da transação anterior e o número de posições adicionais for inferior a 3, duplicar o próximo volume de negociação e aumentar o número de posições adicionais em 1; caso contrário, reiniciar o volume de negociação e o número de posições adicionais.
- Para cada posição longa, obter lucro quando o preço subir 1% e parar a perda quando cair 1%; vice-versa para posições curtas.
- Marque os pontos de compra e venda no gráfico.
Vantagens da estratégia
- Combina o indicador MACD de tendência com a gestão de dinheiro Martingale, que pode capturar melhor as tendências dos mercados.
- Conjuntos fixos de níveis de lucro e stop loss para controlar o risco comercial individual.
- Utiliza o dimensionamento limitado das posições de Martingale para obter retornos mais elevados quando as tendências continuam.
- Limita o número máximo de posições adicionais a 3, evitando o risco de dimensionamento excessivo das posições que conduza a explosões de contas.
- Marcas de compra e venda sinais no gráfico para fácil observação do desempenho da estratégia.
Riscos estratégicos
- O indicador MACD pode apresentar divergências entre os sinais e o preço, levando a um erro de julgamento.
- Os rácios fixos de tomada de lucro e stop loss podem perder oportunidades de lucro maiores ou incorrer em perdas maiores.
- Embora o dimensionamento das posições de Martingale seja limitado a 3 vezes, ainda existe o risco de explosões da conta quando se experimentam perdas consecutivas em mercados agitados.
- A estratégia não considera flutuações anormais do mercado, tais como brechas súbitas, que podem resultar na incapacidade de executar como esperado.
Orientações para a otimização da estratégia
- Considerar a introdução de indicadores de confirmação de tendência, tais como MA, para filtrar os sinais MACD.
- Otimizar as configurações de take profit e stop loss, tais como o uso de ATR ou percentagens para stop losses dinâmicos.
- Otimizar o número e a proporção de posições adicionais para controlar o risco de retirada.
- Estabelecer mecanismos para fazer face a condições anormais de mercado, como a suspensão das trocas quando os preços não corresponderem.
- Considerar a introdução de um dimensionamento das posições para ajustar dinamicamente as posições com base na volatilidade do mercado.
Resumo
Esta estratégia capta tendências através do indicador MACD, enquanto usa Martingale limitado para controlar drawdowns, o que pode alcançar bons resultados em mercados de tendência. No entanto, a estratégia também tem certos riscos, como falha de sinal e perdas de parada fixas.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100)
// MACD 설정
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0
// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)
// 매수 신호
if (longCondition)
strategy.entry("Long", strategy.long, qty=contractSize)
lastTradeResult := strategy.netprofit
// 매도 신호
if (shortCondition)
strategy.entry("Short", strategy.short, qty=contractSize)
lastTradeResult := strategy.netprofit
// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))
// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
if (martingaleCount < 3)
contractSize := contractSize * 2
martingaleCount := martingaleCount + 1
else
contractSize := 0.01
martingaleCount := 0
else
contractSize := 0.01
martingaleCount := 0
// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
Relacionados
Mais.