
Esta estratégia determina a compressão e a liberação do mercado através de múltiplos indicadores, como a faixa de Brin, o canal KC e a cor do fio de alumínio, e, em combinação com a direção da linha de equilíbrio, determina a tendência de estabelecimento, operando quando a direção da tendência é invertida.
Calcule a média móvel simples da faixa de Brin. A média móvel da faixa de Brin é o preço de fechamento em N dias, a faixa de Brin é o M vezes a amplitude real em N dias do canal de Brin + KC, e a faixa de Brin é a M vezes a amplitude real em N dias do canal de Brin-KC.
Calcule o canal KC. O canal KC é a média móvel simples do preço de fechamento de N dias no meio do trajeto, o trajeto superior é M vezes o trajeto médio + N dias de amplitude real e o trajeto inferior é M vezes o trajeto médio - N dias de amplitude real.
Compressão e liberação. Compressão quando a banda de Brin é inferior à banda de Brin e a banda de Brin é superior à banda de Brin. Liberação quando a banda de Brin é superior à banda de Brin e a banda de Brin é inferior à banda de Brin.
Calcule a tendência de estabelecimento. Utilizando o preço de fechamento de N dias - o preço médio de N dias de maior e menor preço como entrada, calcule a regressão linear de N dias, cujo valor maior que 0 é a tendência de estabelecimento para cima e menor que 0 é a tendência de estabelecimento para baixo.
Quando o estabelecimento sobe, a linha curta e a liberação são sinais de multiplicação; quando o estabelecimento desce, a linha curta e a compressão são sinais de vazio.
Com a utilização de múltiplos indicadores, aumenta a precisão do sinal. Combinação de Brinband, KC Channel e Array para avaliar o movimento do mercado e evitar falsos sinais.
Establishment discernimento de tendências, negociação de tendências. Utilize o estabelecimento discernimento de tendências principais, evitando operações de contra-balanço.
Stop loss automático, controle de risco. Quando o preço toca a linha de stop loss, o stop loss automático de liquidação.
Os parâmetros da faixa de Brin e do canal KC estão mal configurados, o que pode levar a erros de compressão e liberação.
O establishment está atrasado na avaliação da tendência e pode ter perdido o ponto de viragem.
O evento surpreendente causou uma situação enorme, sem controle, com um risco maior de perdas.
Método de otimização: ajustar os parâmetros de banda de Brin e do canal KC, usando critérios auxiliares de indicadores como ADX; atualizar o ciclo de linha média de estabelecimento em tempo hábil, reduzindo o atraso; adicionar uma zona de amortecimento ao configurar a linha de parada.
Combinação de mais indicadores técnicos para melhorar a precisão do sinal de construção de armazém. Por exemplo, KDJ, MACD etc.
Otimizar os parâmetros de periodicidade da linha média do estabelecimento para que ela seja mais capaz de capturar novas tendências.
Adicione indicadores de volume de transação para evitar falsas rupturas, como o indicador de energia de maré, acumulação/distribuição, etc.
Julgar em múltiplos períodos de tempo, distinguir entre sinais longos e curtos. Evite ser encurralado.
Parâmetros de otimização de IA, conjuntos de parâmetros de enumeração pesquisada e ótima pesquisa.
A estratégia pode ser otimizada em várias direções: combinação de indicadores, otimização de parâmetros de julgamento de tendências, adição de indicadores de energia, julgamento de vários períodos de tempo, busca de vantagens da IA, etc. Em geral, a estratégia é baseada na auto-similitude do mercado e na lei de funcionamento periódica, através de indicadores que descrevem as mudanças no ritmo do mercado, negociação no mercado quando o armazenamento de energia se transforma em ponto-chave de liberação de energia, é uma estratégia típica de negociação.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2017
//@version=2
strategy(shorttitle = "Squeeze str 1.1", title="Noro's Squeeze Momentum Strategy v1.1", overlay = false, 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")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
mode2 = input(true, defval = true, title = "Mode 2")
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(2018, defval = 2018, 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")
// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = (sqzOn == false) and (sqzOff == false)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray
trend = val > 0 ? 1 : val < 0 ? -1 : 0
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
abody = sma(body, 10) / 3
//Indicator
bcol = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scol = noSqz ? blue : sqzOn ? black : gray
plot(val, color=bcol, style=histogram, linewidth=4)
plot(0, color=scol, style=cross, linewidth=2)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = trend == 1 and (bar == -1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
dn1 = trend == -1 and (bar == 1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
up2 = trend == 1 and val < val[1] and mode2
dn2 = trend == -1 and val > val[1] and mode2
exit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) and mode2
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * lev : lot[1]
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()