Estratégia de ruptura do canal de preços

Autora:ChaoZhang, Data: 2024-01-16 14:22:57
Tags:

img

Esta estratégia é chamada de Price Channel Breakout Strategy. Sua ideia principal é usar o canal de preços para determinar a tendência e direção do mercado e estabelecer posições quando o preço sair do canal. Primeiro, ele desenhará o intervalo do canal de preços, e depois julgará se há duas linhas K vermelhas ou verdes consecutivas. Se a última linha K atravessar metade da largura do canal e fechar fora do canal, gerará sinais de compra ou venda.

Estratégia lógica

A estratégia calcula o máximo máximo e o mínimo mínimo durante um determinado período no passado usando as funções mais elevadas e mais baixas para determinar os trilhos superiores e inferiores do canal de preços. O ponto médio do canal é definido como a média dos trilhos superiores e inferiores. Em seguida, calcula o tamanho do corpo da linha K e suaviza-o usando SMA para determinar se o último corpo da linha K é maior que metade do corpo médio. Também julga se as duas últimas linhas K estão na mesma direção (duas linhas vermelhas ou verdes consecutivas).

Análise das vantagens

Esta é uma estratégia de ruptura que usa o canal de preço para julgar a tendência geral.

  1. O uso do canal de preços para determinar a direção geral da tendência pode filtrar efetivamente o ruído do mercado.

  2. Duas linhas K consecutivas a atravessar o canal na mesma direcção indicam um impulso mais forte e uma maior taxa de sucesso da ruptura.

  3. Julgar o corpo da linha K maior do que metade do corpo médio pode evitar ser enganado por uma falsa fuga.

  4. A lógica estratégica é simples e fácil de implementar.

  5. Os parâmetros personalizáveis, tais como o período do canal, produtos de negociação, horas de negociação, etc., tornam-no altamente adaptável.

Análise de riscos

A estratégia apresenta também alguns riscos potenciais:

  1. Ainda existe a probabilidade de uma fuga fracassada, o que pode levar a perdas.

  2. O canal de preços pode falhar quando o mercado flutua violentamente.

  3. A ausência de um mecanismo de stop loss não permite controlar eficazmente as perdas.

  4. Regras comerciais simples apresentam riscos de sobreajuste.

  5. Incapaz de se adaptar a ambientes de mercado mais complexos.

As soluções correspondentes são:

  1. Otimizar os parâmetros para melhorar a taxa de sucesso da fuga.

  2. Adicione o índice de volatilidade para evitar mercados agitados.

  3. Adicione o stop loss móvel.

  4. Realizar um teste de complexidade para verificar a sobreajuste.

  5. Aumentar os modelos de aprendizagem de máquina para melhorar a adaptabilidade.

Orientações de otimização

As principais direcções de otimização são:

  1. Adicionar um mecanismo de stop loss para controlar melhor os riscos.

  2. Otimizar parâmetros como período do canal, limiar de ruptura, etc. Encontre parâmetros ideais através de algoritmo genético, busca de grade, etc.

  3. Adicionar condições de filtragem para melhorar a certeza da ruptura.

  4. Adicione modelos de aprendizado de máquina como LSTM para melhorar a capacidade de previsão e adaptabilidade utilizando mais dados.

  5. Realizar a otimização do portfólio, combinar diferentes tipos de estratégias de ruptura para alcançar a ortogonalidade e reduzir as semelhanças.

Conclusão

Em conclusão, esta é uma estratégia quantitativa baseada no canal de preço para determinar a tendência e descobrir sinais de ruptura. Tem a vantagem de julgar a tendência e confirmar a ruptura, mas também tem certos riscos de falsa ruptura. Podemos melhorar a estratégia por otimização de parâmetros, stop loss, adição de filtros etc. para reduzir riscos. Enquanto isso, a introdução de modelos de aprendizado de máquina pode melhorar ainda mais a capacidade preditiva.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Mais.