Estrategia de ruptura de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-28 13:50:49
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación de ruptura basada en promedios móviles. Calcula el precio promedio durante un cierto período como el promedio móvil. Cuando el precio rompe el promedio móvil, se generan señales comerciales.

Estrategia lógica

La estrategia se basa principalmente en el indicador de promedio móvil. Utiliza la función sma para calcular el precio de cierre promedio durante un período para obtener el promedio móvil. Cuando el último precio de cierre rompe el promedio móvil hacia arriba, se genera una señal de compra. Cuando el último precio de cierre rompe el promedio móvil hacia abajo, se genera una señal de venta.

Específicamente, define la fuente (precio de cierre reciente) y la longitud del promedio móvil en la estrategia para obtener la secuencia de datos de promedio móvil. Luego establece dos condiciones: crear una orden larga cuando el precio cruza por encima del promedio móvil; crear una orden corta cuando el precio cruza por debajo del promedio móvil. Después de crear las órdenes, también establece la toma de ganancias y el stop loss: cierra parte de la posición cuando la orden alcanza una proporción de ganancias establecida, y cierra toda la posición cuando la orden alcanza el precio de toma de ganancias o stop loss preestablecido.

Análisis de ventajas

Se trata de una estrategia de tendencia sencilla y práctica que presenta las siguientes ventajas:

  1. La lógica es clara y fácil de entender y ajustar los parámetros.
  2. La media móvil es un indicador técnico de uso común y fiable que puede filtrar el ruido del mercado e identificar tendencias.
  3. Establecer la toma de ganancias y el stop loss al mismo tiempo puede bloquear algunas ganancias y controlar los riesgos.
  4. Se puede ejecutar con parámetros simples sólo, adecuado para el nivel de entrada cuántica.

Análisis de riesgos

Aunque la estrategia tiene muchas ventajas, todavía existen algunos riesgos:

  1. Los promedios móviles tienden a retrasarse y pueden pasar por alto las reversiones a corto plazo.
  2. No tiene en cuenta el entorno general del mercado y es propenso a quedar atrapado.
  3. Ninguna optimización de parámetros puede afectar el rendimiento de la estrategia.
  4. Puede presentar algunas señales falsas, ya que no se utilizan otros indicadores para la filtración.

Para controlar estos riesgos, podemos optimizar combinando otros indicadores para la filtración, introducir un juicio de tendencia de mercado a corto plazo o usar métodos de aprendizaje automático para encontrar las combinaciones óptimas de parámetros.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Añadir otros indicadores técnicos para el juicio para construir un sistema de negociación y mejorar la tasa de ganancia.

  2. Agregue mecanismos de stop loss. Utilice el stop loss de seguimiento o el stop loss basado en el tiempo para bloquear las ganancias y evitar pérdidas más amplias.

  3. Realizar la optimización de parámetros. Cambiar el parámetro del período de media móvil para encontrar la mejor combinación. También se pueden probar diferentes tipos de medias móviles.

  4. Usar algoritmos como el bosque aleatorio y LSTM combinados con múltiples factores para determinar la dirección de la tendencia.

  5. Optimice la lógica de entrada y salida. Establezca condiciones de filtrado de tendencia para evitar operaciones contra la tendencia cerca de su final. Considere usar la lógica de salida escalonada.

Resumen de las actividades

En general, esta estrategia de breakout de promedio móvil es muy adecuada como estrategia de negociación de cantidades para principiantes. Tiene una lógica simple, fácil de entender y operar, con algunos efectos prácticos. Al mismo tiempo, deja mucho espacio para pruebas y optimización adicionales. Podemos introducir más indicadores técnicos y modelos sobre esta base para desarrollar mejores estrategias de cantidades.


/*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)


Más.