Esta estratégia baseia-se principalmente no princípio de ruptura da tendência, combinado com o método de ruptura do canal, usando trilhos duplos rápidos e lentos para romper para determinar a direção da tendência. A estratégia tem proteção dupla de entradas de ruptura e saídas de retirada ao mesmo tempo, o que pode lidar efetivamente com mudanças repentinas no mercado. A maior vantagem da estratégia é que pode monitorar a retirada da conta em tempo real. Quando a retirada excede uma certa porcentagem, reduzirá ativamente o tamanho da posição. Isso permite que a estratégia controle efetivamente o risco de mercado e a resistência ao risco da conta.
Linhas duplas rápidas e lentas: linhas rápidas e lentas são usadas para construir canais, respectivamente. A linha rápida responde mais rápido e a linha lenta é mais suave. Determine a direção da tendência combinando avanços de trilhos duplos.
Entradas de breakout: vá longo quando o preço atravessa o canal ascendente e vá curto quando atravessa o canal descendente.
Saídas de retirada: Monitorização em tempo real da retirada máxima. Uma vez atingido o ponto de saída de retirada, ele irá ativamente parar a perda para fechar posições. O ponto de saída de retirada pode ser ajustado de acordo com as condições do mercado.
O número de posições é ajustado em tempo real com base no património da conta para evitar o risco de mercado.
Canal de trilho duplo + entradas de ruptura, julgamento de tendência mais preciso.
O mecanismo de stop loss e take profit controla efetivamente a perda única.
Monitorização em tempo real da utilização da conta e ajustamento ativo do tamanho da posição para reduzir o risco de mercado.
O tamanho da posição está ligado ao património líquido da conta com uma forte resistência ao risco para lidar com mudanças repentinas do mercado.
O controlo da retirada pode falhar em mercados voláteis, levando a perdas maiores.
Vários sinais de avanço inválidos podem ocorrer quando a linha rápida entra na zona neutra.
A linha lenta é muito suave para capturar tendências rápidas de reversão no tempo.
Existe um risco de bloqueio com posições longas e curtas misturadas.
Estabelecer uma tolerância de retirada mais elevada para os mercados voláteis para evitar o excesso de stop loss.
Adicionar filtro de zona neutra para evitar sinais inválidos.
Otimizar os parâmetros do canal lento para melhorar a velocidade de resposta aos mercados rápidos.
Adicionar regras de classificação da ordem de abertura para evitar o bloqueio com posições bidirecionais.
Em geral, esta é uma estratégia eficaz adequada para a negociação de tendências de médio e longo prazo. A maior vantagem da estratégia é o monitoramento de drawdown em tempo real e o ajuste dinâmico das posições. Isso permite que a estratégia ajuste automaticamente o tamanho da posição com forte adaptabilidade ao mercado. Quando há uma mudança acentuada no mercado ou flutuação de preços, a estratégia pode reduzir automaticamente o tamanho da posição para evitar efetivamente a expansão da perda. Isso é difícil para muitas estratégias tradicionais. Em geral, a idéia desta estratégia é inovadora com forte praticidade. Vale a pena explorar e otimizar para aplicação.
//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)