Estrategia dinámica de soporte y resistencia basada en datos históricos


Fecha de creación: 2023-11-28 17:00:13 Última modificación: 2023-11-28 17:04:16
Copiar: 4 Número de Visitas: 648
1
Seguir
1619
Seguidores

Estrategia dinámica de soporte y resistencia basada en datos históricos

Descripción general

Esta estrategia se basa en el cálculo dinámico de los máximos, mínimos y precios de cierre históricos, los puntos de resistencia de soporte y la generación de señales de comercio. La estrategia se aplica a la posición de línea media y larga, que puede aprovechar la resistencia de soporte en el mercado para obtener ganancias.

Principio de estrategia

  1. Calcula el promedio de los precios máximos, mínimos y de cierre del ciclo anterior, obteniendo el punto de referencia PP.

  2. Calcule 3 líneas de apoyo: S1 = 2PP - precio más alto; S2 = PP - (R1-S1); S3 = precio más bajo - 2(El precio más alto - PP)

  3. Calcula las 3 líneas de resistencia: R1 = 2PP - precio mínimo; R2 = PP + (R1-S1); R3 = precio máximo + 2(PP-precio mínimo)

  4. Cuando el precio sube por la línea de resistencia, haga más; cuando el precio baja por la línea de soporte, haga vacío.

Análisis de las ventajas

  1. La dinámica de los cambios en la resistencia de soporte basada en el cálculo de datos históricos permite capturar la estructura del mercado en tiempo real.

  2. La configuración de resistencias de soporte en varios niveles permite la optimización de la gestión de riesgos.

  3. Las señales de trading y los métodos de stop loss son simples e intuitivos.

Análisis de riesgos

  1. En situaciones de alta volatilidad, los precios de referencia proporcionados por los datos históricos pueden no ser válidos.

  2. Los cambios entre posiciones múltiples deben tener en cuenta el costo de la transacción.

  3. Se necesita asegurar la calidad de los datos para evitar errores de cálculo.

Dirección de optimización

  1. Se puede considerar la introducción de más datos históricos de referencia, como la línea de 100 días, etc.

  2. Optimización de la gestión de posiciones, como el ajuste de la proporción de las posiciones en función de la volatilidad.

  3. Aumentar las estrategias de detención de pérdidas, como el seguimiento de las detenciones o la gestión de los fondos.

Resumir

Esta estrategia se basa en el concepto de resistencia de soporte histórico y ofrece precios de referencia a varios niveles. La estrategia es simple y directa, adecuada para mantener posiciones medias y largas y obtener ganancias.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )