
Esta é uma estratégia que utiliza preços-chave em diferentes eixos temporais para fazer brechas duplas que formam sinais de negociação. Pode entrar em posições de compra ou venda quando o preço da tendência quebra o suporte ou resistência-chave para capturar a tendência da linha média-longa.
A estratégia analisa simultaneamente a movimentação dos preços em dois diferentes eixos de tempo (tf e tf2), o eixo de tempo tf é mais longo, refletindo a tendência da linha média; o eixo de tempo tf2 é mais curto, refletindo a movimentação de curto prazo. A estratégia monitora os seguintes sinais de negociação:
A formação do sinal de negociação é: up1 e up2 simultaneamente são verdadeiros, indicando que a linha média e a curta são favoráveis, o que significa fazer mais; dn1 e dn2 simultaneamente são verdadeiros, indicando que a linha média e a curta são baixistas, o que significa fazer zero.
A estratégia também adicionou algumas condições de filtragem, como a inversão de conjuntos e filtragem de linhas K de cor, para evitar que brechas de tendências não reais formem sinais falsos.
No geral, a estratégia aproveita as vantagens da análise de múltiplos períodos de tempo para formar um sinal de negociação de alta qualidade, evitando a interferência do ruído do mercado de curto prazo, enquanto garante que as tendências de linha média e longa estejam de acordo com as expectativas.
A estratégia monitora brechas de preços-chave em dois eixos temporais, captando momentos de entrada claros no início da tendência.
A ruptura simultânea em dois eixos de tempo diferentes pode reduzir significativamente os sinais errados causados por oscilações aleatórias e melhorar a qualidade do sinal.
A adição de um ajuste inverso e um julgamento de linha K de cor pode filtrar alguns sinais de ruptura de baixa qualidade e evitar perdas graves.
A estratégia requer apenas dois parâmetros de eixo de tempo para funcionar, sendo a escolha dos parâmetros flexível e adequada a diferentes variedades.
A estrutura da estratégia é clara e os princípios são fáceis de entender; também é possível ajustar os parâmetros de acordo com as características da situação para a otimização da estratégia.
A dupla brecha pode causar algum atraso na entrada, perdendo lucros de uma forte posição inicial, em comparação com uma única brecha.
É muito importante escolher o preço crítico adequado para diferentes variedades e ciclos de mercado, caso contrário, pode haver sinais errados.
Mesmo com uma dupla ruptura, pode haver uma falha de ruptura e uma rápida retração, resultando em prejuízos.
A entrada tardia na tendência pode sofrer uma reversão súbita, não conseguindo parar a saída a tempo e causando grandes perdas.
Embora simples, encontrar a melhor combinação de parâmetros ainda requer um grande número de testes repetidos e é mais difícil de otimizar.
Pode-se configurar um stop loss móvel ou um stop loss temporário, para parar a partida antes que o prejuízo se expanda.
Pode-se testar diferentes parâmetros de amplitude de inversão ou experimentar outros métodos de filtragem.
Os preços-chave podem ser variados de forma dinâmica conforme a evolução do mercado, em vez de serem fixados de forma estática.
A melhor combinação de parâmetros de diferentes variedades pode ser otimizada por meio de aprendizado de máquina.
A confirmação de volume de transações pode ser adicionada para evitar uma série de falhas.
A estratégia geral é uma estratégia de seguimento de tendências simples e práticas. Utiliza simultaneamente a análise de dois eixos temporais, entra em ação quando a linha média e longa está de acordo com as expectativas, e pode filtrar efetivamente parte do ruído. O sinal da estratégia é claro e fácil de ler, a configuração de parâmetros é relativamente simples e intuitiva. Mas, ao mesmo tempo, há problemas como mau tempo de entrada e dificuldade de escolha de preços-chave.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Levels Strategy v1.0", shorttitle = "Levels 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = "timeframe 1")
tf2 = input('D', title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
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")
//Signals
level = request.security(syminfo.tickerid, tf, src[1])
level2 = request.security(syminfo.tickerid, tf2, src[1])
plot(level, linewidth = 3, color = silver)
plot(level2, linewidth = 3, color = gray)
up1 = close > level and ap == false ? true : low > level ? true : false
dn1 = close < level and ap == false ? true : high < level ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false
//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up1 and up2 and (close < open or cf == false)
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 and dn2 and (close > open or cf == false)
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, 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()