
Esta estrategia es un sistema de negociación basado en el cruce de medias móviles, que combina un método de gestión de riesgos con un stop loss móvil dinámico y un punto de ganancia de doble objetivo. La estrategia se basa principalmente en el cruce del precio con la media móvil de 200 periodos para determinar el momento de entrada, mientras que establece un stop loss y un beneficio flexibles para controlar el riesgo y maximizar las ganancias.
Señales de entrada:
Gestión de riesgos:
Objetivos de ganancias:
Administración de posiciones:
El seguimiento de tendencias: el uso de promedios móviles para capturar las tendencias del mercado ayuda a obtener ganancias en las grandes tendencias.
Control de riesgos: el uso de una combinación de stop loss inicial y stop loss móvil dinámico limita las pérdidas máximas y protege los beneficios obtenidos.
Maximización de las ganancias: Al establecer dos precios objetivo, se puede seguir la tendencia general y al mismo tiempo garantizar una parte de las ganancias.
Automatización: Las estrategias son completamente automatizadas, lo que reduce la interferencia emocional humana.
Flexibilidad: los parámetros como el ciclo de las medias móviles, los puntos de parada, las ganancias, etc., se pueden ajustar según las condiciones del mercado.
Riesgo de mercado en movimiento: en mercados en movimiento horizontal, puede desencadenar frecuentemente falsas brechas, lo que lleva a pérdidas continuas.
Riesgo de deslizamiento: en un mercado rápido, el precio de transacción real puede estar muy alejado del precio ideal.
Tráfico excesivo: las frecuentes señales de cruce pueden provocar un exceso de transacciones, aumentando los costos de transacción.
Dependencia de un solo indicador: depender solo de las medias móviles puede pasar por alto otra información importante del mercado.
Riesgo de posición fija: el número fijo de transacciones por transacción puede no ser adecuado para todos los entornos de mercado.
Combinación de varios indicadores: Considere la introducción de otros indicadores técnicos como el RSI, el MACD, etc., que se utilicen en combinación con las medias móviles para mejorar la fiabilidad de la señal de entrada.
Gestión de posiciones dinámica: ajuste dinámico del número de operaciones según la volatilidad del mercado y el saldo de la cuenta para un mejor control del riesgo.
Filtración de entornos de mercado: aumenta la intensidad de la tendencia o la volatilidad de los indicadores, evitando la entrada en un entorno de mercado no adecuado para el comercio.
Optimización de parámetros: Utiliza datos históricos para evaluar diferentes combinaciones de parámetros para encontrar los mejores períodos de medias móviles, puntos de parada y configuraciones de ganancias.
Filtración temporal: Considere la posibilidad de incorporar un filtro temporal para evitar el comercio en períodos de tiempo con mayor volatilidad o poca liquidez.
Añadir los factores fundamentales: el momento oportuno para ajustar la estrategia en combinación con la publicación de datos económicos importantes u otros eventos fundamentales.
La estrategia de cruce de la línea de la mediana de los precios de los dos objetivos móviles de parada dinámica es un sistema de negociación cuantitativa que combina análisis técnico y gestión de riesgos. Captura las tendencias del mercado a través de promedios móviles, mientras que utiliza el stop loss dinámico y el objetivo de ganancias múltiples para equilibrar el riesgo y los beneficios. La principal ventaja de la estrategia reside en su alto grado de automatización, la flexibilidad de control de riesgo y el potencial de obtener beneficios visibles en mercados de fuerte tendencia.
/*backtest
start: 2023-07-29 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL/USDT Trading Strategy", overlay=true)
// Параметры стратегии
input_quantity = input(2, title="Trade Size (SOL)")
stop_loss_points = input(500, title="Stop Loss Points")
take_profit_points_1 = input(3000, title="First Take Profit Points")
take_profit_points_2 = input(4000, title="Second Take Profit Points")
move_stop_to_entry_points = input(200, title="Move Stop to Entry Points")
ma_period = input(180, title="MA Period")
// Расчет скользящей средней
ma = ta.sma(close, ma_period)
// Условия входа в сделку
long_condition = ta.crossover(close, ma)
short_condition = ta.crossunder(close, ma)
// Текущая цена
var float entry_price = na
// Логика открытия и закрытия сделок
if (long_condition)
entry_price := close
strategy.entry("Long", strategy.long, qty=input_quantity)
if (short_condition)
entry_price := close
strategy.entry("Short", strategy.short, qty=input_quantity)
// Логика выхода из сделок
if (strategy.position_size > 0)
if (close >= entry_price + take_profit_points_1 * syminfo.mintick)
strategy.exit("Partial Take Profit", "Long", qty=0.75 * input_quantity, limit=close)
strategy.exit("Remaining Take Profit", "Long", qty=0.25 * input_quantity, limit=entry_price + take_profit_points_2 * syminfo.mintick, stop=entry_price)
if (close >= entry_price + move_stop_to_entry_points * syminfo.mintick)
strategy.exit("Stop Loss at Entry", "Long", qty=strategy.position_size, stop=entry_price)
else
strategy.exit("Take Profit/Stop Loss", "Long", stop=entry_price - stop_loss_points * syminfo.mintick, limit=entry_price + take_profit_points_1 * syminfo.mintick)
if (strategy.position_size < 0)
if (close <= entry_price - take_profit_points_1 * syminfo.mintick)
strategy.exit("Partial Take Profit", "Short", qty=0.75 * input_quantity, limit=close)
strategy.exit("Remaining Take Profit", "Short", qty=0.25 * input_quantity, limit=entry_price - take_profit_points_2 * syminfo.mintick, stop=entry_price)
if (close <= entry_price - move_stop_to_entry_points * syminfo.mintick)
strategy.exit("Stop Loss at Entry", "Short", qty=strategy.position_size, stop=entry_price)
else
strategy.exit("Take Profit/Stop Loss", "Short", stop=entry_price + stop_loss_points * syminfo.mintick, limit=entry_price - take_profit_points_1 * syminfo.mintick)
// Отображение скользящей средней
plot(ma, title="200 MA", color=color.blue)