Estratégia de captura de tendências com ruptura de linha horizontal

Autora:ChaoZhang, Data: 2024-04-26 15:22:06
Tags:

img

Resumo

Esta estratégia usa linhas horizontais como níveis de suporte e resistência, e gera sinais de negociação quando o preço quebra essas linhas. A ideia principal é: primeiro, desenhe linhas horizontais com base em certas condições, vá longo quando o preço quebra acima da linha e feche posições quando o preço quebra abaixo da linha. Ao mesmo tempo, existem condições correspondentes para gerar linhas horizontais, como o preço baixo da vela anterior ser maior que o preço de fechamento atual.

Princípio da estratégia

  1. Com base na condição de que o preço baixo da vela anterior seja maior do que o preço de fechamento atual, desenhe uma linha horizontal com um comprimento de 20 no preço baixo da vela anterior e mantenha sempre apenas as últimas 10 linhas.
  2. Se o preço atual ultrapassar a última linha horizontal, fechar todas as posições longas anteriores e abrir novas posições longas.
  3. Ao desenhar uma nova linha horizontal, se houver uma posição, feche-a primeiro e abra então uma nova posição longa.

Vantagens da estratégia

  1. A lógica estratégica é simples e clara, fácil de compreender e implementar.
  2. Usando o avanço dos níveis de suporte e resistência da linha horizontal para gerar sinais, ele pode capturar as tendências bem.
  3. Quando é gerada uma nova linha horizontal, ela encerra primeiro as posições anteriores e depois abre novas, o que pode reduzir o risco que as posições anteriores podem trazer.
  4. A estratégia pode ser otimizada ajustando o comprimento e o número de linhas horizontais.

Riscos estratégicos

  1. Para os mercados oscilantes, as frequentes rupturas de linha horizontal podem levar a uma sobrecompra, resultando em grandes deslizamentos e taxas de transação.
  2. A definição das linhas horizontais da estratégia é relativamente simples e não pode ser verificada com outros indicadores, o que pode gerar alguns sinais falsos.
  3. A tendência é apenas longa e não curta, e não pode utilizar plenamente as tendências descendentes.

Orientações para a otimização da estratégia

  1. Outros indicadores podem ser combinados para confirmar a validade das linhas horizontais, tais como alterações no volume de negociação, para reduzir os falsos sinais.
  2. Para os mercados oscilantes, a frequência de negociação pode ser reduzida aumentando a magnitude das rupturas de linha horizontal.
  3. Adicionar um mecanismo de venda a descoberto para lucrar com tendências descendentes.
  4. Considerar o ajustamento dinâmico do comprimento e do número de linhas horizontais para se adaptarem às diferentes condições do mercado.

Resumo

Esta estratégia usa linhas horizontais como níveis importantes de suporte e resistência, e gera sinais de negociação através de avanços de linha. A vantagem é que a lógica é simples e fácil de implementar, e pode capturar tendências bem. No entanto, a desvantagem é que pode sobre-negociar, gerar falsos sinais e só pode ir longo, mas não curto. No futuro, pode ser otimizada e melhorada combinando outros indicadores, reduzindo a frequência de negociação, adicionando mecanismos de venda curta e ajustando dinamicamente os parâmetros.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")



Mais.