Линейная регрессия ++

Автор:Чао Чжан, Дата: 24 мая 2022 14:17:42
Тэги:DEV

Устойчивость к спросу населения

Формула линейной регрессии Стереть с учета с предупреждениями

Вот сценарий линейной регрессии для трейдеров, которые любят богатые функции.

Особенности ++ Многочасовые рамки -> Регрессия источника из другого графика ++ настраиваемые цвета -> Это включает в себя черты сосны ++ Сглаживание -> Разрешить фильтрованную регрессию; Примечание: Использование 1 По умолчанию к исходной строке. По умолчанию 1 ++ Сигнализация по пересечению канала/диапазона

Использование ++ Используйте это для вырывов и переворотов ++ Этот скрипт не используется самостоятельно

Риски Пожалуйста, обратите внимание, что этот сценарий похож на полосы Боллинджера и представляет риск падения в диапазон тренда. Сигналы могут продолжать двигаться в одном направлении, пока рынок переворачивается.

Просьбы Если у вас есть какие-то запросы, комментируйте ниже или отправьте мне смс. Я отвечу, когда смогу. Не стесняйтесь использовать это на вашем графике и поделиться своими идеями

Для разработчиков, которые хотят использовать это на их графике, пожалуйста, используйте этот скрипт Оригинальная формула для расчета размещена там

Надеюсь, вам понравится.

обратная проверка

img


/*backtest
start: 2022-04-23 00:00:00
end: 2022-05-22 23:59:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LucemAnb
// User Version

//@version=4
study("Linear Regression ++ [Lucem Anb]", "Lin Reg ++ [Lucem Anb]", overlay=true)


source      = input(close)
length      = input(100, minval=1)
offset      = input(0, minval=0)
dev         = input(2.0, "Deviation")
smoothing   = input(1, minval=1)
mtf_val     = input("", "Resolution", input.resolution)
line_thick  = input(4, "S&R Thickness", minval=1, maxval=4)
signals     = input("Recent", "Signals Display", options=["Recent", "All"])
p           = input("Lime", "Up Color", options=["Red", "Lime", "Orange", "Teal", "Yellow", "White", "Black"])
q           = input("Red", "Down Color", options=["Red", "Lime", "Orange", "Teal", "Yellow", "White", "Black"])
goto        = input(0, "End At Bar Index")

cc(x) => x=="Red"?color.red:x=="Lime"?color.lime:x=="Orange"?color.orange:x=="Teal"?
 color.teal:x=="Yellow"?color.yellow:x=="Black"?color.black:color.white
data(x) => sma(security(syminfo.tickerid, mtf_val!="" ? mtf_val : timeframe.period, x), smoothing)

linreg = data(linreg(source, length, offset))
linreg_p = data(linreg(source, length, offset+1))
plot(linreg, "Regression Line", cc(linreg>linreg[1]?p:q), editable=false)

x = bar_index
slope = linreg - linreg_p
intercept = linreg - x*slope
deviationSum = 0.0
for i=0 to length-1
    deviationSum:= deviationSum + pow(source[i]-(slope*(x-i)+intercept), 2)  
deviation = sqrt(deviationSum/(length))
x1 = x-length
x2 = x
y1 = slope*(x-length)+intercept
y2 = linreg

updating = goto <= 0 or x < goto



dm_current = -deviation*dev + y2
dp_current = deviation*dev + y2
buy = crossunder(close, dm_current)
sell = crossover(close, dp_current)
alertcondition(buy, "Buy Lin Reg", "Crossing On the Lower Regression Channel")
alertcondition(sell, "Sell Lin Reg", "Crossing On the Higher Regression Channel")

plotshape(buy, "BUY", shape.labelup, location.belowbar, color.lime, text='BUY', textcolor=color.black, show_last=signals=="All"?99999999:length)
plotshape(sell, "SELL", shape.labeldown, location.abovebar, color.red, text='SELL', textcolor=color.white, show_last=signals=="All"?99999999:length)
    
plot(x, "Bar Index", color.aqua, line_thick, plot.style_cross, display=display.none)

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Связанные

Больше