Estratégia de rastreamento de tendências para maximizar lucros

Autora:ChaoZhang, Data: 2023-10-11 14:38:40
Tags:

Resumo

Esta estratégia calcula a média móvel e o canal de desvio padrão do preço para formar trilhos dinâmicos superior e inferior, e combina o valor médio dos preços mais altos e mais baixos para formar o trilho médio, a fim de julgar a direção da tendência atual. Quando o preço atravessa o trilho superior, significa longo. Quando o preço atravessa o trilho inferior, significa curto. Isso implementa uma estratégia que negocia com base nas mudanças de tendência.

Estratégia lógica

  1. Calcular a média móvel simples de 20 dias de fechamento como base para a linha de referência média
  2. Calcular o desvio-padrão de 20 dias de fechamento como base para a distância entre o trilho superior e inferior e o trilho médio
  3. A base do carril central ± 2*dev determina o carril superior superior e o carril inferior inferior
  4. Calcular o valor médio dos preços superiores2 mais elevados e inferiores2 mais baixos nos últimos 20 dias como base2 para o segundo trilho do meio
  5. Tomar o valor médio MB dos dois trilhos do meio acima como o trilho do meio final
  6. Quando perto é maior do que o MB do meio do trilho, é um sinal longo.
  7. Determine a direção longa e curta de acordo com o sinal para acompanhar a tendência e lucro

Análise das vantagens

  1. Usando o canal de desvio padrão dinâmico pode rapidamente capturar mudanças na tendência de preços
  2. Combinando as informações dos preços mais altos e mais baixos, o trilho do meio é mais significativo
  3. O projeto de trilho médio duplo torna o sinal mais preciso e confiável
  4. A ideia estratégica é simples e clara, fácil de compreender e implementar
  5. Existem poucos parâmetros configuráveis, adequados para vários ambientes de mercado

Análise de riscos

  1. Quando a negociação ocorre em breakouts do nível superior ou inferior, é necessário considerar estratégias de stop loss para controlar perdas únicas.
  2. A frequência de negociação pode ser elevada e é necessário considerar o impacto das comissões
  3. Parâmetros como parâmetros de período precisam ser cuidadosamente otimizados para evitar sobreajuste
  4. Quando a tendência muda, há a possibilidade de sinais comerciais errados
  5. É necessária uma gestão adequada do capital, não se deve utilizar alavancagem excessiva

Orientações de otimização

  1. Considere a adição de filtros ao romper através dos trilhos superior e inferior para evitar falsos breakouts
  2. Estabelecer saídas dinâmicas com base no ATR e noutros indicadores
  3. Incorporar informações sobre o volume de negociação para verificar a fiabilidade dos sinais de ruptura
  4. Otimizar Parâmetros como ciclo de cálculo para se adaptar a mais ambientes de mercado
  5. Considerar definir o tamanho da posição para controlar o risco de perda única

Resumo

A ideia geral desta estratégia é clara e fácil de entender. Ao capturar dinamicamente as tendências através do Canal e gerar sinais de negociação com vários projetos de trilho médio, ele pode efetivamente rastrear as direções da tendência para a negociação e obter bons retornos. Na aplicação real, deve ser dada atenção às estratégias de stop loss, gestão de capital, otimização de parâmetros, etc., a fim de obter retornos estáveis no longo prazo.


/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ErdemDemir

//@version=4
strategy("Lawyers Trend Pro Strategy", shorttitle="Lawyers Trend Pro Strategy", overlay=true)

src = close
mult = 2.0
basis = sma(src, 20)
dev = mult * stdev(src, 20)
upper = basis + dev
lower = basis - dev
offset = 0


lower2 = lowest(20)
upper2 = highest(20)
basis2 = avg(upper2, lower2)


MB= (basis+basis2)/2





col1=close>MB
col3=MB>close
colorE = col1 ? color.blue : col3 ? color.red : color.yellow
p3=plot(MB, color=colorE, linewidth=3)

// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)

// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)

// Buy only if the buy signal is triggered and we are not already long
buySignal = not isLong and crossover(close,MB)

// Sell only if the sell signal is triggered and we are not already short
sellSignal= not isShort and crossover(MB,close)
if (buySignal)
    isLong := true
    isShort := false

if (sellSignal)
    isLong := false
    isShort := true







/// LONG
strategy.entry("long", true , when = buySignal, comment="Open Long")

strategy.close("long", when=sellSignal, comment = "Close Long")

/// SHORT
strategy.entry("short", false,  when = sellSignal, comment="Open Short")

strategy.close("short", when=buySignal, comment = "Close Short")



Mais.