Tendencia siguiendo la estrategia basada en el porcentaje de retroceso

El autor:¿ Qué pasa?, Fecha: 14 de septiembre de 2023 19:49:14
Las etiquetas:

Este artículo explica en detalle una estrategia de negociación cuantitativa que sigue tendencias basadas en el retroceso porcentual de los máximos locales.

I. Lógica de la estrategia

La lógica central de esta estrategia consiste en identificar los máximos locales durante un determinado período y en realizar retracements de un porcentaje fijo.

  1. Primero calcule el máximo máximo de los últimos 90 bares como el pico local.

  2. Cuando el precio retrocede un porcentaje fijo (por ejemplo, 3%) desde ese pico, vaya largo para seguir la tendencia.

  3. Establecer el objetivo de obtener ganancias en un cierto porcentaje (por ejemplo, un 6%) por encima del precio de entrada.

  4. No se utiliza ningún stop loss, centrándose en seguir la tendencia.

Al determinar la entrada basada en el retroceso porcentual de los tops locales, se puede lograr la confirmación de la tendencia filtrando efectivamente las consolidaciones.

II. Ventajas de la Estrategia

La mayor ventaja de esta estrategia es el uso de porcentaje de retroceso para medir las tendencias, filtrando una gran cantidad de ruido.

Otra ventaja es la lógica de toma de ganancias, que garantiza una ganancia y pérdida controlables por operación, alineándose con principios de gestión de dinero sólidos.

Por último, el mayor objetivo de rentabilidad que el porcentaje de retroceso también proporciona cierta dinámica de riesgo-recompensación.

III. Posibles debilidades

Si bien la estrategia tiene méritos, en el comercio real deben tenerse en cuenta los siguientes riesgos:

En primer lugar, el porcentaje de retroceso debe fijarse con prudencia, ya que los retrocesos demasiado profundos o superficiales pueden afectar al potencial de ganancia.

En segundo lugar, la ausencia de un stop loss expone la estrategia a grandes riesgos para el comercio único.

Por último, la optimización inadecuada de parámetros también puede conducir a problemas de sobreajuste y deterioro de la calidad de la señal.

IV. Resumen

En resumen, este artículo ha explicado en detalle una estrategia de seguimiento de tendencia cuantitativa basada en el retroceso porcentual. Puede identificar efectivamente la dirección de la tendencia y entrar en retrocesos. La gestión de beneficios también proporciona ciertos mecanismos de control de riesgos. En general, al construir reglas basadas en retrocesos de picos locales, esta estrategia puede servir como un sistema robusto de seguimiento de tendencia después de la optimización adecuada.


/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © luboremenar

//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
     default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)

// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)

// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)

if (longCondition1)
    strategy.entry("Long1", strategy.long, qty = strategy.equity/close)

strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
     when= crossover(strategy.position_size, 0))


// plot
plot(strategy.equity)

// for testing, debugging
//test=0.0  
//if(crossover(strategy.position_size, 0))
//    test := (close*1.06-close)*basis_points
//plot(test)

Más.