не могу получить значение индикатора

Страницы: 1
RSS
не могу получить значение индикатора
 
--[[
Ниже скрипт, которым я хочу каждую секунду получать значение индикатора
*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
 
Здравствуйте,
Правильно так:
Скрытый текст
 
Все, понял. Большое спасибо!
 
Доброго дня !

Подскажите, а как подобное сделать, если в индикаторе несколько линий ?

Попробовал по аналогии сделать для канала. Не знаю как обратиться к значениям линий. Выводится центральная линия только. Поправьте если не трудно :
Код
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
 
Цитата
Дмитрий написал:
Подскажите, а как подобное сделать, если в индикаторе несколько линий ?

в луа одна функция может вернуть несколько значений.

проверьте

m, h, l = funcPC(тут остальное
 
Спасибо. Работает !
 
Подскажите, а как получить значение индикатора на предыдущей свече ?
Делаю так:

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)

psar1 = funcPsar(ds:Size()-1, {Step = 0.08, MaxStep = 0.2}, ds)  

message("psar = "..tostring(psar).."\npsar1 = "..tostring(psar1))

sleep(1000)
  end        
end

что-то на правду не похоже..
 
Цитата
Дмитрий написал:
Подскажите, а как получить значение индикатора на предыдущей свече ?
Запомнить при расчете, а потом взять когда потребуется
 
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

 
  while true do
psar  = funcPsar(Size,   {Step = 0.08, MaxStep = 0.2}, ds)
psar1 = funcPsar(Size-1, {Step = 0.08, MaxStep = 0.2}, ds)  


message("psar = "..tostring(psar).."\npsar1 = "..tostring(psar1))

sleep(1000)
  end        
end


Все равно не похоже... Помогайте
 
Дмитрий,
Зачем Вы делаете ЕЩЕ один расчет??? такой рекомендации не было.
В чем сложность взять и запомнить psar не плодя лишние расчеты?

psarOld = 0
for i=1,Size do
      psarOld = psar
psar = funcPsar(i, {Step = 0.08, MaxStep = 0.2}, ds)  
end

или вообще сделать таблицу с индексами и брать по номеру:

psar = {}
for i=1,Size do
      psarOld = psar
psar[i] = funcPsar(i, {Step = 0.08, MaxStep = 0.2}, ds)
end


psar[номер нужной свечки]
 
Большое Спасибо, Сергей! Разобрался
Страницы: 1
Читают тему
Наверх