Estratégia de negociação de longo prazo Alligator Trend Following

SMMA SMA
Data de criação: 2024-05-17 15:40:13 última modificação: 2024-05-17 15:40:13
cópia: 4 Cliques: 718
1
focar em
1617
Seguidores

Estratégia de negociação de longo prazo Alligator Trend Following

Visão geral

A estratégia de negociação de seguimento de tendências de longo prazo do Alligator é uma estratégia de negociação quantitativa baseada no indicador Williams Alligator. A estratégia utiliza uma combinação de médias móveis de diferentes períodos para capturar as principais tendências do mercado e aplica-se a negociações de seguimento de tendências de médio e longo prazo.

Princípio da estratégia

A estratégia de negociação de tendências de longo prazo do Alligator usa três médias móveis de diferentes períodos para construir o indicador do Alligator:

  1. Linha da mandíbula: 13 ciclos SMMA, horizontais para o futuro Linha K de 8 raízes
  2. Linha Teeth: 8 SMMA de ciclo, 5 linhas K horizontais para o futuro
  3. Linha Lips: 5 SMMA de ciclo, 3 linhas K horizontais para o futuro

Quando a abertura do indicador Alligator é para cima, ou seja, a linha Jaw está na parte inferior, a linha Teeth está no meio, a linha Lips está na parte superior, e o preço está acima do indicador Alligator, a estratégia abre mais posições. Esta situação indica que uma onda de tendência ascendente foi confirmada e queremos manter a posição até o fim da tendência.

Quando o preço cai abaixo da linha do Jaw, a estratégia elimina o excedente. Isso garante que não continuaremos a manter posições no mercado de ações em baixa.

Vantagens estratégicas

  1. Apto para negociações de médio e longo prazo: a estratégia é baseada no indicador Alligator, que permite capturar com eficiência as principais tendências do mercado, sendo ideal para negociações de acompanhamento de tendências de médio e longo prazo.
  2. Baixa frequência de negociação: a estratégia só abre uma posição quando a tendência é confirmada, e fecha uma posição quando a tendência termina. A frequência de negociação é relativamente baixa, o que reduz efetivamente os custos de negociação.
  3. Ampla aplicabilidade: A estratégia pode ser aplicada em vários mercados financeiros, como Forex, criptomoedas, etc., com uma grande adaptabilidade e flexibilidade.
  4. Sem necessidade de otimização de parâmetros: a estratégia segue totalmente a tendência do mercado, sem necessidade de otimização de parâmetros, simples e fácil de usar.

Risco estratégico

  1. Risco de deslizamento potencial: em situações de forte volatilidade ou falta de liquidez no mercado, as ordens de negociação podem não ser negociadas ao preço esperado, o que leva a um risco de deslizamento.
  2. Falta de gerenciamento de risco fixo: A estratégia não tem configurações de gerenciamento de risco fixo e precisa ajustar o tamanho da posição de cada transação de acordo com suas próprias preferências de risco.
  3. Possibilidade de perda de oportunidades de curto prazo: algumas oportunidades de negociação de curto prazo podem ser perdidas, uma vez que a estratégia se concentra em capturar tendências de médio e longo prazo.

Direção de otimização da estratégia

  1. Adicionar o módulo de gerenciamento de risco: você pode considerar adicionar algumas medidas de gerenciamento de risco, como stop loss, ajuste de posição dinâmica, etc., para melhor controlar o risco.
  2. Combinação com outros indicadores técnicos: você pode tentar combinar o indicador Alligator com outros indicadores técnicos, como RSI, MACD, etc., para aumentar a precisão e a confiabilidade da estratégia.
  3. Optimizar a configuração dos parâmetros: Embora a estratégia não precise de otimizar os parâmetros, pode-se tentar fazer um teste de retorno em diferentes períodos de tempo e indicadores de negociação para encontrar a melhor combinação de parâmetros.

Resumir

A estratégia de negociação de acompanhamento de tendências de longo prazo do Alligator é uma estratégia de negociação quantitativa simples, fácil de usar e de amplo alcance. Através da captura das principais tendências do mercado com o uso do indicador do Alligator, a estratégia pode obter um retorno estável no médio e longo prazo. Embora haja alguns riscos potenciais na estratégia, a performance e a estabilidade da estratégia podem ser ainda melhoradas pela adição de módulos de gerenciamento de risco, em combinação com outros indicadores técnicos e configuração de parâmetros de otimização.

Código-fonte da estratégia
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//_______ <licence>
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Skyrex

//_______ <version>
//@version=5

//_______ <declaration_statement>
strategy(title = "Alligator Long Term Trend Following Strategy [Skyrex.io]", 
         shorttitle = "Alligator Strategy [Skyrex.io]", 
         overlay = true, 
         format = format.inherit, 
         pyramiding = 1, 
         calc_on_order_fills = false, 
         calc_on_every_tick = true, 
         default_qty_type = strategy.percent_of_equity, 
         default_qty_value = 100, 
         initial_capital = 10000, 
         currency = currency.NONE,  
         commission_type = strategy.commission.percent, 
         commission_value = 0.1,
         slippage = 5)


//_______ <constant_declarations>
var color skyrexGreen = color.new(#2ECD99, 0)
var color skyrexGray = color.new(#F2F2F2, 0)
var color skyrexWhite = color.new(#FFFFFF, 0)

var color barcolor = na


//_______ <inputs>
// Trading bot settings
sourceUuid = input.string(title = "sourceUuid:", defval = "yourBotSourceUuid", group = "Trading Bot Settings")
secretToken = input.string(title = "secretToken:", defval = "yourBotSecretToken", group = "Trading Bot Settings")

// Trading Period Settings
lookBackPeriodStart = input(title = "Trade Start Date/Time", defval = timestamp('2023-01-01T00:00:00'), group = "Trading Period Settings")
lookBackPeriodStop = input(title = "Trade Stop Date/Time", defval = timestamp('2025-01-01T00:00:00'), group = "Trading Period Settings")

//_______ <function_declarations>
//@function       Used to calculate Simple moving average for Alligator
//@param src      Sourse for smma Calculations
//@param length   Number of bars to calculate smma
//@returns        The calculated smma value 
smma(src, length) =>
    smma =  0.0
    smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length
    smma


//@function       Used to decide if current candle above the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_LowAboveAlligator(jaw, teeth, lips) =>
    result = low > jaw and low > lips and low > teeth 
    result


//@function       Used to decide if current candle below the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_HighBelowAlligator(jaw, teeth, lips) =>
    result = high < jaw and high < lips and high < teeth 
    result


//@function       Used to decide if Alligator's mouth is open
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value 
is_AlligatorHungry(jaw, teeth, lips) =>
    result = lips > jaw[5] and lips > teeth[2] and teeth > jaw[3]
    result


//_______ <calculations>
jaw = smma(hl2, 13)[8]
teeth = smma(hl2, 8)[5]
lips = smma(hl2, 5)[3]


jaw_o = smma(hl2, 13)
teeth_o = smma(hl2, 8)
lips_o = smma(hl2, 5)


//_______ <strategy_calls>
longCondition = is_LowAboveAlligator(jaw, teeth, lips) and is_AlligatorHungry(jaw_o, teeth_o, lips_o) 
if (longCondition)
    strategy.entry(id = "entry1", direction = strategy.long, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')

if close < jaw
    strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')



//_______ <visuals>
if strategy.opentrades > 0
    barcolor := skyrexGreen
else 
    barcolor := skyrexGray

barcolor(barcolor)
//_______ <alerts>