
Descripción general
La estrategia es una estrategia de comercio cuantitativa basada en el cruce de las medias móviles. Se calcula el promedio móvil de dos períodos diferentes (la línea rápida y la línea lenta) para generar una señal de compra cuando la línea rápida cruza la línea lenta de abajo hacia arriba y una señal de venta cuando la línea rápida cruza la línea lenta de arriba hacia abajo. La estrategia también introduce el concepto de gestión de posiciones dinámicas, que ajusta dinámicamente el tamaño de las posiciones de cada transacción en función de las pérdidas de la cuenta para controlar el riesgo.
Principio de estrategia
- Calcule un promedio móvil simple (SMA) de dos períodos diferentes, de 9 y 21 períodos respectivamente.
- Cuando la línea rápida ((9 ciclos) pasa de abajo hacia arriba a través de la línea lenta ((21 ciclos), genera una señal de compra; cuando la línea rápida pasa de arriba hacia abajo a través de la línea lenta, genera una señal de venta.
- El monto de riesgo de cada operación se calcula en base al 1% del saldo de la cuenta, y luego el número de acciones que se deben comprar se calcula en base al monto de riesgo y el rango de precios actuales (el precio más alto - el precio más bajo).
- Si la estrategia actual está en estado de ganancia, aumenta la posición de la próxima operación en un 10%; si está en estado de pérdida, reduce la posición de la próxima operación en un 10%.
- Ejecutar la operación de compra cuando aparece la señal de compra y la operación de venta cuando aparece la señal de venta.
Ventajas estratégicas
- Sencilla y fácil de entender: La estrategia se basa en el clásico principio de la media móvil cruzada, tiene una lógica clara, es fácil de entender y de implementar.
- Seguimiento de tendencias: Mediante el uso de promedios móviles de dos períodos diferentes, se puede capturar eficazmente la tendencia a medio y largo plazo de los precios, lo que es adecuado para el seguimiento de tendencias.
- Gestión de posiciones dinámica: ajuste dinámico del tamaño de las posiciones en función de las ganancias y pérdidas, aumentar adecuadamente las posiciones en caso de ganancias y reducir adecuadamente las posiciones en caso de pérdidas, lo que ayuda a controlar el riesgo y mejorar los beneficios.
- Amplia aplicabilidad: La estrategia puede aplicarse a una variedad de mercados financieros y variedades de transacciones, como acciones, futuros, divisas, etc.
Riesgo estratégico
- Comercio frecuente: debido a que la estrategia se basa en señales de cruce de medias móviles a corto plazo, puede conducir a un comercio frecuente, aumentando los costos de transacción y el riesgo de deslizamiento.
- Bajo rendimiento en mercados convulsivos: En mercados convulsivos y no tendencia, la estrategia puede generar más señales falsas y causar pérdidas.
- Riesgo de optimización de parámetros: el rendimiento de la estrategia depende de la selección periódica de las medias móviles, diferentes parámetros pueden dar lugar a diferentes resultados, existe el riesgo de sobreajuste de optimización de parámetros.
Dirección de optimización de la estrategia
- Introducción de indicadores de confirmación de tendencias: en base a la señal de cruce de la media móvil, se introducen otros indicadores de confirmación de tendencias, como MACD, ADX, etc., para filtrar algunas señales falsas y mejorar la calidad de la señal.
- Optimización de las reglas de gestión de posiciones: las reglas de gestión de posiciones existentes son más simples, y se puede considerar la introducción de algoritmos de gestión de posiciones más complejos, como la fórmula de Kelly, la gestión de fondos de proporción fija, etc., para mejorar aún más los beneficios ajustados al riesgo.
- Incorporar un mecanismo de stop loss y stop loss: Incorporar reglas de stop loss y stop loss en la estrategia para controlar la pérdida máxima y la ganancia máxima de una sola operación y aumentar el riesgo-beneficio de la estrategia.
- Optimización de parámetros de adaptación: Introducción de un mecanismo de optimización de parámetros de adaptación para ajustar automáticamente los parámetros de la estrategia según los cambios en la situación del mercado, mejorando la estabilidad y la adaptabilidad de la estrategia.
Resumir
La estrategia de cruce de la media móvil es una estrategia de comercio simple y práctico, cuantificado, para capturar la tendencia de los precios a través de la señal de cruce de dos promedios móviles de diferentes períodos, al mismo tiempo que la introducción de las reglas de gestión de posición dinámica para controlar el riesgo. La lógica de la estrategia es clara, fácil de implementar y de aplicación amplia.
Código Fuente de la Estrategia
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © okolienicholas
//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)
// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here
// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)
// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Calculate the risk per trade
risk_per_trade = account_balance * 0.01
// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)
// Calculate the profit or loss
profit_or_loss = strategy.netprofit
// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss
// Execute orders
if (buy_signal)
strategy.entry("Buy", strategy.long, qty=shares_to_buy)
if (sell_signal)
strategy.entry("Sell", strategy.short, qty=shares_to_buy)