Estratégia de acompanhamento do canal de momentum


Data de criação: 2023-12-25 13:14:24 última modificação: 2023-12-25 13:14:24
cópia: 0 Cliques: 729
1
focar em
1621
Seguidores

Estratégia de acompanhamento do canal de momentum

Visão geral

Esta estratégia baseia-se em um indicador de canal dinâmico para projetar sinais de negociação, gerando sinais de compra e venda de acordo com o aumento e queda do canal de ruptura do preço. A estratégia faz apenas negociações múltiplas e, se houver um sinal de venda, a posição é reduzida a uma posição vazia.

Princípio da estratégia

Esta estratégia usa a média SMA e a amplitude de oscilação real do ATR para construir um canal de força. O canal de força é composto por dois eixos:

A trajetória = SMA + ATR * coeficiente Subtração = SMA - ATR * coeficiente

Quando o preço sobe, gera um sinal de compra; quando o preço desce, gera um sinal de venda.

Uma vez que só se faz mais, se aparecer um sinal de venda, cancele a ordem de abertura anterior e leve a posição para o estado de vazio.

A lógica da estratégia é a seguinte:

  1. Construção de canais de força usando SMA e ATR
  2. Quando o preço está no caminho certo, defina o preço de abertura e peça mais
  3. Quando o preço despenca, eleva o número de pedidos anteriores, deixando a posição livre

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A lógica da estratégia é simples, clara e fácil de entender.
  2. Indicadores de canal de força intuitivos e precisos para avaliar as tendências do mercado
  3. O risco de perda de lucro pode ser reduzido ao máximo por meio de transações em múltiplos mercados.
  4. Lista de condições, para facilitar a precisão das entradas

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A tendência é que os investidores abram posições frequentemente em momentos de turbulência.
  2. O que é que eu tenho a dizer?
  3. Não há um mecanismo de saída, é necessário um ponto de saída artificial.

Resposta:

  1. Otimização de parâmetros de canal para reduzir sinais de erro
  2. Adição de módulos de cabeçalho para transações bidirecionais
  3. Adição de mecanismos de saída como stop loss móvel e trailing stop

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Parâmetros de otimização, ajuste de ciclo de canal, coeficiente de taxa de flutuação, etc.
  2. Adição de módulo de cabeça vazia, gerando um sinal de venda de acordo com o preço abaixo da linha de descida
  3. Adição de um mecanismo de stop loss, combinado com um stop loss de seguimento ATR
  4. Considere adicionar mais condições de filtragem para evitar sinais errados
  5. Testar a eficácia de contratos de diferentes variedades

Resumir

Esta estratégia baseia-se em indicadores de canal de força, capturando facilmente e efetivamente as tendências do mercado. A lógica da estratégia é clara e fácil de entender, gerando sinais de negociação por meio de uma ruptura de canal de preço. Embora apenas ser multi-cabeça e sem mecanismo de saída seja insuficiente, pode ser melhorada por meio de otimização de parâmetros, adição de módulos de cabeçalho, adição de stop loss, etc.

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

//@version=3
strategy("Keltner Channel Strategy", overlay=true)
source = close

useTrueRange = input(true)
length = input(20, minval=1)
mult = input(1.0)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

if (cancelBcond)
    strategy.cancel("KltChLE")

if (crossUpper)
    strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")

if (cancelScond)
    strategy.cancel("KltChSE")

if (crossLower)
    strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)