
A estratégia de negociação de tartarugas (Turtle Trading Strategy) é uma estratégia de acompanhamento de tendências para rastrear a dinâmica de rupturas. Foi desenvolvida pelo famoso comerciante Richard Dennis na década de 1980 para verificar se os comerciantes poderiam ser treinados por regras, em vez de inatos. O conceito central da estratégia é rastrear as rupturas de preços e acompanhar as tendências, enquanto se segue rigorosamente os princípios de gerenciamento de fundos para limitar o risco de queda.
A estratégia de negociação de criptomoedas usa dois parâmetros N e N / 2 para construir canais. Concretamente, calcula-se o preço mais alto e o preço mais baixo nos últimos N dias e N / 2 dias, respectivamente.
No código, N correspondeenter_slowN/2 correspondentesenter_fast│ │ o preço mais alto nos últimos 55 dias e 20 dias, respectivamente.slowLefastLPreços mínimoslowest(slowS和fastS)。当价格超过55天通道时做多(enterL2),当价格跌破20天通道时平多仓(exitL1);当价格跌破55天通道时做空(enterS2),当价格超过20天通道时平空仓(exitS1`)。
A maior vantagem da estratégia de negociação de criptomoedas reside no controle do risco. Ao estabelecer posições em caso de ruptura do preço, a parada rápida em caso de retorno do preço pode efetivamente controlar os prejuízos individuais. Ao mesmo tempo, o princípio de gerenciamento de fundos de quota fixa reduz ainda mais o risco.
Outra vantagem é que a seleção de parâmetros é simples. A estratégia inteira tem apenas 4 parâmetros, o que é fácil de entender e ajustar. Os parâmetros em si também são mais estáveis, sem necessidade de otimização frequente.
O maior risco de uma estratégia de negociação de pirâmide é não poder acompanhar a tendência de longo prazo. Quando a tendência começa a se formar, a estratégia pode perder a oportunidade de entrada. Além disso, a estratégia abre posições baixas com frequência em uma tendência de volatilidade, aumentando os custos de negociação e o risco de deslizamento.
Além disso, a configuração de parâmetros fixos também pode variar muito de acordo com a variedade e o ambiente de mercado. Isso requer ajustes de experiência manual.
As estratégias de negociação de criptomoedas podem ser otimizadas de várias maneiras:
Adição de função de adaptação de parâmetros. Permite que os parâmetros de N, N / 2 sejam automaticamente ajustados de acordo com a volatilidade do mercado e a frequência do sinal, para adaptar-se a mais cenários.
Aumentar a regra de julgamento de tendências. Julgar a direção da tendência antes de entrar, evitando a entrada errada de situações de volatilidade de preços.
Combinação de várias estratégias de unidade de período de tempo. Determine a direção da tendência em períodos de tempo mais elevados e entre em níveis mais baixos.
Optimizar a estratégia de stop loss. Trailing Stop Loss ou Time Stop Loss, reduzir a retração.
A estratégia de negociação de mariscos permite o acompanhamento eficaz de tendências por meio de um sistema de ruptura simples. O controle de risco é a maior vantagem da estratégia, graças ao rápido stop loss e ao gerenciamento de fundos fixos. Ao mesmo tempo, também vemos que a estratégia pode ser expandida e otimizada em várias dimensões para se adaptar a mais variedades e ambientes de mercado.
/*backtest
start: 2022-12-24 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)
enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)
fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)
slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)
enterL1 = high > fastL[1]
exitL1 = low <= fastLC[1]
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]
enterL2 = high > slowL[1]
exitL2 = low <= slowLC[1]
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]
if testPeriod()
strategy.entry("fast L", strategy.long, when = enterL1)
if not enterL1
strategy.entry("slow L", strategy.long, when = enterL2)
strategy.close("fast L", when = exitL1)
strategy.close("slow L", when = exitL2)
if shortingEnabled and testPeriod()
strategy.entry("fast S", strategy.short, when = enterS1)
if not enterS2
strategy.entry("slow S", strategy.short, when = enterS2)
strategy.close("fast S", when = exitS1)
strategy.close("slow S", when = exitS2)