
Este artículo describe una estrategia de trading cuantitativa que combina un indicador de ciclo parobélico con un indicador de bandas de Brin para establecer una estrategia de stop loss móvil. Esta estrategia calcula la línea de ciclo parobélico para determinar la dirección de la tendencia del mercado, y luego utiliza la dinámica de las bandas de Brin para establecer un stop loss, lo que permite un stop loss móvil para bloquear los beneficios.
En primer lugar, la estrategia utiliza el indicador parobel para determinar la tendencia actual del mercado. Cuando el precio de cierre de hoy cruza la línea de ciclo parobel de ayer, se puede hacer más cuando se considera que el mercado se invierte en pesimista; Cuando el precio de cierre de hoy cruza la línea de ciclo de ayer, el mercado baja y se puede hacer un descuento.
En segundo lugar, la estrategia se combina con el indicador de la banda de Brin para establecer un punto de parada dinámico. La línea superior de la banda de Brin se puede considerar como una zona de sobreventa y la inferior como una zona de sobreventa.
A través de los principios mencionados anteriormente, la estrategia logra determinar la dirección del mercado al mismo tiempo que establece un mecanismo de stop loss dinámico para rastrear las ganancias. Esto le permite capturar parte de los altibajos en las grandes tendencias y, al mismo tiempo, bloquear las ganancias para evitar el riesgo mediante el stop loss.
La estrategia utiliza el indicador de las bandas de Brin como línea de pérdida, lo que permite que la línea de pérdida se mueva con la fluctuación de los precios. Esto le permite bloquear más ganancias en situaciones de mercado más grandes. Además, la estrategia aumenta el indicador de las bandas de Brin para determinar las zonas de sobreventa y sobrecompra, en comparación con el uso de una sola línea de ciclo de Parobel.
El principal riesgo de esta estrategia reside en que la tendencia de los parobélicos no es fuerte. En situaciones de crisis, los precios pueden subir y bajar varias veces a través de la línea de parobélicos, lo que hace que la estrategia genere transacciones frecuentes pero poco rentables. En este caso, los gastos de transacción y los costos de deslizamiento pueden representar una gran proporción, lo que reduce la rentabilidad de la estrategia.
Para hacer frente a los riesgos mencionados anteriormente, se puede considerar la posibilidad de ajustar los parámetros, aumentar la variabilidad de la línea periódica de Parobel, reducir la probabilidad de error; o en combinación con otros indicadores para filtrar el momento de entrada en el mercado. Por ejemplo, se puede agregar un indicador de oscilación para juzgar si la situación es tendencial o oscilante, para reducir las transacciones innecesarias.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros del indicador de Parobel, ajuste de la velocidad de cambio de los parámetros del indicador y reducción de la probabilidad de error
Añadir filtros de otros indicadores técnicos, como la adición de MACD, KD y otros para determinar el tipo de transacción, evitando el arbitraje en mercados convulsionados
Optimización de los parámetros de la banda de Brin, ajuste de los parámetros de ancho de banda para que la banda de Brin esté más cerca de los cambios en los precios
Aumentar los indicadores de capacidad de volumen, como el volumen de transacciones, el volumen de posiciones y otros criterios auxiliares para evitar falsas rupturas
Información básica sobre las acciones para evitar problemas que afecten a los resultados de la estrategia de tenencia de acciones
Esta estrategia utiliza parobel para determinar la dirección y la fuerza de la tendencia del mercado, y luego utiliza la banda de Brin para establecer la estrategia de pérdida como punto de parada móvil. La combinación de seguimiento de tendencias y control de riesgo se logra. En comparación con la estrategia de parada fija tradicional, esta estrategia puede obtener mayores ganancias en situaciones de mercado más grandes.
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © maxencetajet
//@version=5
strategy("HA_RSI", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=0.5, slippage=25)
closeHA = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
group="Backtest Time Period")
backtestStartDate = input(timestamp("5 June 2022"),
title="Start Date", group="Backtest Time Period",
tooltip="This start date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("5 July 2022"),
title="End Date", group="Backtest Time Period",
tooltip="This end date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
inTradeWindow = true
swingHighV = input.int(10, title="Swing High", group="number of past candles")
swingLowV = input.int(10, title="Swing Low", group="number of past candles")
emaV = input.int(200, title="Ema Period", group="EMA")
rsiV = input.int(14, title="RSI Period", group="RSI")
start = input(0.02, group="Parabolic SAR")
increment = input(0.02, group="Parabolic SAR")
maximum = input(0.2, "Max Value", group="Parabolic SAR")
ema = ta.ema(closeHA, emaV)
rsi = ta.rsi(closeHA, rsiV)
SAR = ta.sar(start, increment, maximum)
myColor = SAR < low?color.green:color.red
longcondition = closeHA > ema and rsi > 50 and closeHA[1] > SAR and closeHA[1] < SAR[1]
shortcondition = closeHA < ema and rsi < 50 and closeHA[1] < SAR and closeHA[1] > SAR[1]
float risk_long = na
float risk_short = na
float stopLoss = na
float entry_price = na
float takeProfit = na
risk_long := risk_long[1]
risk_short := risk_short[1]
swingHigh = ta.highest(closeHA, swingHighV)
swingLow = ta.lowest(closeHA, swingLowV)
if strategy.position_size == 0 and longcondition and inTradeWindow
risk_long := (close - swingLow) / close
strategy.entry("long", strategy.long, comment="Buy")
if strategy.position_size == 0 and shortcondition and inTradeWindow
risk_short := (swingHigh - close) / close
strategy.entry("short", strategy.short, comment="Sell")
if strategy.position_size > 0
stopLoss := strategy.position_avg_price * (1 - risk_long)
entry_price := strategy.position_avg_price
strategy.exit("long exit", "long", stop = stopLoss)
if strategy.position_size < 0
stopLoss := strategy.position_avg_price * (1 + risk_short)
entry_price := strategy.position_avg_price
strategy.exit("short exit", "short", stop = stopLoss)
if closeHA[1] < SAR and close > strategy.position_avg_price
strategy.close("long", comment="Exit Long")
if closeHA[1] > SAR and close < strategy.position_avg_price
strategy.close("short", comment="Exit Short")
p_ep = plot(entry_price, color=color.new(color.white, 0), linewidth=2, style=plot.style_linebr, title='entry price')
p_sl = plot(stopLoss, color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr, title='stopLoss')
fill(p_sl, p_ep, color.new(color.red, transp=85))
plot(SAR, "ParabolicSAR", style=plot.style_circles, color=myColor, linewidth=1)
plot(ema, color=color.white, linewidth=2, title="EMA")