Estrategia cruzada de diferencia de media móvil cero

El autor:¿ Qué pasa?, Fecha: 2024-01-26 15:45:03
Las etiquetas:

img

Resumen general

Principio de la estrategia

  1. Calcular la media móvil exponencial de 8 períodos y la media móvil más baja de los últimos 8 días
  2. Calcular la diferencia entre el precio y la media móvil actual
  3. Cuando el diferencial es inferior a 0, es una señal bajista. Cuando el diferencial cruza por encima de 0, es una señal de divergencia inferior, lo que indica alza.

Análisis de ventajas

  1. El uso del sistema de media móvil dual puede filtrar eficazmente los avances falsos
  2. Aplicación de la teoría del precio mínimo para descubrir señales de fondo
  3. Comparación numérica para juzgar las condiciones de sobreventa y sobrecompra, evitando perseguir máximos y matar mínimos

Análisis de riesgos

  1. Las estrategias de promedios móviles dobles son propensas a efectos de la sierra
  2. Necesidad de prestar atención al problema de la frecuencia excesiva de las operaciones
  3. Es fundamental establecer razonablemente los parámetros de la media móvil

Direcciones de optimización

  1. Ajustar los parámetros del período de media móvil para adaptarse a los diferentes ciclos
  2. Aumentar los indicadores de volumen para filtrar las señales falsas de avance
  3. Combinar el indicador estocástico para evitar condiciones de sobreventa y sobrecompra

Resumen de las actividades


/*backtest
start: 2023-01-19 00:00:00
end: 2024-01-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Estratégia diferença menor preço de 8")

// Configuração da Média Móvel
emaPeriod = 8

ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)

// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA

//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0




// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) 
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)

// Executa as operações de compra/venda
if buy_signal
    strategy.entry("Buy", strategy.long)
if sell_signal
    strategy.exit("Buy")

// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)

plot(diffLow, title="Diferença", color=color.red, linewidth=2)


Más.