- Cuadrado
- Estrategia de reversión del eje con salida del eje
Estrategia de reversión del eje con salida del eje
El autor:
¿ Qué pasa?, Fecha: 2024-04-30 15:57:54
Las etiquetas:
Resumen general
Esta estrategia utiliza Puntos Pivot para identificar los puntos de inversión del mercado y tomar decisiones comerciales basadas en ellos. Cuando se forma un Pivot High dentro de las últimas 4 velas a la izquierda, la estrategia entra en una posición larga; cuando se forma un Pivot Low dentro de las últimas 4 velas a la izquierda, la estrategia entra en una posición corta. El stop loss se establece en un tamaño de tick (syminfo.mintick) por encima o por debajo del precio de entrada. Hay dos condiciones de salida: 1) salida cuando aparezca el siguiente punto de giro opuesto; 2) salida cuando la pérdida flotante alcance el 30%.
Principios de estrategia
- Utilice las funciones ta.pivothigh (() y ta.pivotlow (()) para calcular el Pivot High (swh) y el Pivot Low (swl) dentro del rango de 4 velas a la izquierda y 2 velas a la derecha.
- Cuando exista un máximo de eje (swh_segundo), actualizar el precio más alto (hprice), y cuando el máximo actual sea mayor que el máximo anterior, habilitar la condición de entrada larga (le).
- Cuando se cumpla la condición de entrada larga (le), introduzca una posición larga a un tamaño de tick (syminfo.mintick) por encima del Pivot High.
- Del mismo modo, cuando existe un Pivot Low (swl_cond), actualizar el precio más bajo (lprice), y cuando el mínimo actual es inferior al mínimo anterior, habilitar la condición de entrada corta (se).
- Cuando se cumpla la condición de entrada corta (se), introduzca una posición corta a un tamaño de tick (syminfo.mintick) por debajo del Pivot Low.
- En la función exitAtNextPivot(), si se mantiene una posición larga, establecer el stop loss en un tamaño de tick por debajo del siguiente Pivot Low; si se mantiene una posición corta, establecer el stop loss en un tamaño de tick por encima del siguiente Pivot High.
- En la función exitIfProfitLessThirtyPercent(), calcular el porcentaje de ganancias y pérdidas para posiciones largas y cortas y cerrar la posición si la pérdida supera el 30%.
Ventajas estratégicas
- Los Pivot Points pueden reflejar bien los niveles de soporte y resistencia en el mercado, y son un indicador de análisis técnico de uso común con cierto reconocimiento del mercado.
- Entrar en la ruptura de los Puntos de Pivot puede capturar oportunidades de inversión del mercado.
- Se establecen dos condiciones de salida, una basada en el punto de giro opuesto siguiente para la salida técnica, y la otra basada en el porcentaje de pérdida para la salida de control de riesgos, que puede controlar la reducción de la estrategia hasta cierto punto.
Riesgos estratégicos
- El indicador Pivot Point en sí tiene cierto retraso y problemas frecuentes de señal, y puede no funcionar bien en un mercado fluctuante.
- Los parámetros de cálculo fijos de 4 velas y 2 velas pueden no ser aplicables a todas las condiciones del mercado, al carecer de cierta adaptabilidad y flexibilidad.
- El stop loss se establece cerca del precio de entrada (un tamaño de tick), que puede ser desechado durante las violentas fluctuaciones del mercado.
- La configuración de parada de pérdida del 30% puede ser demasiado flexible, con una gran amplitud de reducción.
Direcciones para la optimización de la estrategia
- Intente utilizar otros tipos de indicadores de Pivot Point, como los Pivot Points de factores, los Pivot Points ponderados, etc., para mejorar la sensibilidad y la puntualidad de los indicadores.
- El número de velas izquierda y derecha se puede utilizar como parámetros de entrada, y los valores óptimos se pueden encontrar a través de la optimización de parámetros.
- La posición de stop loss se puede optimizar a ATR o stop loss porcentual. La primera puede ajustarse adaptativamente con los cambios en la volatilidad del mercado, mientras que la segunda puede limitar los riesgos dentro de un rango controlable.
- Además, se puede añadir una condición de parada de porcentaje de ganancia para gestionar tanto las ganancias como las pérdidas flotantes.
- Otras condiciones de filtrado, como el filtrado de tendencia y el filtrado de volatilidad, pueden superponerse sobre la base de la ruptura del punto pivot para mejorar la calidad de la señal.
Resumen de las actividades
Esta estrategia construye un sistema de negociación bidireccional basado en el indicador de Pivot Point, capturando oportunidades de reversión del mercado al ir largo en Pivot Highs y corto en Pivot Lows. La estrategia tiene cierta base teórica y valor práctico, pero debido a las limitaciones del indicador de Pivot Point en sí, la estrategia puede enfrentar algunos riesgos y desafíos en el funcionamiento real. Al optimizar el tipo de indicador de Pivot Point, los parámetros, las condiciones de filtrado, stop loss y toma de ganancias, etc., se espera mejorar aún más la robustez y rentabilidad de la estrategia.
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)
leftBars = input(4)
rightBars = input(2)
var float dailyEquity = na
// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
dailyEquity := 10000
// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)
// Define long entry condition
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])
// Enter long position if long entry condition is met
if (le)
strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)
// Define short entry condition
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])
// Enter short position if short entry condition is met
if (se)
strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)
// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
if strategy.opentrades > 0
if strategy.position_size > 0
// Exiting long position at next pivot low
if not na(swl)
strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
else
// Exiting short position at next pivot high
if not na(swh)
strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)
// Call exitAtNextPivot function
exitAtNextPivot()
// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
if strategy.opentrades > 0
if strategy.position_size > 0
// Calculate profit percentage for long position
profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
// Exiting long position if profit is less than 30%
if profit_percentage_long < -30
strategy.close("PivRevLE")
else
// Calculate profit percentage for short position
profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
// Exiting short position if profit is less than 30%
if profit_percentage_short < -30
strategy.close("PivRevSE")
// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()
Más.