
La estrategia es una forma sistematizada de aprovechar la volatilidad de los mercados de futuros de petróleo. Se mide el rango de los intervalos promedio de las ganancias, y si el promedio de movimiento rápido es mayor que el promedio de movimiento lento, significa ganancias mayores; si el promedio de movimiento lento es mayor que el promedio de movimiento rápido, significa ganancias menores.
De acuerdo con este principio, se identifican los posibles puntos de entrada largos y los puntos de entrada cortos. La posición solo mantiene un cierto número de barras, este parámetro es controlado por la entrada de la barra Exit after bars.
La estrategia utiliza la ruptura y la regresión para juzgar la tendencia a corto plazo, pertenece a la estrategia de volatilidad. A través de la optimización de la configuración de los parámetros y la adición de la determinación de la volatilidad, se puede reducir la probabilidad de ruptura falsa y aumentar el nivel de ganancias. Al mismo tiempo, el mecanismo de salida rápida de la línea K de raíz fija puede bloquear ciertas ganancias y controlar eficazmente el riesgo.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Celestial_Logic
//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)
highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback = input(50, title = 'Lowest Close lookback' )
exitAfter = input(10, title = 'Exit after bars')
hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)
rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.
longCondition = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if longCondition
strategy.entry(id = 'long', direction = strategy.long)
if shortCondition
strategy.entry(id = 'short', direction = strategy.short)
var int longsince = 0
var int shortsince = 0
if strategy.position_size > 0
longsince += 1
else
longsince := 0
if strategy.position_size < 0
shortsince += 1
else
shortsince := 0
if longsince >= exitAfter
strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
strategy.close(id = 'short', comment = 'short close')