--[[ Ниже скрипт, которым я хочу каждую секунду получать значение индикатора *Parabolic SAR. Начиная с первой секунды минуты выводится или high или low вместо желаемого индикатора. Помогите, пжлста. ]] function OnInit() dofile(getWorkingFolder()..'\\LuaIndicators\\PSAR.lua' ) funcPsar = PSAR() ds = CreateDataSource('SPBFUT', 'SiZ8', INTERVAL_M1) ds: SetEmptyCallback() end
function main() while true do psar = funcPsar(ds:Size() - 1, {Step = 0.02, MaxStep = 0.2}, ds) message(tostring(psar)) sleep(1000) end end
Пользователь
Сообщений: Регистрация: 23.01.2015
17.10.2018 20:16:36
Здравствуйте, Правильно так:
Скрытый текст
Код
function OnInit()
dofile(getWorkingFolder()..'\\LuaIndicators\\PSAR.lua' )
funcPsar = PSAR()
ds = CreateDataSource('SPBFUT', 'SiZ8', INTERVAL_M1)
ds: SetEmptyCallback()
end
function main()
sleep(100)
for i=1,ds:Size() do
psar = funcPsar(i, {Step = 0.02, MaxStep = 0.2}, ds)
end
while true do
psar = funcPsar(ds:Size(), {Step = 0.02, MaxStep = 0.2}, ds)
-- psar = ConvertValue({Round = 1}, psar) --округление (если необходимо)
message(tostring(psar))
sleep(1000)
end
end
Пользователь
Сообщений: Регистрация: 17.10.2018
18.10.2018 11:28:55
Все, понял. Большое спасибо!
Пользователь
Сообщений: Регистрация: 09.04.2019
18.12.2019 12:26:24
Доброго дня !
Подскажите, а как подобное сделать, если в индикаторе несколько линий ?
Попробовал по аналогии сделать для канала. Не знаю как обратиться к значениям линий. Выводится центральная линия только. Поправьте если не трудно :
Код
function OnInit()
dofile(getWorkingFolder()..'\\LuaIndicators\\PC.lua' )
funcPC = PC()
ds = CreateDataSource('SPBFUT', 'SiH0', INTERVAL_M1)
ds: SetEmptyCallback()
end
function main()
sleep(100)
for i=1,ds:Size() do
pc = funcPC(i, {Period = 10, }, ds)
end
while true do
val_h = funcPC(ds:Size(), {Period = 10}, ds)
val_l = funcPC(ds:Size(), {Period = 10 }, ds)
message("H = "..tostring(val_h).."\nL = "..tostring(val_l))
sleep(1000)
end
end
Пользователь
Сообщений: Регистрация: 23.01.2015
18.12.2019 13:30:16
Цитата
Дмитрий написал: Подскажите, а как подобное сделать, если в индикаторе несколько линий ?
в луа одна функция может вернуть несколько значений.
проверьте
m, h, l = funcPC(тут остальное
Пользователь
Сообщений: Регистрация: 09.04.2019
18.12.2019 13:56:17
Спасибо. Работает !
Пользователь
Сообщений: Регистрация: 09.04.2019
04.02.2020 13:50:28
Подскажите, а как получить значение индикатора на предыдущей свече ? Делаю так:
function OnInit() dofile(getWorkingFolder()..'\\LuaIndicators\\PSAR.lua' ) funcPsar = PSAR() ds = CreateDataSource('SPBFUT', 'BRH0', INTERVAL_M15) ds: SetEmptyCallback() end
function main() sleep(100) for i=1,ds:Size() do psar = funcPsar(i, {Step = 0.08, MaxStep = 0.2}, ds) end
while true do psar = funcPsar(ds:Size(), {Step = 0.08, MaxStep = 0.2}, ds)
Дмитрий написал: Подскажите, а как получить значение индикатора на предыдущей свече ?
Запомнить при расчете, а потом взять когда потребуется
Пользователь
Сообщений: Регистрация: 09.04.2019
04.02.2020 14:54:39
function OnInit() dofile(getWorkingFolder()..'\\LuaIndicators\\PSAR.lua' ) funcPsar = PSAR() ds = CreateDataSource('SPBFUT', 'BRH0', INTERVAL_M1) ds: SetEmptyCallback() end
function main() sleep(100)
local Size = ds:Size();
for i=1,Size do psar = funcPsar(i, {Step = 0.08, MaxStep = 0.2}, ds) if i == Size-1 then psar1 = funcPsar(Size-1, {Step = 0.08, MaxStep = 0.2}, ds) end end