Estratégia de cruzamento de média móvel com stop-loss e take-profit

Autora:ChaoZhang, Data: 2023-12-21 15:52:57
Tags:

img

Resumo

Esta estratégia calcula médias móveis de diferentes períodos, define pontos de stop-loss e take-profit para implementar a negociação automatizada.

Estratégia lógica

Esta estratégia baseia-se no princípio de cruzamento da média móvel. Calcula simultaneamente as médias móveis simples de 9 dias e 55 dias. Quando a MA de 9 dias cruza acima da MA de 55 dias, sinaliza que a tendência de curto prazo se invertiu para cima, então vai longo. Quando a MA de 9 dias cruza abaixo da MA de 55 dias, sinaliza que a tendência de curto prazo se invertiu para baixo, então vai curto.

Enquanto isso, esta estratégia utiliza o indicador ATR para definir pontos de stop-loss e take-profit. O indicador ATR pode medir o grau de volatilidade de preços no mercado. O ponto de stop-loss é definido no preço de fechamento menos o valor ATR, para que possa definir um stop-loss razoável com base na volatilidade do mercado. O ponto de take-profit usa uma relação risco-recompensa, que é definida em 2 aqui - take profit = preço de fechamento + 2 * valor ATR.

Vantagens

Trata-se de uma estratégia de negociação de curto prazo muito simples e prática, com as seguintes vantagens:

  1. O princípio do cruzamento da média móvel é fácil de compreender e dominar;
  2. A combinação de stop-loss e take-profit controla eficazmente os riscos e aumenta a praticidade;
  3. Os parâmetros da média móvel podem ser ajustados de forma flexível para se adaptarem aos diferentes ambientes de mercado;
  4. O ATR stop-loss pode definir pontos de stop-loss com base na volatilidade do mercado, bastante inteligente;
  5. A definição do rácio risco/recompensa pode ser ajustada de acordo com as preferências pessoais em matéria de risco.

Riscos

Há também alguns riscos com esta estratégia:

  1. Os sinais de cruzamento da média móvel podem ter falhas, causando transações erradas;
  2. A definição incorrecta de stop-loss ou take-profit pode aumentar as perdas ou reduzir os lucros;
  3. Os parâmetros da média móvel incorretos podem conduzir a uma frequência de negociação demasiado elevada ou a sinais de atraso;
  4. As configurações incorretas dos parâmetros ATR podem também fazer com que os pontos de stop-loss estejam demasiado próximos ou demasiado distantes.

Estes riscos podem ser reduzidos através da otimização dos parâmetros, de um rigoroso stop-loss e de um dimensionamento razoável das posições.

Optimização

Esta estratégia pode ser melhorada:

  1. Usar ferramentas de otimização para encontrar a combinação ideal de parâmetros da média móvel;
  2. Adicionar outros indicadores para filtrar os sinais de cruzamento da média móvel, a fim de evitar falhas;
  3. Tente outros tipos de médias móveis, tais como médias móveis exponenciais, etc.;
  4. Considerar adicionar o parâmetro ATR à otimização para tornar o stop-loss e o take-profit mais inteligentes.

Conclusão

A lógica geral desta estratégia é clara e fácil de implementar, especialmente adequada para os iniciantes a dominar. Como uma estratégia de negociação básica de curto prazo, tem as vantagens de operação simples e otimização fácil. Quando combinado com COMPLETE ou outras estruturas, pode ser melhorado para se tornar um sistema de negociação quantitativo prático.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA Crossover Strategy with Stop-Loss and Take-Profit", overlay=true)

// Input for selecting the length of the moving averages
maShortLength = input(9, title="Short MA Length")
maLongLength = input(55, title="Long MA Length")

// Input for setting the risk-reward ratio
riskRewardRatio = input(2, title="Risk-Reward Ratio")

// Calculate moving averages
maShort = ta.sma(close, maShortLength)
maLong = ta.sma(close, maLongLength)

// Buy condition: 9-period MA crosses above 55-period MA
buyCondition = ta.crossover(maShort, maLong)

// Sell condition: 9-period MA crosses below 55-period MA
sellCondition = ta.crossunder(maShort, maLong)

// Set stop-loss and take-profit levels
atrValue = ta.atr(14)
stopLossLevel = close - atrValue  // Use ATR for stop-loss (adjust as needed)
takeProfitLevel = close + riskRewardRatio * atrValue  // Risk-reward ratio of 1:2

// Execute buy and sell orders with stop-loss and take-profit
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Sell", from_entry="Buy", loss=stopLossLevel, profit=takeProfitLevel)

// Plot moving averages on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

Mais.