
A estratégia de Turtle de dois canais é uma estratégia de ruptura que utiliza o indicador de canal de Donchian para construir um sinal de negociação. Esta estratégia cria ao mesmo tempo um canal rápido e um canal lento, o canal rápido é usado para definir o preço de parada e o canal lento para gerar um sinal de posição aberta e de posição.
A lógica central da estratégia de dois canais para romper a tartaruga baseia-se no indicador de canais de Donchian. Os canais de Donchian são calculados a partir de preços máximos e mínimos, contendo o caminho superior, o caminho inferior e o caminho médio. A estratégia cria simultaneamente canais rápidos e canais lentos, com parâmetros definidos pelo usuário, com um ciclo de canais lentos padrão de 50 linhas K e um ciclo de canais rápidos de 20 linhas K.
Os traços superiores e inferiores do canal lento (linha azul) são usados para gerar sinais de negociação. Quando o preço quebra o traço superior, faça mais; Quando o preço cai para o traço inferior, feche. O traço médio do canal rápido (linha vermelha) é usado para parar.
Assim, o canal lento é responsável pela geração de sinais, o canal rápido é responsável pelo stop loss, o uso de dupla canalização garante a estabilidade do sinal de negociação e controla o risco. A cor de fundo indica a direção da posição atual, o verde é o multi-cabeça e o vermelho é o branco.
Além disso, a estratégia também estabelece o grau de risco e a gestão de posições. O grau de risco é assumido por defeito em 2%, e as posições são calculadas de acordo com o grau de risco e a taxa de flutuação do canal. Isso permite controlar efetivamente cada risco e aumentar a posição gradualmente.
A estratégia de Turtle, de dois canais, tem as seguintes vantagens:
Forte capacidade de acompanhamento de tendências. Utiliza o canal de Donchian para julgar tendências e é capaz de capturar efetivamente as tendências de linha média e longa. O design de dois canais permite que a estratégia siga apenas os casos de tendências mais fortes.
Retirada e controle de risco. O corredor médio do corredor rápido faz o stop loss, do corredor superior ao corredor médio e do corredor inferior ao corredor médio é a área de risco, o que garante que cada perda seja controlada. A estratégia também define o grau de risco, limitando diretamente a perda máxima da conta.
O sinal de negociação é estável. Os parâmetros do canal lento são grandes e a formação do canal leva mais tempo, evitando transações frequentes. O canal rápido, por sua vez, pode ser usado como um stop loss para capturar ajustes de curto prazo.
A estratégia de usar a volatilidade do canal Donchian para calcular o tamanho da posição e controlar o risco. O aumento gradual da posição também equilibra as posições das partes com mais espaço.
Os indicadores visuais são intuitivos. Os dois canais, a linha de parada e o contexto da posição são claramente traçados, a lógica de negociação é visível. Ao mesmo tempo, os indicadores-chave, como a retirada máxima e a perda máxima, são exibidos.
A estratégia de Turtle, de dois canais, também tem riscos:
A estratégia da tartaruga só abre uma posição quando o canal é quebrado, e não pode usar uma situação mais precisa para aumentar a posição. Isso pode ser melhorado pela otimização.
Os pontos de parada são facilmente rastreados. O ponto de parada da estratégia Turtle é o meio-campo do canal rápido fixo. Em mercados ativos, isso pode ser encaixado no ponto de parada. Isso requer ajustes dinâmicos dos parâmetros do meio-campo.
Os parâmetros de dupla canalização precisam ser ajustados. Os parâmetros de canalização precisam ser ajustados para gerar um sinal razoavelmente estável. Os parâmetros fixos atuais não podem se adaptar às mudanças do mercado e precisam ser introduzidos.
Não é possível usar informações sobre o mercado noturno e o mercado de pré-venda. A estratégia atual apenas julga a tendência com base no mercado real, não é possível usar o mercado antes e depois do mercado para orientar as decisões de negociação. Isso pode ser melhorado com o ajuste de dados.
A estratégia de dois canais para a invasão da Turtle tem como principais melhorias:
A posição pode ser ajustada de acordo com a distância entre o preço e o canal, em vez de apenas fazer um extra-vazio.
Inteligencialização da estratégia de stop loss. Transformar o trajeto de stop loss fixo em um trajeto de stop loss dinâmico, evitando que o ponto de stop loss seja rastreado.
Parâmetros de corredor auto-adaptação e otimização. Permite que os parâmetros de corredor sejam ajustados automaticamente de acordo com as condições do mercado, em vez de definir manualmente valores fixos.
Aumentar o julgamento de mercado antes e depois da liquidação. Em julgamentos estratégicos, não se deve referir apenas ao preço de liquidação, mas também deve considerar os preços antes e depois da liquidação, para obter uma situação de mercado mais abrangente.
Combinação de várias ações ou índices de negociação. Aplicar a estratégia para várias ações, com arbitragem configurável entre diferentes ações e índices, obtendo alfa.
A estratégia de Turtle de ruptura de dois canais é, em geral, uma estratégia de acompanhamento de tendências estável, eficiente e com controle de risco. A estratégia usa simultaneamente o canal rápido e o canal lento, garantindo a estabilidade do sinal de negociação e gerenciando o risco. Além disso, a cor de fundo, a retirada máxima e o gerenciamento da posição tornam a estratégia fácil de gerenciar e otimizar.
/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle 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, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow = input(50, minval = 1, title = "Slow channel (for entries)")
showof = input(true, defval = true, title = "Show offset")
showll = input(true, defval = true, title = "Show lines")
showdd = input(true, defval = true, title = "Show label (drawdown)")
showbg = input(true, defval = true, title = "Show background")
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")
//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2
//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)
//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")
//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)
//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true
//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort
//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")
if showdd
//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]))
//Max loss size
equity := strategy.position_size == 0 ? strategy.equity : equity[1]
loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
maxloss := min(nz(maxloss[1]), loss)
//Label
min := round(min * 100) / 100
maxloss := round(maxloss * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)
// la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)