En la carga de los recursos... Cargando...

Comercio de tendencias en tiempo real basado en puntos de pivote y pendiente

El autor:¿ Qué pasa?, Fecha: 2024-04-26 15:34:28
Las etiquetas:El ATRADX- ¿Qué es?

img

Resumen general

Esta estrategia utiliza puntos de pivote (PivotHigh y PivotLow) para identificar los máximos y mínimos de oscilación en el precio y dibuja líneas de tendencia ascendente y descendente basadas en estos puntos. La pendiente de las líneas de tendencia se calcula utilizando métodos como ATR (Rango Verdadero Medio), desviación estándar o regresión lineal, y luego se ajusta por un factor de pendiente.

Principio de la estrategia

  1. Utilice las funciones ta.pivothigh (()) y ta.pivotlow (()) para detectar los máximos de oscilación (ph) y los mínimos de oscilación (pl) durante un cierto período de retroceso.
  2. Calcular la pendiente de las líneas de tendencia basándose en el método de cálculo seleccionado (ATR, desviación estándar o regresión lineal) y ajustarla multiplicándola por un factor de pendiente (mult).
  3. Utilizando los precios de pendiente y punto de pivote, calcular los valores actuales de la línea de tendencia ascendente (superior) y la línea de tendencia descendente (inferior).
  4. Determinar si el precio de cierre actual ha roto una línea de tendencia: si el precio de cierre está por encima de la línea de tendencia al alza, se genera una señal de ruptura al alza; si el precio de cierre está por debajo de la línea de tendencia al descenso, se genera una señal de ruptura al descenso.
  5. Trace las líneas de tendencia en el gráfico, con una opción para extender las líneas.
  6. Comercio basado en las señales de ruptura: ir largo en una ruptura al alza y ir corto en una ruptura a la baja.

Ventajas estratégicas

  1. La estrategia genera señales comerciales basadas en hechos objetivos del comportamiento de los precios (puntos de pivote y líneas de tendencia), proporcionando un grado de fiabilidad y estabilidad.
  2. La inclinación de las líneas de tendencia puede ajustarse dinámicamente en función de la volatilidad del mercado, adaptándose a las diferentes condiciones del mercado.
  3. Los usuarios pueden elegir con flexibilidad el método de cálculo de pendiente y la configuración de parámetros para optimizar el rendimiento de la estrategia.
  4. La estrategia proporciona modos de señal en tiempo real y con retraso para satisfacer las necesidades de los diferentes usuarios.
  5. La función de alerta incorporada puede ayudar a los usuarios a captar oportunamente las oportunidades comerciales.

Riesgos estratégicos

  1. En mercados agitados o cuando las tendencias no son claras, la estrategia puede generar frecuentes señales falsas, lo que conduce a una disminución de la rentabilidad.
  2. El rendimiento de la estrategia depende de la configuración de parámetros; los parámetros inadecuados pueden hacer que la estrategia fracase o genere operaciones excesivas.
  3. En el modo de señal con retraso, debido a la existencia de backtesting, los resultados reales de negociación pueden diferir de los resultados históricos de las pruebas.

Direcciones para la optimización de la estrategia

  1. Introducir más indicadores técnicos o características del comportamiento de los precios, como el volumen de operaciones y la volatilidad, para ayudar a confirmar las señales de ruptura de la línea de tendencia y mejorar la calidad de las señales.
  2. Filtrar las señales de negociación considerando factores como la duración y la magnitud de las rupturas de la línea de tendencia para reducir las señales falsas.
  3. Optimizar la gestión de posiciones y el control de riesgos, por ejemplo, ajustando dinámicamente el tamaño de las posiciones en función de la fuerza de la tendencia o la volatilidad, y fijando niveles razonables de stop loss y take profit.
  4. Optimizar los parámetros mediante el aprendizaje automático o algoritmos de optimización para encontrar las mejores combinaciones de parámetros.

Resumen de las actividades

Esta estrategia utiliza puntos de pivote y pendientes de tendencia para construir un sistema de negociación de tendencia en tiempo real. Al capturar eventos de ruptura de tendencia, la estrategia puede operar en las primeras etapas de la formación de tendencia. Aunque la estrategia tiene ciertas ventajas, aún es necesario ser consciente de sus riesgos en mercados agitados y mejorar aún más la robustez y la rentabilidad de la estrategia mediante la introducción de más información, la optimización del filtrado de señales, la gestión de posiciones y otros métodos.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(" only Ajay ", overlay=true)

//------------------------------------------------------------------------------
//Settings
//------------------------------------------------------------------------------{
length = input.int(14, 'Swing Detection Lookback')
mult = input.float(1., 'Slope', minval = 0, step = .1)
calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.')

//Style
upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style')
dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style')
showExt = input(true, 'Show Extended Lines')

//------------------------------------------------------------------------------}
//Calculations
//------------------------------------------------------------------------------{
var upper = 0.
var lower = 0.
var slope_ph = 0.
var slope_pl = 0.

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

//Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src,length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

//Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

//------------------------------------------------------------------------------}
//Extended Lines
//------------------------------------------------------------------------------{
// var uptl  = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right)
// var dntl  = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right)

// if ph and showExt
//     uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1))

// if pl and showExt
//     dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1))

//------------------------------------------------------------------------------}
//Plots
//------------------------------------------------------------------------------{
plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset)
plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset)

//Breakouts
upBreakout = upos > upos[1]
dnBreakout = dnos > dnos[1]

if (upBreakout)
    strategy.entry("Up Breakout", strategy.long)

if (dnBreakout)
    strategy.entry("Down Breakout", strategy.short)

//------------------------------------------------------------------------------}
//Alerts
//------------------------------------------------------------------------------{
alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward')

//------------------------------------------------------------------------------}


Relacionados

Más.