Canais de preços e tendências baseadas em médias móveis

Autora:ChaoZhang, Data: 2024-02-06 09:46:23
Tags:

img

Resumo

Esta estratégia identifica e segue tendências construindo um canal de preços para calcular o desvio do preço da linha média e usando médias móveis para filtrar sinais.

Estratégia lógica

  1. Construir canal de preços
  • Calcular o máximo máximo e o mínimo mínimo durante os últimos períodos
  • A linha do meio é a média do mais alto e mais baixo.
  • A distância é o desvio absoluto do preço da linha média
  • Distância suave para obter bandas superiores e inferiores
  1. Determine a direção da tendência
  • Quando o preço está abaixo da faixa inferior, definir como tendência de queda
  • Quando o preço está acima da faixa superior, defina como tendência de alta
  1. Gerar sinais comerciais
  • Em tendência de alta, longo quando o preço está abaixo do aberto ou quebra abaixo da faixa superior
  • Em tendência descendente, curto quando o preço está acima do aberto ou quebra acima da faixa inferior

Análise das vantagens

  1. Capta tendências de médio a longo prazo
  2. Combinações com sinais de ruptura para evitar negociações ineficazes em mercados limitados ao intervalo
  3. Parâmetros personalizáveis adequados a diferentes produtos

Análise de riscos

  1. Possíveis perdas menores em tendências oscilantes
  2. Configurações de parâmetros inadequadas podem deixar de lado inversões de tendência
  3. Monitorizar a frequência das negociações para evitar excesso de negociação

Orientações de otimização

  1. Adicionar outros indicadores aos sinais filtrados
  2. Ajuste dinâmico dos parâmetros do canal de preços
  3. Incorporar stop loss para otimizar a gestão de riscos

Conclusão

A estratégia é, em geral, bastante robusta no acompanhamento de tendências de médio e longo prazo de forma eficaz, gerando sinais de negociação através de quebras de tendência.


/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Mais.