Estrategia de negociación algorítmica de inversión de pivote simple

El autor:¿ Qué pasa?, fecha: 2024-01-17 15:37:33
Las etiquetas:

img

Resumen general

Esta estrategia realiza operaciones de reversión basadas en breakouts de punto de pivote. Calcula el pico y el pico bajo durante un período especificado para determinar los niveles de pico. Se corta cuando el precio se rompe por encima del pico alto, y se hace largo cuando el precio se rompe por debajo del pico bajo. Esta es una estrategia de reversión media típica a corto plazo.

Estrategia lógica

La lógica central de esta estrategia es calcular los puntos altos y bajos del eje.

Pivot High = suma del máximo máximo durante las últimas barras N1 / N1

Pivot Low = suma de los mínimos más bajos durante las últimas barras de N2 / N2

Donde N1 y N2 son parámetros que definen el número de barras utilizadas para calcular los puntos de pivote.

Una vez obtenidos los niveles pivot alto/bajo, las reglas de negociación son:

  1. Corto cuando el precio se rompe por encima del máximo de pivote
  2. Largo cuando el precio se rompe por debajo del mínimo de pivote
  3. Establecer el stop loss después de la entrada

Así que realiza una estrategia de reversión a corto plazo basada en las rupturas de puntos pivot.

Análisis de ventajas

Las ventajas de esta sencilla estrategia son:

  1. Lógica sencilla, fácil de entender e implementar
  2. Apto para operaciones de corto plazo de alta frecuencia
  3. Captura la reversión después de las rupturas de pivote
  4. Optimizable mediante ajuste de parámetros

Análisis de riesgos

Hay algunos riesgos:

  1. El riesgo de reversión fallida - La reversión después de la ruptura del pivote puede fallar y la tendencia continúa
  2. Riesgo de pérdida de detención - El riesgo de pérdida de detención preestablecido podría ser alcanzado y dar lugar a una gran pérdida.
  3. Riesgo de parámetros - Los parámetros inadecuados tienen un gran impacto en los resultados

Estos riesgos se pueden gestionar ajustando los parámetros, aplicando reglas de salida, etc.

Direcciones de optimización

Hay mucho espacio para la optimización:

  1. Combinar con otros indicadores técnicos para mejorar el calendario de entrada
  2. Añadir reglas de salida como el seguimiento de la pérdida de parada, tomar beneficios, etc.
  3. Ajuste dinámico de los parámetros para mejorar la adaptabilidad
  4. Optimización de parámetros para encontrar las mejores combinaciones de parámetros

Resumen de las actividades

En resumen, esta es una estrategia de inversión de pivote a corto plazo muy simple. Sus ventajas son la simplicidad y la capacidad de capturar inversiones. Pero hay algunos riesgos que deben abordarse a través de la optimización. En general, esto sirve como una buena estrategia de práctica para los principiantes y sienta las bases para estrategias avanzadas.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Pivot Reversal Strategy - FIGS & DATES 2.0", overlay=true, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075)

leftBars = input(4)
rightBars = input(2)

// backtesting date range
from_day = input(defval=1, title="From Day", minval=1, maxval=31)
from_month = input(defval=1, title="From Month", minval=1, maxval=12)
from_year = input(defval=2018, title="From Year", minval=1900)

to_day = input(defval=1, title="To Day", minval=1, maxval=31)
to_month = input(defval=1, title="To Month", minval=1, maxval=12)
to_year = input(defval=9999, title="To Year", minval=1900)

time_cond = true

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

middle = (swh+swl)/2

swh_cond = not na(swh)



hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : le[1] and high > hprice ? false : le[1]

if le and time_cond
    strategy.entry("LONG", strategy.long, comment="LONG", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : se[1] and low < lprice ? false : se[1]

if se and time_cond
    strategy.entry("SHORT", strategy.short, comment="SHORT", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


Más.