Esta estratégia baseia-se no indicador de reversão média de Karobein e no ímpeto de preço. Ele usa indicadores auxiliares de ímpeto de preço para julgamento da tendência e combina o indicador de reversão média de Karobein para entrada específica. Esta estratégia é adequada para negociação de médio e longo prazo.
Em primeiro lugar, a estratégia calcula a taxa de mudança dos preços em diferentes períodos para obter o indicador de momento do preço. Quando o indicador de momento do preço cruza acima da linha de limiar dinâmico, um sinal longo é gerado. Quando cruza abaixo, um sinal curto é gerado.
O indicador de reversão média de Karobein é calculado com base na natureza média de reversão dos preços, que pode refletir a aceleração e o caminho das flutuações de preços.
Quando o indicador de momento do preço gera um sinal, se o indicador de Reversão Mean Karobein estiver na área direcional correspondente, um sinal de entrada é gerado.
A estratégia considera de forma abrangente a dinâmica dos preços e os fatores de reversão média, com uma forte capacidade de julgamento da tendência.
O indicador Karobein Mean Reversion pode localizar com precisão os pontos de virada dos preços e melhorar a precisão do tempo de entrada.
O período de retenção pode ser controlado livremente por ajuste de parâmetros, adequado para diferentes prazos.
O limiar dinâmico pode ser ajustado em tempo real para dar resposta adaptativa às alterações do mercado.
Como uma tendência que segue uma estratégia, é propenso a ser preso em tendências de gama.
O indicador Karobein Mean Reversion tem um certo atraso, que pode perder os pontos de virada dos preços.
O parâmetro do período de detenção deve ser monitorizado para evitar a expansão das perdas decorrentes de períodos de detenção excessivos.
O limiar dinâmico deve ser estabelecido de forma adequada e não demasiado amplo, caso contrário, poderão perder-se oportunidades de entrada.
Métodos de gestão de riscos correspondentes:
Os indicadores de avaliação da tendência podem ser utilizados para prever mercados variáveis e posições de saída no tempo.
Escolher atrasos razoáveis para o indicador de reversão média de Karobein para reduzir os atrasos.
Teste diferentes parâmetros de período de retenção e escolha os adequados.
Ajustar o intervalo de limiar dinâmico para evitar a ausência de entradas.
Teste diferentes períodos para o cálculo do momento do preço para otimizar os parâmetros.
Adicionar indicadores de volatilidade para detectar mercados variáveis e definir stop loss.
Otimizar os parâmetros do indicador de reversão da média de Karobein para torná-lo mais sensível.
Adicionar filtros adicionais como volume para melhorar a qualidade do sinal.
Usar algoritmos de aprendizagem de máquina para otimizar dinamicamente parâmetros.
Esta estratégia utiliza de forma abrangente o impulso do preço e os fatores de reversão média, com fortes capacidades em julgamento de tendências e geração de sinais. Pode se adaptar a diferentes ambientes de mercado através do ajuste de parâmetros. Podem ser feitas melhorias adicionais em relação ao tempo de entrada e stop loss para tornar a estratégia mais robusta. Esta estratégia merece mais pesquisa e aplicação.
/*backtest start: 2022-10-27 00:00:00 end: 2023-11-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // author: capissimo strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false) // This is a scaled Normalized Vector Strategy with a Karobein Oscillator // original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/) // Repainting: in general there two types of repainting: // * when the last candle is constantly being redrawn // * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed // The former is a natural behaviour, which presents a constant source of frustration, // when a signal directly depends on the current market situation and can be overcome // with various indirect techniques like divergence. // The latter suggests a flaw in the indicator design. // Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being // really promising. Would be nice if our community suggests a solution to this problem )) // This strat consistently performs with high accuracy, showing up to 96% scores // Here are some of the best parameters: // TF Lookback Performance (ca.) // 1m 13 92% // 3m 34 92% // 5m 85 92% // 15m 210 90% // 30m 360 89% // 1H 1440,720 94%, 87% // The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing. // It does not repaint. // original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/) scaleMinimax(X, p, min, max) => hi = highest(X, p), lo = lowest(X, p) (max - min) * (X - lo)/(hi - lo) + min price = input(close, "Price Data") tf = input(34, "Timeframe", minval=1, maxval=1440) thresh = input(14., "Threshold", minval=.1, step=.1) div = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000]) showVol = input(false, "Volume") useold = input(true, "Use Old System") lime = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10), black = color.new(color.black, 100), gray = color.new(color.gray, 50) vol = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on) : security(syminfo.tickerid, tostring(tf), volume) obv = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol) prix = showVol ? obv : price getdiff(prc, tf) => prev = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) : security(syminfo.tickerid, tostring(tf), prc[1]) curr = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) : security(syminfo.tickerid, tostring(tf), prc) (curr/prev) - 1 p = getdiff(prix, tf) up = thresh/div, dn = -thresh/div longCondition = crossover(p, up) shortCondition = crossunder(p, dn) bg = longCondition ? lime : shortCondition ? fuchsia : black cl = p > up ? color.green : p < dn ? color.red : color.silver bgcolor(bg, editable=false) plot(scaleMinimax(up, 2500, -1, 1), color=lime, editable=false, transp=0) hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false) plot(scaleMinimax(dn, 2500, -1, 1), color=fuchsia, editable=false, transp=0) plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false) plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false) strategy.entry("L", true, 1, when=longCondition) strategy.entry("S", false, 1, when=shortCondition) alertcondition(longCondition, title='Long', message='Long Signal!') alertcondition(shortCondition, title='Short', message='Short Signal!') //*** Karobein Oscillator per = input(8, "Karobein Osc Lookback") prix2 = ema(price, per) a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per) b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per) c = (prix2/prix2[1])/(prix2/prix2[1] + b) d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1 plot(scaleMinimax(d, 2500, -1, 1), color=color.orange, transp=0)