Esta estrategia es un sistema de negociación avanzado que combina paradas dinámicas, ratios de riesgo-recompensa y salidas extremas de RSI. Identifica patrones específicos (patrones de barra paralela y patrones de barra de pin) para la entrada en el comercio, mientras utiliza ATR y mínimos recientes para la colocación dinámica de stop loss, y determina objetivos de ganancia basados en ratios de riesgo-recompensa preseleccionados. El sistema también incorpora un mecanismo de salida de mercado sobrecomprado / sobrevendido basado en RSI.
La lógica central incluye varios componentes clave: Las señales de entrada se basan en dos patrones: patrón de barras paralelas (barra alcista grande que sigue una barra bajista grande) y patrón de barras de doble pin. 2. Paradas dinámicas de seguimiento utilizando el multiplicador ATR ajustado a mínimos recientes de N-bar, asegurando que los niveles de parada de pérdida se adapten a la volatilidad del mercado. 3. Objetivos de ganancia establecidos sobre la base de ratios fijos de riesgo-recompensación, calculados utilizando el valor de riesgo ® para cada operación. 4. Tamaño de la posición calculado dinámicamente en función del importe del riesgo fijo y del valor del riesgo por operación. 5. El mecanismo de salida extrema del RSI desencadena el cierre de la posición en los extremos del mercado.
Esta es una estrategia de trading bien diseñada que combina múltiples conceptos de análisis técnico maduros para construir un sistema de trading completo. Las fortalezas de la estrategia se encuentran en su sistema integral de gestión de riesgos y reglas de trading flexibles, mientras que se necesita prestar atención a la optimización de parámetros y adaptabilidad del mercado. A través de las direcciones de optimización sugeridas, hay espacio para una mayor mejora de la estrategia.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 2h basePeriod: 2h 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/ // © ZenAndTheArtOfTrading | www.TheArtOfTrading.com // @version=5 strategy("Trailing stop 1", overlay=true) // Get user input int BAR_LOOKBACK = input.int(10, "Bar Lookback") int ATR_LENGTH = input.int(14, "ATR Length") float ATR_MULTIPLIER = input.float(1.0, "ATR Multiplier") rr = input.float(title="Risk:Reward", defval=3) // Basic definition var float shares=na risk = 1000 var float R=na E = strategy.position_avg_price // Input option to choose long, short, or both side = input.string("Long", title="Side", options=["Long", "Short", "Both"]) // RSI exit option RSIexit = input.string("Yes", title="Exit at RSI extreme?", options=["Yes", "No"]) RSIup = input(75) RSIdown = input(25) // Get indicator values float atrValue = ta.atr(ATR_LENGTH) // Calculate stop loss values var float trailingStopLoss = na float longStop = ta.lowest(low, BAR_LOOKBACK) - (atrValue * ATR_MULTIPLIER) float shortStop = ta.highest(high, BAR_LOOKBACK) + (atrValue * ATR_MULTIPLIER) // Check if we can take trades bool canTakeTrades = not na(atrValue) bgcolor(canTakeTrades ? na : color.red) //Long pattern //Two pin bar onepinbar = (math.min(close,open)-low)/(high-low)>0.6 and math.min(close,open)-low>ta.sma(high-low,14) twopinbar = onepinbar and onepinbar[1] notatbottom = low>ta.lowest(low[1],10) // Parallel bigred = (open-close)/(high-low)>0.8 and high-low>ta.sma(high-low,14) biggreen = (close-open)/(high-low)>0.8 and high-low>ta.sma(high-low,14) parallel = bigred[1] and biggreen atbottom = low==ta.lowest(low,10) // Enter long trades (replace this entry condition) longCondition = parallel if (longCondition and canTakeTrades and strategy.position_size == 0 and (side == "Long" or side == "Both")) R:= close-longStop shares:= risk/R strategy.entry("Long", strategy.long,qty=shares) // Enter short trades (replace this entry condition) shortCondition = parallel if (shortCondition and canTakeTrades and strategy.position_size == 0 and (side == "Short" or side == "Both")) R:= shortStop - close shares:= risk/R strategy.entry("Short", strategy.short,qty=shares) // Update trailing stop if (strategy.position_size > 0) if (na(trailingStopLoss) or longStop > trailingStopLoss) trailingStopLoss := longStop else if (strategy.position_size < 0) if (na(trailingStopLoss) or shortStop < trailingStopLoss) trailingStopLoss := shortStop else trailingStopLoss := na // Exit trades with trailing stop strategy.exit("Long Exit", "Long", stop=trailingStopLoss, limit = E + rr*R ) strategy.exit("Short Exit", "Short", stop=trailingStopLoss, limit = E - rr*R) //Close trades at RSI extreme if ta.rsi(high,14)>RSIup and RSIexit == "Yes" strategy.close("Long") if ta.rsi(low,14)<RSIdown and RSIexit == "Yes" strategy.close("Short") // Draw stop loss plot(trailingStopLoss, "Stop Loss", color.red, 1, plot.style_linebr)