Estrategia de beneficio basada en el seguimiento de tendencias


Fecha de creación: 2023-09-26 11:22:04 Última modificación: 2023-09-26 11:22:04
Copiar: 1 Número de Visitas: 590
1
Seguir
1617
Seguidores

Descripción general

La estrategia de seguimiento de tendencias para obtener ganancias tiene como objetivo detectar la tendencia a largo plazo y la corrección a corto plazo de los activos, tomar posiciones para aprovechar las oportunidades de ajuste a corto plazo al mismo tiempo que se observa la tendencia a largo plazo, y establecer una línea de parada de pérdida razonable para que la tendencia avance y se detenga a tiempo.

Principio de estrategia

La estrategia se basa principalmente en la EMA media y el RSI para determinar tendencias a corto plazo. En concreto, utiliza la EMA de 50 días y la EMA de 200 días para determinar tendencias a largo plazo y el RSI para determinar tendencias a largo plazo.

Después de la entrada, la estrategia establece una condición de parada de pérdidas. Cuando el precio sube más de 2 veces la unidad BHD de la entrada, se obtiene un beneficio adicional; cuando el precio baja más de 3 veces la unidad BHD de la entrada, se obtiene una posición de parada de pérdidas.

De esta manera, la estrategia tiene en cuenta las características de las tendencias a largo y corto plazo, controla el riesgo al tiempo que mejora las ganancias, y puede ser tanto progresiva como para detener las pérdidas en el momento oportuno.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Tenga en cuenta las características de las tendencias a largo y corto plazo, combinadas con indicadores fuertes y débiles, para evitar posiciones ciegas en mercados convulsivos.

  2. La tendencia es seguir la tendencia y construir posiciones en la dirección del mercado, con una alta tasa de éxito.

  3. Establecer un punto de parada para evitar pérdidas, lo que facilita la obtención de ganancias y el control de los riesgos.

  4. El punto de parada de pérdidas se puede ajustar dinámicamente según la volatilidad del mercado y es más razonable.

  5. Los datos de retrospectiva muestran que la estrategia tiene un alto rendimiento y una buena estabilidad en varios pares y ciclos.

  6. La estrategia es simple, clara, fácil de entender y de implementar, y es adecuada para comerciantes de todos los niveles.

Análisis de riesgos

La estrategia también tiene ciertos riesgos:

  1. En el corto y largo plazo, puede haber errores en el juicio, y puede haber errores en la dirección de la inversión.

  2. El mercado puede caer de manera abrupta, y el punto de parada no puede evitar completamente el riesgo de grandes pérdidas.

  3. La configuración incorrecta de los parámetros (por ejemplo, el ciclo de la línea media) puede afectar la eficacia de la estrategia.

  4. El punto de parada es demasiado pequeño y puede afectar a los ingresos por salida prematura.

  5. Los datos de retroalimentación no representan el rendimiento en tiempo real, y se necesita una optimización continua durante el tiempo real.

Resolvemos el riesgo:

  1. Optimice los parámetros, ajuste el ciclo de la línea media, o agregue otros indicadores para juzgar la fortaleza.

  2. Se puede configurar un mayor margen de pérdida o agregar un mecanismo de control de viento como la reducción de la posición.

  3. Haga más pruebas de retroceso para evaluar el impacto de los diferentes parámetros en la estrategia.

  4. Optimización dinámica de los parámetros de frenado y ajuste de los parámetros de frenado según las condiciones del mercado.

  5. La continuidad de la retroalimentación y la optimización, combinada con el disco duro para realizar ajustes, hacen que la estrategia sea más estable.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimizar la configuración de los parámetros, como ajustar el ciclo de la línea media, el ciclo de la unidad BHD, etc., para encontrar la combinación óptima de parámetros.

  2. La adición de otros indicadores, como MACD, KD, etc., hace que los juicios a corto plazo sean más precisos.

  3. Optimizar las estrategias de stop loss, como ajustar el stop loss en función de la dinámica de las tasas de fluctuación.

  4. Agregar estrategias de gestión de posiciones, como el tamaño de la posición afectado por la intensidad de la tendencia.

  5. Para evaluar la robustez de la estrategia, se deben probar datos de más variedades y ciclos.

  6. Se puede evitar la trampa añadiendo condiciones de filtración, por ejemplo, si el precio de cierre es más alto que el precio de apertura.

  7. La introducción de tecnologías avanzadas como el aprendizaje automático para que las estrategias sean más automáticas e inteligentes.

A través de estas optimizaciones, se puede mejorar el rendimiento de las estrategias en términos de probabilidad de éxito, rentabilidad, estabilidad y adaptabilidad.

Resumir

La estrategia de seguimiento de la tendencia de ganancias en general, tiene ventajas como la consideración de las características a largo plazo, la fluidez y el stop loss claro, es una estrategia de seguimiento de la tendencia más estable y eficiente. Pero también existe un cierto riesgo, que requiere una prueba de optimización continua de los parámetros y reglas, combinado con el ajuste de la situación en el mercado real. En general, la estrategia es clara y fácil de usar, vale la pena que los comerciantes aprendan. Si se optimiza aún más, puede convertirse en una de las estrategias de comercio cuantitativo más estables y confiables.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

// @version=5
strategy(
 shorttitle            = 'Take Profit On Trend',
 title                 = 'Take Profit On Trend (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = true,
 calc_on_order_fills   = true,
 use_bar_magnifier     = true,
 initial_capital       = 1000,
 default_qty_type      = strategy.percent_of_equity,
 default_qty_value     = 100,
 commission_type       = strategy.commission.percent,
 commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2021)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time = timestamp(end_year, end_month, end_day, 23, 59)

is_back_test_time() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// RSI
rsi200 = ta.rsi(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 50)
hist = emacd - emacd_signal

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_lower = ema200 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY CONDITIONS

// Long-term uptrend
entry_condition1 = rsi200 > 51 and hist > 0

// Short-term downtrend
entry_condition2 = all_body_decrease(2)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2

if ENTRY_CONDITIONS and is_back_test_time()
    strategy.entry('entry', strategy.long)


// CLOSE CONDITIONS

// Price increase 2 BHD unit
take_profit = close > strategy.position_avg_price + bhd_unit * 2

// Price decrease 3 BHD unit
stop_loss = close < strategy.position_avg_price - bhd_unit * 3

CLOSE_CONDITIONS = take_profit or stop_loss

if CLOSE_CONDITIONS
    strategy.close('entry')



// Draw
plot(ema50, color=color.orange, linewidth=2)
plot(ema200, color=color.purple, linewidth=2)
bhd_upper_line = plot(bhd_upper, color=color.teal)
bhd_lower_line = plot(bhd_lower, color=color.teal)
fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))