Estratégia de inversão de preços orientada pelo canal de preços

Autora:ChaoZhang, Data: 2023-11-27 11:40:36
Tags:

img

Resumo

A estratégia de inversão de preço guiada pelo canal de preços calcula a linha central do canal de preços para determinar a direção de tendência das flutuações de preços.

Estratégia lógica

O indicador central desta estratégia é a linha central do canal de preços. É calculado como a média do preço mais alto e o preço mais baixo dos 30 candelabros mais recentes. Quando o mínimo é maior que a linha central, é considerado uma tendência de alta. Quando o máximo é menor que a linha central, é considerado uma tendência de queda.

A estratégia só gera sinais de negociação quando o fundo da tendência muda. Ou seja, em um fundo de tendência de alta, ele fica curto apenas quando o candelabro fica vermelho. Em um fundo de tendência de baixa, ele fica longo apenas quando o candelabro fica verde.

Além disso, a estratégia também define condições de duplo filtro: filtro do corpo do candelabro e filtro das barras do canal de preços.

Análise das vantagens

Esta estratégia combina tendência, área de valor e padrões de candelabro, que é uma estratégia de reversão eficiente.

  1. Usar o canal de preços para determinar a tendência principal e evitar ser enganado pelos mercados de intervalo.
  2. Selecionar níveis de preço perto da linha central do canal de preços, que é a clássica área de baixa compra-alta venda.
  3. Os filtros do corpo do candelabro e das barras de canal aumentam a qualidade do sinal e reduzem as taxas de sinal falso.
  4. Abrir posições apenas em pontos de reversão óbvios para evitar a perseguição de máximos e a venda de mínimos.

Riscos e soluções

Os principais riscos desta estratégia provêm da ausência de pontos de reversão dos preços e da espera desnecessária de sinais.

  1. Ajustar o rigor das condições de filtragem e reduzir os padrões de filtragem para diminuir as trocas em falta.
  2. Aumentar o tamanho da posição na fase inicial da reversão da tendência para captar os lucros da tendência.
  3. Combinar outros indicadores para avaliar a intensidade do sinal e intervir nos filtros manualmente.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar parâmetros como o período do canal de preços, número de barras de canal, etc.
  2. Adicionar estratégia de stop loss para parar a perda quando a perda atinge uma certa porcentagem.
  3. Combine o volume de negociação para intervir na força do filtro.
  4. Adicionar modelo de aprendizagem de máquina para julgar a probabilidade de inversão de tendência, substituindo filtros simples.

Conclusão

A estratégia de reversão de preços orientada pelo canal de preços determina pontos de reversão através dos canais de preços e define condições de duplo filtro para gerar sinais de alta qualidade.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period")
pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars")
usecol = input(true, "Use color-filter")
usebod = input(true, "Use body-filter")
needbg = input(false, defval = false, title = "Need trend Background?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

src = close

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

//Trend
ub = low > center ? 1 : 0
db = high < center ? 1 : 0
trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1]

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false)
dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false)

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center")

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

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Mais.