Estratégia de ruptura de média móvel múltipla

Autora:ChaoZhang, Data: 2023-11-22
Tags:

img

Resumo

Esta estratégia gera sinais de negociação com base na ruptura e callback de várias linhas de média móvel.

Estratégia lógica

O código usa 4 linhas médias móveis com diferentes períodos - 21 dias, 50 dias, 100 dias e 200 dias. Ele entra em posições longas quando o preço quebra essas linhas MA e entra em posições curtas quando o preço cai abaixo dessas linhas MA. Além disso, os níveis de stop loss e take profit são definidos na estratégia. Especificamente, o stop loss é definido perto do ponto mais baixo da vela anterior, e o take profit é definido em 3 vezes a distância entre o ponto mais baixo e o ponto mais alto da vela anterior.

A ideia central desta estratégia é julgar a tendência usando médias móveis. Quando o preço quebra as linhas MA ascendentes, ele indica uma tendência ascendente, então deve ir longo. Quando o preço cai abaixo das linhas MA descendentes, ele indica uma tendência descendente, então deve ir curto. Usando várias linhas MA com períodos diferentes pode julgar a tendência com mais precisão e também verificar os sinais de negociação através da consistência da tendência.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Usar vários MAs pode efetivamente filtrar falsos sinais
  2. A definição de stop loss e take profit pode limitar perdas individuais
  3. Simples de implementar

Análise de riscos

Os principais riscos desta estratégia são:

  1. As estratégias de MA são propensas a desalinhamentos, perdendo assim pontos de inversão de preços
  2. Falsos sinais de ruptura podem causar perdas.
  3. A definição incorrecta de stop loss e take profit pode amplificar as perdas

Estes riscos podem ser reduzidos ajustando os parâmetros de MA e otimizando o stop loss e o take profit.

Optimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste mais combinações de MA para encontrar parâmetros ideais
  2. Adicionar outros indicadores para evitar falhas
  3. Otimizar o stop loss e o take profit para uma melhor relação risco/recompensa
  4. Ajustar os parâmetros para as diferentes condições de mercado para tornar a estratégia mais robusta

Resumo

Em geral, esta é uma tendência típica após a estratégia. As vantagens são lógica clara e fácil de entender e implementar. A desvantagem é propensa a sinais falsos. A estratégia pode ser melhorada por ajuste de parâmetros e adição de outros indicadores. É adequado para a detenção de médio a longo prazo e também pode ser usado como um componente de estratégias de negociação de curto prazo.


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

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Mais.