
A estratégia baseia-se no indicador de retorno médio de Karobein e na dinâmica dos preços. Utiliza o indicador auxiliar de dinâmica dos preços para julgar a tendência e, em combinação com o indicador de retorno médio de Karobein, para o ingresso específico.
A estratégia primeiro calcula a taxa de variação de preços em diferentes períodos, obtendo um indicador de dinâmica de preços. Quando o indicador de dinâmica de preços atravessa a linha de queda dinâmica, gera um sinal de múltiplas cabeças e, quando atravessa a linha de queda, gera um sinal de cabeças vazias.
O indicador de retorno médio de Karobein é calculado com base na propriedade de retorno médio do preço, que pode refletir a aceleração e o caminho da oscilação do preço. O indicador tem características de onda positiva inerentes, que ajudam a determinar a direção do movimento do preço e o ponto de tempo.
Quando um indicador de dinâmica de preços emite um sinal, um sinal de entrada é gerado se o indicador de regressão de Karobein estiver na região de direção correspondente.
A análise da estratégia leva em conta a dinâmica dos preços e a regressão do valor médio, com uma forte capacidade de discernimento de tendências.
O Karobein Median Regression Indicator permite determinar com precisão os pontos de reversão de preços, melhorando a precisão do tempo de entrada.
Pode ser ajustado com parâmetros de controle livre do período de detenção, para diferentes períodos de tempo.
Pode ajustar os parâmetros de depreciação dinâmica em tempo real para se adaptar às mudanças do mercado.
A estratégia é uma estratégia de acompanhamento de tendências, que pode ser usada em uma tendência de choque.
O Karobein tem um certo atraso no regresso ao valor médio, podendo perder o ponto de viragem de preço.
A posse pode ser prolongada, o que pode aumentar os prejuízos.
Deve-se ajustar adequadamente os parâmetros de desvalorização dinâmica, não se deve definir muito grande, ou você vai perder o tempo de entrada.
A solução para o risco:
Os indicadores de tendência podem ser usados para antecipar a chegada de um tremor e parar a perda de posição em tempo hábil.
Escolha um indicador de regressão do Karobein médio para um período adequado, sem atraso excessivo.
Teste diferentes parâmetros de tempo de detenção e escolha o tempo de detenção adequado para você.
Ajustar o intervalo de valores de limiar dinâmico, não pode ser alargado para evitar a perda de entrada.
Pode testar diferentes ciclos de cálculo da dinâmica de preços e parâmetros de otimização.
Pode ser adicionado um indicador de volatilidade para determinar a chegada de um tremor e pode ser configurado um stop loss.
Os parâmetros do indicador de regressão da média de Karobein podem ser otimizados para torná-lo mais sensível.
Condições de filtragem adicionais podem ser adicionadas, como indicadores de volume de transação, para melhorar a qualidade do sinal.
Parâmetros de otimização dinâmica de algoritmos de aprendizado de máquina.
Esta estratégia considera integralmente os fatores de dinâmica de preços e os fatores de regressão de valor médio, com um forte julgamento de tendências e capacidade de geração de sinais. Pode ser ajustado por parâmetros para se adaptar a diferentes condições de mercado. O próximo passo pode ser otimizado em termos de tempo de entrada e parada de perdas, tornando a estratégia mais estável e forte.
/*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)