Estrategia automática de negociación larga/corta basada en puntos de pivote diarios

El autor:¿ Qué pasa?, Fecha: 2024-01-23 14:24:22
Las etiquetas:

img

Resumen general

Esta estrategia dibuja dos líneas basadas en los precios más altos y más bajos de los candelabros diarios para juzgar las tendencias largo/corto.

Estrategia lógica

Esta estrategia utiliza principalmente los puntos de pivote de las velas diarias para determinar tendencias largas / cortas. Los llamados puntos de pivote se refieren a los precios más altos y más bajos de ayer. Estas dos líneas forman un rango comercial. Si el precio de hoy rompe cualquiera de ellos, indica una reversión de la tendencia.

En concreto, la lógica principal es la siguiente:

  1. Línea de precios más alta: gráfico del nivel de precios más alto de ayer.
  2. Línea de precios más baja: gráfico del nivel de precios más bajo de ayer.
  3. Entrada larga: se abre una posición larga cuando el precio de cierre rompe la línea de precio más alta.
  4. Entrada corta: se abre una posición corta cuando el precio de cierre rompe la línea de precio más baja.
  5. Stop loss: Stop loss largo cerca de la línea de precio más baja, stop loss corto cerca de la línea de precio más alta.

Al capturar las tendencias a través de los avances de los precios más altos / más bajos, realiza el cambio automático entre largo y corto.

Análisis de ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. Lógica sencilla, fácil de entender e implementar
  2. Basado en barras diarias, ciclo largo, menos susceptible a ruidos a corto plazo
  3. Cambiar automáticamente entre largo y corto, evitar los mercados no de tendencia
  4. Stop loss claro, beneficioso para el control del riesgo

Análisis de riesgos

Algunos riesgos:

  1. Las barras diarias tienen una frecuencia más baja, incapaz de detener la pérdida a tiempo
  2. Los descubrimientos falsos pueden causar pérdidas innecesarias
  3. La retención prolongada puede conducir a pérdidas ampliadas

Mejoras:

  1. Añadir otros indicadores de frecuencia más alta para confirmar
  2. Optimice los parámetros para filtrar los avances falsos
  3. Adoptar métodos de detención progresiva de pérdidas para una detención oportuna de pérdidas

Direcciones de optimización

Algunas instrucciones:

  1. Más pruebas de retroceso en diferentes productos y conjuntos de datos más largos para probar la estabilidad
  2. Explore otros indicadores de avance como canales, bandas de Bollinger, etc.
  3. Incorporar el volumen de negociación para evitar falsas rupturas sin volumen
  4. Añadir más filtros para reducir las roturas falsas
  5. Utilice el aprendizaje automático para la optimización de parámetros

Resumen de las actividades

En resumen, esta estrategia simple realiza automáticamente largo / corto basado en los pivots diarios. La lógica es clara y fácil de entender. Las optimizaciones adicionales pueden mejorar la estabilidad. Los inversores pueden aplicarla al comercio en vivo basado en la preferencia personal de riesgo.


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

//Noro
//2019

//@version=3
strategy(title = "Noro's DEX Strategy", shorttitle = "DEX str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
showlines = input(true, title = "Show lines")
showbg = input(false, title = "Show background")
showday = input(false, title = "Show new day")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//New day trand
bar = close > open ? 1 : close < open ? -1 : 0
newday = request.security(syminfo.tickerid, 'D', time)

//Lines
uplevel = request.security(syminfo.tickerid, 'D', high)
dnlevel = request.security(syminfo.tickerid, 'D', low)
upcolor = uplevel == uplevel[1] and showlines ? lime : na
dncolor = dnlevel == dnlevel[1] and showlines? red : na
plot(uplevel, offset = 1, linewidth = 2, color = upcolor)
plot(dnlevel, offset = 1, linewidth = 2, color = dncolor)

//Background
size = strategy.position_size
col = time == newday + 86400000 and showday ? blue : showbg and size > 0 ? lime : showbg and size < 0 ? red : na
bgcolor(col)

//Orders
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong ? lot : 0, stop = uplevel, when = truetime)
    strategy.entry("Close", strategy.short, needshort ? lot : 0, stop = dnlevel, when = truetime)

Más.