
Стратегия основана на среднерегулируемом показателе Karobein и динамике цен. Она использует вспомогательные индикаторы динамики цен для определения тенденции и в сочетании с среднерегулируемым показателем Karobein для конкретного входа.
Эта стратегия сначала получает индикатор ценовой динамики, рассчитывая изменение цены в разные периоды. Когда индикатор ценовой динамики пересекает динамическую пониженную линию, он создает многоголовый сигнал, а когда он пересекает ее, он создает пустой сигнал.
Среднерегулируемый показатель Karobein основан на среднелинейном регрессионном характере цены, который отражает ускорение и путь колебаний цены. Этот показатель имеет свойство внутренней позитивной волны, которая помогает определить направление движения цены и временные точки.
Когда индикатор динамики цены посылает сигнал, входный сигнал производится, если индикатор средневекового регресса Karobein находится в соответствующей направленной области.
Стратегия учитывает динамику цены и среднезначную регрессию и обладает более сильной способностью определять тенденции.
Karobein Average Regression Index позволяет точно определить точку поворота цены, что повышает точность времени входа в рынок.
Свободный контроль за периодом хранения может быть скорректирован с помощью параметров для различных временных периодов.
В режиме реального времени можно регулировать динамические параметры понижения стоимости, чтобы адаптироваться к изменениям рынка.
Эта стратегия является стратегией отслеживания тенденций, которая может быть использована в сочетании с волатильностью.
Karobein имеет некоторое отставание в своем среднезначном регрессионном индексе и, возможно, пропустит точку перехода цены.
Необходимо обратить внимание на настройки параметров периода удержания позиции, слишком длительное время удержания позиции может привести к увеличению убытков.
Динамические параметры отклонения должны быть соответствующим образом скорректированы, не следует устанавливать их слишком большими, иначе вы пропустите время входа в игру.
Решение риска:
Показатели тренда позволяют заранее определить, что наступает шок, и своевременно прекратить убытки.
Выберите подходящий цикл среднего значения Каробейна для показателя регрессии, который не может задерживаться слишком долго.
Тестируйте различные параметры времени удержания позиции и выберите подходящее для себя время удержания позиции.
Регулируйте диапазон динамических порогов, не допуская их слишком широкие, чтобы избежать пропуска точки входа.
Можно тестировать различные циклы расчета динамики цен, оптимизировать параметры.
Можно добавить индикатор волатильности, чтобы определить приближение землетрясения, можно установить стоп-убыток.
Оптимизируемые параметры показателя среднезначной регрессии Karobein, чтобы сделать его более чувствительным.
Дополнительные фильтрационные условия, такие как индикатор объема сделки, могут быть добавлены для улучшения качества сигнала.
Параметры динамической оптимизации с использованием алгоритмов машинного обучения.
Эта стратегия комплексно учитывает динамические факторы цены и факторы средней стоимости регрессии, обладает более сильным способностью определять тенденции и генерировать сигналы. Она может быть скорректирована с помощью параметров, чтобы адаптироваться к различным рыночным условиям. Следующий шаг может быть дополнительно оптимизирован с точки зрения времени входа, остановки убытков, что делает стратегию более стабильной и сильной.
/*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)