Esta estrategia se basa en una idea de negociación clásica a corto plazo - ir corto después de velas alcistas consecutivas y ir largo después de velas bajistas consecutivas. Específicamente, esta estrategia detecta la altura del cuerpo y el color de las velas para determinar la ocurrencia de velas consecutivas con el mismo color, y luego utiliza el indicador RVI para determinar si debe tener lugar una reversión. En general, esta es una estrategia que combina patrones de velas y el indicador RVI para implementar el comercio de reversión a corto plazo.
La lógica central de esta estrategia incluye:
Compruebe si la altura del cuerpo del candelabro excede el umbral mínimo para filtrar los movimientos alcistas / bajistas insignificantes.
Determine si los dos candelabros anteriores tienen el mismo color, lo que puede indicar una posible inversión a corto plazo.
Si el candelero actual tiene un color diferente al de los dos anteriores, se genera una señal de trading. es decir, ir largo después de dos candeleros bajistas y uno alcista, ir corto después de dos candeleros alcistas y uno bajista.
Después de entrar en una operación, los cruces de la línea RVI y la línea de señal se utilizan para determinar las posiciones de salida.
En resumen, esta estrategia combina patrones de velas y el indicador RVI para crear un sistema de reversión media a corto plazo, capturando reversiones rentables de comportamientos anormales de precios a corto plazo.
Las principales ventajas de esta estrategia incluyen:
Las velas consecutivas del mismo color a menudo indican anomalías listas para reversiones.
El indicador RVI ayuda a las determinaciones de inversión, complementando los patrones de velas para señales más estables.
Frecuencia de negociación relativamente alta para el comercio a corto plazo.
Los riesgos controlables derivados del tamaño fijo de las operaciones y de la toma de pérdidas/ganancias.
Lógica simple y clara que es fácil de entender e implementar para el comercio en vivo.
Algunos riesgos a tener en cuenta:
Las inversiones a corto plazo no están garantizadas durante tendencias fuertes cuando las señales pueden fallar.
El RVI puede generar señales incorrectas en condiciones especiales de mercado.
La configuración inadecuada del stop loss podría dar lugar a grandes pérdidas.
Los criterios de velas consecutivas son demasiado rígidos. Considere optimizar el porcentaje requerido de velas del mismo color dentro de N períodos.
El tamaño fijo de la operación no puede controlar los riesgos generales de la posición.
Algunas maneras de optimizar aún más la estrategia:
Optimice la lógica de las velas consecutivas utilizando estadísticas en lugar de períodos fijos.
Optimice los parámetros de RVI para encontrar las mejores combinaciones.
Se añadirá el stop loss de seguimiento basado en la volatilidad del mercado.
Añadir el tamaño de posición basado en el uso de la cuenta.
Añadir más filtros como canales, tendencias para mejorar la estabilidad del sistema.
Ajuste de parámetros para diferentes productos.
Aprendizaje automático en datos históricos para optimizar dinámicamente los parámetros.
En resumen, esta es una estrategia típica de reversión media a corto plazo basada en patrones de velas y RVI. Tiene ventajas pero también riesgos. Optimizaciones adicionales en parámetros y robustez pueden mejorar su estabilidad y rentabilidad. Sin embargo, ninguna estrategia elimina las pérdidas por completo. Los operadores deben mantenerse disciplinados en la gestión de riesgos.
/*backtest start: 2022-10-07 00:00:00 end: 2023-10-07 00:00:00 period: 3d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules. // //This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€ //LOGIC: //- LONG ENTRY when previous candle is bear //- LONG EXIT: RVI > signal line //- SHORT ENTRY when previous candle is bull //- SHORT EXIT: RVI < signal line // //NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script // //Take profit = no //Stop loss = no // strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR) //INPUTS src = input(close, "source") min_body_height = input(42, "Minimum body height", type=input.float) //bars_back=input(2, "Consecutive bars of same color") rvi_period = input(55, "RVI period") //CALCULATIONS_____________________________ //candle color body_height = abs(open - close) / syminfo.mintick body_color = open > close ? color.red : color.green //da migliorare for i=0 to bars_back-1 //RVI -------- thanks to hecate p = rvi_period CO = close - open HL = high - low value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6 value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6 num = sum(value1, p) denom = sum(value2, p) RVI = denom != 0 ? num / denom : 0 RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6 plot(RVI, color=color.green, style=plot.style_line, linewidth=1) plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1) //---------------------------------- longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and body_height[0] >= min_body_height and body_color[0] == color.red and RVIsig > RVI exitLong = RVI > RVIsig shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and body_height[0] >= min_body_height and body_color[0] == color.green and RVIsig < RVI exitShort = RVI < RVIsig if longCondition and strategy.opentrades == 0 strategy.entry("Long", strategy.long) strategy.close("Long", when=exitLong) if shortCondition and strategy.opentrades == 0 strategy.entry("Short", strategy.short) strategy.close("Short", when=exitShort) // === Backtesting Dates === thanks to Trost testPeriodSwitch = input(false, "Custom Backtesting Dates") testStartYear = input(2011, "Backtest Start Year") testStartMonth = input(10, "Backtest Start Month") testStartDay = input(7, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0) testStopYear = input(2018, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testStopHour = input(23, "Backtest Stop Hour") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false testPeriod_1 = testPeriod() isPeriod = testPeriodSwitch == true ? testPeriod_1 : true // === /END if not isPeriod strategy.cancel_all() strategy.close_all()