
Esta estrategia se optimiza sobre la base de la estrategia tradicional de inversión de pilares, principalmente mediante el cálculo de ATR y la configuración de un factor de filtración de ATR para filtrar algunos pilares sin sentido y solo negociar aquellos que son realmente importantes.
La lógica central de esta estrategia es calcular los puntos de apoyo altos y bajos importantes. Los pasos principales para calcular los puntos de apoyo altos son:
La lógica para calcular el punto más bajo es similar.
Después de obtener un punto de apoyo importante, haga un descuento cuando el precio rompa el punto de apoyo importante; cuando el precio rompa el punto de apoyo importante, haga más.
Las principales ventajas de esta estrategia son:
Los principales riesgos de esta estrategia son:
Para controlar los riesgos mencionados, se puede optimizar en los siguientes aspectos:
La estrategia también puede ser optimizada en las siguientes direcciones:
En combinación con otros indicadores para determinar el estado de la tendencia del mercado, se puede considerar la inclusión de indicadores como MACD, KDJ, etc.
Se añaden algoritmos de aprendizaje automático para optimizar los parámetros. Se puede utilizar un algoritmo genético o un bosque aleatorio para encontrar la combinación óptima de parámetros.
Añadir datos cuantitativos para entrenar y encontrar el mejor rango de ATR. Añadir datos históricos puede mejorar la precisión de la selección de parámetros.
Puede considerarse la combinación con otras estrategias, combinando las ventajas de diferentes tipos de estrategias. Por ejemplo, la combinación con estrategias de seguimiento de tendencias, inversiones en el balanceo y tendencia en la tendencia.
Esta estrategia de inversión de puntos importantes puede aumentar el nivel de rentabilidad de la estrategia mediante el cálculo de ATR y la configuración de un factor de filtración para filtrar las fluctuaciones insignificantes. La inversión de operaciones solo en puntos importantes también aumenta la dificultad de optimizar ciertos parámetros.
/*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"}]
*/
//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)
// Inputs
leftBars = input(4, title = 'PP Left Bars')
rightBars = input(2, title = 'PP Right Bars')
atr_length = input(14, title = 'ATR Length')
atr_mult = input(0.1, title = 'ATR Mult')
// Pivot High Significant Function
pivotHighSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (high[right] < high[right+i] + atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (high[right] < high[i] + atr * atr_mult)
pp_ok := false
pp_ok ? high[right] : na
// Pivot Low Significant Function
pivotLowSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (low[right] > low[right+i] - atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (low[right] > low[i] - atr * atr_mult)
pp_ok := false
pp_ok ? low[right] : na
swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)