Блог им. SerSer
Settings = { Name = "xLinReg", period = 128, deviation=2, line= { { Name = "xLinReg", Color = RGB(0, 0, 255), Type = TYPE_LINE, Width = 3 }, { Name = "xLinReg", Color = RGB(192, 0, 0), Type = TYPE_LINE, Width = 3 }, { Name = "xLinReg", Color = RGB(0, 128, 0), Type = TYPE_LINE, Width = 3 } } } ---------------------------------------------------------- ---------------------------------------------------------- ---------------------------------------------------------- function c_FF() local AMA={} local CC={} return function(ind, _p,_ddd) local period = _p local index = ind local vol = 0 local sigma = 0 local sigma2 = 0 local aav = 0 local bb = 0 local ZZZ = 0 if index == 1 then AMA={} CC={} CC[index]=(C(index)+H(index)+L(index))/3 AMA[index]=(C(index)+O(index))/2 return nil end ------------------------------ AMA[index]=AMA[index-1] CC[index]=(C(index)+H(index)+L(index))/3 --------------------- if index < (_p) then return nil end ---------------------------------------------------- period =_p if index < period then period = index end --------------- sigma=0 sigma2=0 aav=0 ZZZ=0 for i = 0, period-1 do ZZZ=CC[index+i-period+1] aav=aav+ZZZ sigma=sigma+ZZZ*(-(period-1)/2+i) sigma2=sigma2+(-(period-1)/2+i)^2 end ------------------------ bb=sigma/sigma2 aav=aav/period AMA[index]=aav+bb*((period-1)/2) ---------линейная регрессия ------------------------------- sigma=0 sigma2=0 sigma3 = 0 for i = 0, period-1 do ZZZ=CC[index+i-period+1] sigma2=aav+bb*(-(period-1)/2+i) sigma=sigma+(ZZZ-sigma2)^2 end sigma=(sigma/period)^(1/2) for i = 1, period-1 do ZZZ=aav+bb*(-(period-1)/2+i) SetValue(index+i-period+1, 3, ZZZ) SetValue(index+i-period+1, 2, ZZZ+sigma*_ddd) SetValue(index+i-period+1, 1, ZZZ-sigma*_ddd) end SetValue(index+0-period+1, 3, nil) SetValue(index+0-period+1, 2, nil) SetValue(index+0-period+1, 1, nil) ---------------------------------- return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index] end end ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- function Init() myFF = c_FF() return 3 end function OnCalculate(index) return myFF(index, Settings.period,Settings.deviation) end
Не удается подключить индикатор — ВЫДАЕТСЯ СИСТЕМНОЕ СООБЩЕНИЕ ОБОШИБКЕ
C:\QUIK\LuaIndicators\LeneaRegressii.lua:105: attempt to call global 'SetValue' (a nil value) 3,000000 0,000000 20160803,000000 150729,000000 C:\QUIK\LuaIndicators\LeneaRegressii.lua:105: attempt to call global 'SetValue' (a nil value)
ЧТО БЫ ЭТО ЗНАЧИЛОсвой файл удалите, скопируйте в папку этот, как попробуете — отпишитесь
Подскажите а как расшифровать сообщение об ошибке, пытаюсь разобраться с LUA
ошибка в 105 строке кода (но надо учитывать что QUIK вырезает пустые строки)
ошибка в строке:
SetValue(index+i-period+1, 3, ZZZ)
к Вам 2 вопроса:
— какая у Вас версия QUIK? (SetValue стал поддерживаться не так давно)
— на какой инструмент вы ставите и есть ли на этом графике другие инструменты?
— есть ли возможность SetValue заменить на что-то другое, и хоть краткое описание вашей программы
-на графике только один инструмент фьючерс на нефть
Очень полезный график
еще бы разобраться как она строится на основании каких данных и откуда они берутся...
C:\QUIK\LuaIndicators\xLinReg.lua:83: attempt to perform arithmetic on local 'ZZZ' (a nil value)
да мне кажется QUIK как то странно себя ведет — обновился
называется. Удалил я индикатор с графика потом добавил и ошибка исчезла.
Как можно приобрести xLinReg.lua для установки на QUIK версии 11.1?
Как можно приобрести скрипт xLinReg для установки на QUIK версии 11.1?