Esta estrategia se basa principalmente en el principio de ruptura de tendencia, combinado con el método de ruptura de canal, utilizando doble rieles rápidos y lentos para romper para determinar la dirección de la tendencia. La estrategia tiene doble protección de entradas de ruptura y salidas de retirada al mismo tiempo, lo que puede hacer frente eficazmente a cambios repentinos en el mercado. La mayor ventaja de la estrategia es que puede monitorear la retirada de la cuenta en tiempo real. Cuando la retirada excede un cierto porcentaje, reducirá activamente el tamaño de la posición. Esto permite a la estrategia controlar eficazmente el riesgo de mercado y la resistencia al riesgo de la cuenta.
Las líneas rápidas y lentas se utilizan para construir canales respectivamente. La línea rápida responde más rápido y la línea lenta es más suave. Determine la dirección de la tendencia combinando avances de doble ferrocarril.
Entradas de ruptura: ir largo cuando el precio rompe el canal ascendente, y ir corto cuando rompe el canal descendente.
Salidas de extracción: monitoreo en tiempo real de la extracción máxima. Una vez que se alcanza el punto de salida de extracción, se detendrá activamente la pérdida para cerrar posiciones. El punto de salida de extracción se puede ajustar de acuerdo con las condiciones del mercado.
Tamaño de posición adaptativo: el número de posiciones se ajusta en tiempo real en función de la equidad de la cuenta para evitar el riesgo de mercado. Cuanto menor sea la reducción de la cuenta, menos posiciones se mantendrán. Resistencia al riesgo más fuerte.
Canal de doble carril + entradas de ruptura, juicio de tendencia más preciso.
El mecanismo de stop loss y take profit controla eficazmente las pérdidas individuales.
Seguimiento en tiempo real de la utilización de la cuenta y ajuste activo del tamaño de la posición para reducir el riesgo de mercado.
El tamaño de la posición está vinculado al capital de la cuenta con una fuerte resistencia al riesgo para hacer frente a los cambios repentinos del mercado.
En mercados volátiles, el control de extracción puede fallar, llevando a mayores pérdidas.
Pueden producirse múltiples señales de avance inválidas cuando la línea rápida entra en la zona neutral.
La línea lenta es demasiado suave para capturar tendencias rápidas de reversión en el tiempo.
Existe el riesgo de bloqueo con posiciones largas y cortas mixtas.
Establecer una tolerancia de extracción más alta para los mercados volátiles para evitar el exceso de stop loss.
Añadir filtro de zona neutral para evitar señales no válidas.
Optimizar los parámetros del canal lento para mejorar la velocidad de respuesta a los mercados rápidos.
Añadir reglas de clasificación de orden de apertura para evitar el bloqueo con posiciones bidireccionales.
En general, esta es una estrategia efectiva adecuada para el comercio de tendencias a mediano y largo plazo. La mayor ventaja de la estrategia es el monitoreo de la reducción en tiempo real y el ajuste dinámico de las posiciones. Esto permite a la estrategia ajustar automáticamente el tamaño de la posición con una fuerte adaptabilidad al mercado. Cuando hay un cambio brusco en el mercado o una fluctuación de precios, la estrategia puede reducir automáticamente el tamaño de la posición para evitar efectivamente que la pérdida se expanda. Esto es difícil para muchas estrategias tradicionales. En general, la idea de esta estrategia es innovadora con una gran practicidad. Vale la pena explorar y optimizar para su aplicación.
//Noro //2020 //Original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007, CURTIS FAITH, ISBN: 9780071486644) //@version=4 strategy("Noro's Turtles Strategy", shorttitle = "Turtles str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1) //Settings needlong = input(true, title = "Long") needshort = input(false, title = "Short") sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %") sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %") needfast = input(true, title = "Fast") needslow = input(true, title = "Slow") enter_fast = input(20, minval=1) exit_fast = input(10, minval=1) enter_slow = input(55, minval=1) exit_slow = input(20, minval=1) showof = input(true, title = "Show offset") showll = input(false, title = "Show lines") showlabel = input(true, defval = true, title = "Show label") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Fast fastL = highest(enter_fast) fastLC = lowest(exit_fast) fastS = lowest(enter_fast) fastSC = highest(exit_fast) //Slow slowL = highest(enter_slow) slowLC = lowest(exit_slow) slowS = lowest(enter_slow) slowSC = highest(exit_slow) //Lines offset = showof ? 1 : 0 col1 = showll and needlong and needfast ? color.blue : na col2 = showll and needshort and needfast ? color.red : na col3 = showll and needlong and needslow ? color.blue : na col4 = showll and needshort and needslow ? color.red : na plot(fastL, color = col1, offset = offset) plot(fastLC, color = col1, offset = offset) plot(fastS, color = col2, offset = offset) plot(fastSC, color = col2, offset = offset) plot(slowL, color = col3, offset = offset) plot(slowLC, color = col3, offset = offset) plot(slowS, color = col4, offset = offset) plot(slowSC, color = col4, offset = offset) //Orders truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59) size = strategy.position_size lotlong = 0.0 lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1] lotshort = 0.0 lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1] //Fast strategy.entry("fast L", strategy.long, lotlong, stop = fastL, when = needfast and needlong and strategy.position_size == 0 and truetime) strategy.entry("fast S", strategy.short, lotshort, stop = fastS, when = needfast and needshort and strategy.position_size == 0 and truetime) strategy.exit("fast L", stop = fastLC, when = needfast and needlong and strategy.position_size > 0) strategy.exit("fast S", stop = fastSC, when = needfast and needshort and strategy.position_size < 0) //Slow strategy.entry("slow L", strategy.long, lotlong, stop = slowL, when = needslow and needlong and strategy.position_size == 0 and truetime) strategy.entry("slow S", strategy.short, lotshort, stop = slowS, when = needslow and needshort and strategy.position_size == 0 and truetime) strategy.exit("slow L", stop = slowLC, when = needslow and needlong and strategy.position_size > 0) strategy.exit("slow S", stop = slowSC, when = needslow and needshort and strategy.position_size < 0) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all() strategy.cancel("fast L") strategy.cancel("fast S") strategy.cancel("slow L") strategy.cancel("slow S") if showlabel //Drawdown max = 0.0 max := max(strategy.equity, nz(max[1])) dd = (strategy.equity / max - 1) * 100 min = 100.0 min := min(dd, nz(min[1])) //Label min := round(min * 100) / 100 labeltext = "Drawdown: " + tostring(min) + "%" var label la = na label.delete(la) tc = min > -100 ? color.white : color.red osx = timenow + round(change(time)*10) osy = highest(100)