Estrategia de trading de ruptura basada en promedios móviles


Fecha de creación: 2023-11-28 13:50:49 Última modificación: 2023-11-28 13:50:49
Copiar: 2 Número de Visitas: 697
1
Seguir
1617
Seguidores

Estrategia de trading de ruptura basada en promedios móviles

Descripción general

Esta es una estrategia de negociación de ruptura basada en la media móvil. Se calcula el precio promedio de un determinado período como la media y genera una señal de negociación cuando el precio rompe la media.

Principio de estrategia

La estrategia se basa principalmente en el indicador de la media móvil. Utiliza la función sma para calcular el precio de cierre promedio en un período determinado y obtiene la media móvil. Se genera una señal de compra cuando el precio de cierre más reciente rompe la media móvil de abajo hacia arriba; se genera una señal de venta cuando el cierre más reciente rompe la media móvil de arriba hacia abajo.

En concreto, define en la estrategia la fuente de cálculo de la media móvil (el precio de cierre más reciente) y la duración del ciclo, obteniendo una secuencia de datos de la media móvil. Luego establece dos condiciones: crear una orden de compra cuando el precio cruza la media por encima; crear una orden de venta cuando el precio cruza la media por debajo. Una vez creado el pedido, también establece un stop loss: cancelar una parte de la posición cuando el pedido se beneficia al alcanzar la proporción establecida, y cancelar toda la posición cuando el pedido alcanza el precio de stop o stop loss establecido.

Análisis de las ventajas

Es una estrategia de seguimiento de tendencias sencilla y práctica que tiene las siguientes ventajas:

  1. Es fácil de entender y ajustar.
  2. La línea media móvil es un indicador técnico común y fiable que filtra el ruido del mercado y identifica tendencias.
  3. Al mismo tiempo, se puede establecer un stop loss para bloquear parte de los beneficios y controlar el riesgo.
  4. Solo se requieren parámetros sencillos para funcionar y se aplica a la introducción cuantitativa.

Análisis de riesgos

A pesar de las ventajas de esta estrategia, también hay algunos riesgos:

  1. Las medias móviles son propensas a generar retrasos y pueden perderse una reversión a corto plazo.
  2. No se tiene en cuenta el entorno de los grandes juegos y es fácil ser encerrado.
  3. Sin optimización de parámetros, la configuración incorrecta de los parámetros puede afectar el rendimiento de la estrategia.
  4. No se filtran en combinación con otros indicadores, y hay una cierta tasa de errores.

Para controlar estos riesgos, podemos combinar otros indicadores para optimizar la filtración, introducir un juicio de tendencias a corto plazo en el gran mercado, o utilizar métodos de aprendizaje automático para encontrar la combinación óptima de parámetros.

Dirección de optimización

La estrategia se puede optimizar principalmente en los siguientes aspectos:

  1. Añadir otros indicadores técnicos de juicio, formar un sistema de negociación, mejorar la probabilidad de éxito de la estrategia. Por ejemplo, agregar indicadores de juicio auxiliares como MACD, KD.

  2. Adhesión a un mecanismo de stop loss. Utiliza stop loss de seguimiento o stop loss de tiempo para bloquear las ganancias y evitar la expansión de las pérdidas.

  3. Optimización de parámetros. Cambiar los parámetros de ciclo de las medias móviles para encontrar la combinación óptima de parámetros. También se pueden probar diferentes tipos de medias móviles.

  4. Aumentar el juicio de aprendizaje automático. El uso de algoritmos como el bosque aleatorio, LSTM y otros combinados con múltiples factores para determinar la dirección de la tendencia.

  5. Optimización de la lógica de entrada y salida. Establecer condiciones de filtro de tendencia para evitar operaciones de reversión al final de la tendencia. Considerar el uso de lógica de liquidación por lotes.

Resumir

Esta estrategia de ruptura de la línea de paridad móvil es muy adecuada en general como estrategia de entrada para el comercio cuantitativo. Su idea es simple, fácil de entender y operar, y tiene cierto efecto en el campo de batalla. Al mismo tiempo, hay mucho espacio para pruebas y optimizaciones posteriores.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)