
La estrategia se basa principalmente en el principio de ruptura de tendencia, combinado con el método de ruptura de canal, y utiliza una ruptura de doble vía de línea rápida y lenta para determinar la dirección de la tendencia. La estrategia también tiene entradas de ruptura y salidas de retirada.
Dos vías de línea rápida y lenta: se utilizan las vías de línea rápida y lenta para construir el canal. La velocidad de respuesta de la línea rápida es más rápida y la de la línea lenta es más suave.
Entradas de ruptura: cuando el precio hace más cuando se rompe el canal ascendente, se deja en blanco cuando se rompe el canal descendente. La adopción de un solo método de parada de pérdidas reduce el riesgo.
Retirada exits: Monitoreo en tiempo real de la máxima retirada. Una vez que se alcanza el punto de salida de retiro se detiene activamente la posición de paridad. El punto de salida de retiro se puede ajustar según la situación del mercado.
Adaptación del tamaño de las posiciones: el número de posiciones se ajusta en tiempo real según los intereses de la cuenta, evitando el riesgo del mercado. Cuanto mayor sea la retirada de la cuenta, menor será la posición. La capacidad de resistencia al riesgo es mayor.
El sistema de dos vías y las entradas de ruptura permiten una mayor precisión en la determinación de las tendencias.
El mecanismo de suspensión de pérdidas, que controla eficazmente las pérdidas individuales.
En la actualidad, el Banco Central de China (BCC) ha anunciado la apertura de un nuevo banco central, el Banco Central de China (BCC), que se convertirá en el banco central más grande del mundo.
El tamaño de las posiciones está vinculado a los intereses de las cuentas, es resistente al riesgo y puede responder a las fluctuaciones en el mercado.
En caso de una gran conmoción, los controles de retirada pueden fallar y aumentar las pérdidas.
Cuando la línea rápida entra en la zona neutral, puede haber varias señales de ruptura no válidas.
La línea es demasiado suave para capturar el giro rápido.
Cuando se utiliza una combinación de varios espacios, el almacenamiento bidireccional presenta un riesgo de encierro.
En caso de una gran conmoción, se puede configurar una tolerancia de retirada más alta para evitar el exceso de pérdidas.
Aumentar el filtro de la zona neutra para evitar que la zona neutra sea una señal no válida.
Optimización de los parámetros de los canales de línea lenta para mejorar la velocidad de respuesta a las situaciones rápidas.
Se añaden reglas de ordenamiento de la bodega para evitar el uso de celdas de almacenamiento de doble sentido.
La estrategia en su conjunto es una estrategia eficaz para el comercio de tendencias medianas y largas. La mayor ventaja de la estrategia reside en el control de retiro en tiempo real y el ajuste dinámico de la posición. Esto permite que la estrategia ajuste automáticamente el tamaño de la posición y tenga una gran capacidad de adaptación al mercado.
//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)