
A estratégia é chamada de estratégia de ruptura baseada em canais de preço, e sua principal ideia é usar o canal de preço para julgar a tendência e a direção do mercado e estabelecer uma posição quando o preço quebra o canal. Primeiro, ele traça o alcance do canal de preços e, em seguida, determina se a linha K aparece duas linhas K vermelhas ou verdes consecutivas, gerando um sinal de compra ou venda se a última linha K atravessar mais da metade do canal e fechar fora do canal.
A estratégia calcula os preços mais altos e mais baixos nos últimos períodos de um determinado período através das funções highest (..) e lowest (..) para determinar a trajetória ascendente e descendente do canal de preços. A linha central do canal é definida como o valor médio da trajetória ascendente e descendente. Em seguida, calcula o tamanho das entidades da linha K e, através do suavização do SMA, determina se a última entidade da linha K é maior que a metade da entidade média.
Esta é uma estratégia de ruptura que utiliza o canal de preços para determinar a tendência. Tem as seguintes vantagens:
O uso de canais de preços para determinar a direção da tendência geral pode filtrar o ruído do mercado.
Duas linhas K consecutivas de passagem para a entrada de ruptura, indicando um forte impulso e uma maior taxa de sucesso na ruptura.
Julgar que a entidade de linha K é superior a metade da entidade média, pode evitar ser enganado por uma falsa ruptura.
A lógica da estratégia é simples, fácil de entender e de implementar.
Parâmetros personalizáveis, como o ciclo do canal, o tipo de transação, o tempo de transação, etc., são altamente adaptáveis.
A estratégia também apresenta alguns riscos potenciais:
A probabilidade de fracasso da invasão continua a existir, podendo causar prejuízos.
A decisão de passagem pode falhar em situações de forte volatilidade.
A falta de um mecanismo de prevenção de perdas não permite um controlo eficaz das perdas.
As regras de negociação são simples e há risco de sobre-conformidade.
Não conseguem adaptar-se a um mercado mais complexo.
A solução é a seguinte:
Optimizar os parâmetros e aumentar a taxa de sucesso da brecha.
A partir de agora, os indicadores de volatilidade devem ser incluídos para evitar oscilações.
Adição de configuração de stop loss móvel.
Fazer testes de complexidade e verificar a adequação.
Aumentar os algoritmos de aprendizagem de máquina e melhorar a adaptabilidade das estratégias.
A estratégia foi desenvolvida em torno de:
Aumentar o mecanismo de stop loss para melhor controlar o risco. Pode-se definir um stop loss de retorno de preço, ou pode-se usar indicadores como o ATR para definir um stop loss móvel.
Os parâmetros de otimização, como o ciclo de passagem, o parâmetro de amplitude de ruptura, etc. Os parâmetros ótimos podem ser encontrados por meio de algoritmos genéticos, pesquisa de grade e outros métodos.
Aumentar as condições de filtragem, aumentando a certeza de uma ruptura. Por exemplo, pode ser combinado com o volume de transações para confirmar a ruptura.
A adição de modelos de aprendizagem de máquina, que utilizam mais dados para aumentar a capacidade de previsão e adaptabilidade das estratégias. O aprendizado profundo, como o LSTM, pode capturar padrões mais complexos.
Otimização de combinações, combinação de diferentes tipos de estratégias de ruptura, ortodoxia e redução da similaridade.
A estratégia, como um todo, é uma estratégia quantitativa baseada em tendências de julgamento de canais de preço e detecção de sinais de ruptura. Ela tem tendências de julgamento e confirmação de vantagens de ruptura, mas também existe um certo risco de falsa ruptura. Podemos melhorar a estratégia e reduzir o risco por meio de métodos como otimização de parâmetros, configuração de stop loss e adição de filtros de condições.
/*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()