Estrategia de cruce de medias móviles de ALMA


Fecha de creación: 2023-09-23 15:11:02 Última modificación: 2023-09-23 15:11:02
Copiar: 0 Número de Visitas: 1078
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia utiliza una media móvil rápida y lenta de Arnaud Legoux (ALMA) para determinar señales de comercio. ALMA es una mejora de las medias móviles tradicionales, que reduce el retraso y suaviza la curva. La estrategia genera una señal de compra a través de una ALMA lenta sobre una ALMA rápida, y una ALMA lenta debajo de una ALMA rápida genera una señal de venta, al mismo tiempo que combina un filtro de convergencia para formar una señal de cruce más estable.

Principio de estrategia

Los indicadores centrales y las reglas de negociación de la estrategia son los siguientes:

  1. ALMA Rápido: período más corto para capturar brechas.

  2. ALMA lento: el número de periodos es más largo y se utiliza para determinar las grandes tendencias.

  3. Filtrado de transacción: es válido cuando se usa la media a largo plazo sobre la media a corto plazo.

  4. Hacer más señales: ALMA rápido a través de ALMA lento y el filtro de intercambio es efectivo.

  5. La señal de Pinto: ALMA rápida atravesada por ALMA lenta.

  6. Señales de vacío: ALMA rápido a través de ALMA lento y el filtro de intercambio es efectivo.

  7. Señales en el plano: ALMA rápido a través de ALMA lento.

La estrategia es simple e intuitiva, pero combina varios indicadores técnicos, como la determinación de tendencias, la captura de brechas y la verificación de volúmenes de transacciones, para formar un sistema de negociación relativamente sólido. La combinación de la línea media rápida y lenta permite determinar eficazmente la dirección de la tendencia; la aplicación del algoritmo ALMA reduce el impacto del retraso en las transacciones; la adición de volúmenes de transacciones evita muchos falsos brechas inciertos.

Análisis de las ventajas

En comparación con las estrategias tradicionales de cruce de líneas medias, la estrategia tiene las siguientes ventajas:

  1. El algoritmo ALMA reduce el retraso y mejora la calidad de la señal.

  2. La filtración de los volúmenes de entrega evita los daños de las falsas brechas.

  3. La línea media es la línea de avance más rápida para determinar la tendencia y evitar inversiones.

  4. Las reglas son sencillas, intuitivas y fáciles de entender.

  5. Los parámetros de la línea media se pueden ajustar con flexibilidad para diferentes mercados.

  6. La gestión de fondos es razonable y permite controlar las pérdidas individuales.

  7. Se puede mejorar aún más la eficacia de la estrategia optimizando los parámetros de la línea media.

  8. En general, la estabilidad y la calidad de la señal han mejorado en comparación con las estrategias tradicionales de paridad.

Análisis de riesgos

A pesar de las ventajas de esta estrategia, hay que tener en cuenta los siguientes riesgos:

  1. La estrategia de línea media es por naturaleza susceptible a la perturbación de los movimientos de los mercados y genera pérdidas repetidas.

  2. Los ajustes de los parámetros del algoritmo ALMA afectan la eficacia de la estrategia.

  3. El efecto de la amplificación de la transacción puede inducir a error en el juicio de las señales de transacción.

  4. Hay un cierto retraso y no se pueden evitar las pérdidas.

  5. La optimización de Parametrics tiene el riesgo de ser demasiado adecuada.

  6. En caso de una anomalía en el volumen de entrega, la señal se desactivará.

  7. Los algoritmos como el aprendizaje automático podrían obtener mejores resultados.

  8. En el caso de las inversiones, se debe tener en cuenta el índice de retracción de ganancias para evitar que la curva se mueva demasiado.

Dirección de optimización

Teniendo en cuenta los factores de riesgo mencionados anteriormente, la estrategia puede optimizarse en los siguientes aspectos:

  1. Optimización de los parámetros de la línea media de ALMA para mejorar la sensibilidad de la reacción.

  2. Prueba diferentes métodos para calcular el volumen de transacciones.

  3. Introducción de estrategias de stop loss y control estricto de las pérdidas individuales

  4. En combinación con otros indicadores, se crea un sistema de señales de comercio integrado.

  5. El nuevo sistema de control de la velocidad de las señales de los teléfonos móviles, que se ha desarrollado en el Reino Unido, se ha convertido en el principal motor de la tecnología de la información.

  6. El gobierno de la República Democrática del Congo (RDC) ha anunciado el lanzamiento de un nuevo programa de descentralización de cultivos.

  7. Optimización de la estrategia de gestión de fondos y ajuste de posiciones según los diferentes mercados.

  8. Estrategias para la robustez y prevención de la sobreadaptación.

Resumir

En general, esta estrategia mejora la calidad y estabilidad de la señal a través del algoritmo ALMA y la verificación de la cantidad de transacción en comparación con las estrategias tradicionales de cruce equilátero. Sin embargo, la optimización de la estrategia de negociación es un proceso continuo, que aún requiere atención al riesgo y la mejora de la estrategia desde múltiples dimensiones para adaptarla a un entorno de mercado más complejo.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © Sarahann999
// Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/
//@version=5
strategy("ALMA Cross", overlay=true)

//User Inputs
src= (close)
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')

//Fast Settings
ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings")
alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma)

//Slow Settings
ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings")
alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01)
alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0)
Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2)

//Volume
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings")
longlen = input.int(10, minval=1, title = "Long Length")
short = ta.ema(volume, shortlen)
long = ta.ema(volume, longlen)
osc = 100 * (short - long) / long

//Define Cross Conditions
buy = ta.crossover(Alma1, Alma2)
sell = ta.crossunder(Alma1, Alma2)

//Calculate Take Profit Percentage
longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage',
     minval=0.0, step=0.1, defval=2) / 100
shortProfitPerc = input.float(title="Short Take Profit",
     minval=0.0, step=0.1, defval=2) / 100
     
// Figure out take profit price 1
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Make inputs that set the stop %  1
longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage',
     minval=0.0, step=0.1, defval=2.5) / 100
shortStopPerc = input.float(title="Short Stop Loss",
     minval=0.0, step=0.1, defval=2.5) / 100

// Figure Out Stop Price
longStopPrice  = strategy.position_avg_price * (1 - longStopPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc)

//Define Conditions
buySignal = buy and osc > 0
     and strategy.position_size == 0

//sellSignal 
sellSignal = sell and osc > 0
     and strategy.position_size == 0

// Submit entry orders
if buySignal and long_entry
    strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long")
    alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar)
    
if sellSignal and short_entry
    strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short")
    alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar)
    
// Submit exit orders based on take profit price
if (strategy.position_size > 0)
    strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}")
if (strategy.position_size < 0)
    strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}")

//Draw
plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles)
plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)