
Descripción general
La idea principal de esta estrategia es utilizar las medias móviles de dos períodos diferentes para capturar oportunidades de rebote después de una corrección del mercado. La estrategia abre más posiciones cuando los precios están por encima de la media a largo plazo y se vuelven a la media a corto plazo.
Principio de estrategia
- Calcule las medias móviles de dos períodos diferentes (MA1 y MA2), donde MA1 es la media a largo plazo y MA2 es la media a corto plazo.
- Cuando el precio de cierre está por encima de MA1 y por debajo de MA2, y no tiene posiciones en ese momento, y el tiempo actual está dentro del rango de tiempo de negociación establecido, la estrategia de abrir posiciones es más.
- Registra el precio de apertura de la posición BuyPrice, y calcula el precio de parada StopPrice ((es decir, el precio de apertura de la posición cae i_stopPercent por ciento)
- Cuando el cierre vuelve a la MA2 y i_lowerClose es false, o cuando el cierre cae por encima del stopPrice, la estrategia se apaga.
- Si i_lowerClose es verdadero, se cerrará la posición cuando el precio de cierre esté por encima de MA2 y el precio de cierre de la línea K anterior esté por debajo de MA2.
Ventajas estratégicas
- Seguimiento de tendencias: determina las tendencias generales actuales mediante la determinación de la relación entre la posición de los precios y la línea media a largo plazo, y busca oportunidades de entrada en las tendencias.
- Compra de reajuste: Buscar oportunidades de compra de un reajuste de precios a la línea media a corto plazo en una tendencia alcista, lo que mejora la relación calidad-precio de las compras de puntos.
- Protección contra pérdidas: establece un precio de parada de pérdidas, que se cierra automáticamente cuando el precio se invierte a un determinado nivel, para controlar el riesgo de caída.
- Parámetros flexibles: el usuario puede configurar el ciclo de la media, el porcentaje de stop loss, y si el precio de cierre de la línea K anterior es inferior a la media a corto plazo.
Riesgo estratégico
- Optimización de parámetros: diferentes configuraciones de parámetros tienen una gran influencia en el rendimiento de la estrategia, y se requiere optimización y retroalimentación de parámetros en diferentes entornos de mercado para encontrar la combinación óptima de parámetros.
- Mercado de crisis: En un mercado de crisis, los precios fluctúan con frecuencia entre las medias de largo plazo, lo que puede conducir a que la estrategia se posicione con frecuencia y pierda más costos de transacción.
- Reversión de la tendencia: cuando la tendencia del mercado se vuelve, la estrategia puede presentar pérdidas continuas. En este momento, se necesita combinar otros indicadores o señales para juzgar la reversión de la tendencia y ajustar la estrategia a tiempo.
- Los eventos de cigüeñas negras: cuando ocurren eventos inesperados importantes e imprevisibles en el mercado, pueden provocar una fuerte fluctuación de los precios, lo que provoca una mayor pérdida de la estrategia de post-detención.
Dirección de optimización de la estrategia
- Determinación de tendencias: la introducción de más indicadores de determinación de tendencias, como el ADX, antes de abrir una posición, para confirmar la fuerza y la dirección de la tendencia actual y mejorar la precisión de la señal de apertura de la posición.
- Detención dinámica: ajuste dinámico de los puntos de parada en función de la volatilidad de los precios, indicadores como el ATR, con una relajación adecuada de la parada cuando los precios fluctúan más, y un endurecimiento de la parada cuando los precios fluctúan menos.
- Gestión de posiciones: De acuerdo con la intensidad de la tendencia del mercado, la volatilidad de los precios y otros factores, ajuste dinámicamente el tamaño de las posiciones de cada posición abierta, aumentar las posiciones cuando la tendencia es fuerte y la volatilidad es moderada, reducir las posiciones cuando la tendencia es débil o la volatilidad es demasiado alta.
- Hedge de múltiples posiciones: Considere la posibilidad de monitorear simultáneamente las señales de ambos lados de la posición, y cubrir las posiciones en diferentes mercados o períodos para reducir el riesgo general de la estrategia.
Resumir
La estrategia de seguimiento de retracción de las medias móviles utiliza la relación de posición relativa de dos medias periódicas diferentes para capturar las oportunidades de retracción de los precios en la tendencia ascendente. La estrategia se aplica a los mercados de tendencia y puede obtener ganancias estables en situaciones de tendencia mediante el establecimiento de los parámetros y los parámetros apropiados.
Código Fuente de la Estrategia
/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © contapessoal_ivan
// @version=5
strategy("Pullback Strategy",
overlay=true,
initial_capital=1000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100, // 100% of balance invested on each trade
commission_type=strategy.commission.cash_per_contract,
commission_value=0.005) // Interactive Brokers rate
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)
// Check filter(s)
f_dateFilter = true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)