
Esta estrategia utiliza principalmente los precios más altos, más bajos y los precios de cierre del día de negociación anterior como soporte y resistencia del día, y hace más cuando se rompe el nivel de resistencia, y hace un vacío cuando se vuelve a probar el soporte, es una estrategia de ruptura típica.
El código primero define una función para calcular el nivel de resistencia de soporte, calculateSupportResistance, que extrae el precio más alto, el precio más bajo y el precio de cierre del día de negociación anterior como el nivel de resistencia de soporte del día.
Luego se llama a esta función en la lógica principal para obtener los tres bits de precio y el gráfico se muestra.
En la lógica de retracción, si el precio de cierre es inferior al mínimo del día anterior y el precio actual es superior a ese mínimo constituye una ruptura, se hace más; si el precio de cierre es superior al máximo del día anterior y el precio actual es inferior a ese máximo constituye una ruptura, se hace falta.
A través de este modelo de ruptura se puede juzgar la tendencia y generar señales de negociación.
Respuesta:
La estrategia en su conjunto es una estrategia de ruptura típica, simple e intuitiva, que construye la resistencia de soporte del día a través de los datos del día de negociación anterior y analiza la ruptura para hacer más de la brecha. La ventaja es que es fácil de entender la implementación y se puede ver directamente la resistencia de soporte; La desventaja es que existe un riesgo de falsa ruptura y no se puede determinar la continuidad de la tendencia.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)