Использование индикаторов из терминала

Страницы: 1
RSS
Использование индикаторов из терминала
 
Добрый день!

Помогите, пожалуйста, разобраться, как пользоваться индикаторами, которые выложены тут.

Такой код выдает nil

dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
ds = CreateDataSource("TQBR", "NLMK", INTERVAL_D1)
sleep(5000)
k = ds:Size()
message("==="..tostring(k))  -- для проверки получения данных
message("==="..tostring(ds:H(k)))
func = MA()
ema8 = func(k, {Period=8, Metod = "EMA", VType="Close"}, ds)
message("==="..tostring(ema8))

Последний message выдает nil, хотя данные в ds есть
 
Цитата
Acaw написал:
Помогите, пожалуйста, разобраться, как пользоваться индикаторами, которые выложены тут.
  Посмотрите тут: https://forum.quik.ru/forum10/topic8691/
 
Цитата
Цитата
Acaw написал:
Добрый день!

Помогите, пожалуйста, разобраться, как пользоваться индикаторами, которые выложены тут.

Такой код выдает nil

dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
ds = CreateDataSource("TQBR", "NLMK", INTERVAL_D1)
sleep(5000)
k = ds:Size()
message("==="..tostring(k))  -- для проверки получения данных
message("==="..tostring(ds:H(k)))
func = MA()
ema8 = func(k, {Period=8, Metod = "EMA", VType="Close"}, ds)
message("==="..tostring(ema8))

Последний message выдает nil, хотя данные в ds есть
В индикаторах есть инструкция в которой сказано:
------------------------------
Данный архив содержит примеры функций расчета индикаторов терминала QUIK.
Файлы предоставляются "как есть". Допускаются любые правки на свое усмотрение.

ИНСТРУКЦИЯ:
Скопируйте каталог LuaIndicators из архива, в папку с терминалом QUIK.
После этого в терминале, в окне с графиком, станет возможным добавить индикаторы из архива.
Имя каждого из индикаторов начинается с символа *.

----------------это пример для скрипта--
--Пример расчета индикатора Moving Average по произвольному набору чисел:
dofile(getWorkingFolder().."\\LuaIndicators\\MA.lua")
tbl = {[1]=2587.5, [2]=2588.5, [3]=2585.1, [4]=2583.7, [5]=2582.6, [6]=2581.2, [7]=2579.2, [8]=2574.7,
[9]=2571.5, [10]=2570.8, [11]=2569.9, [12]=2569.7, [13]=2567.2, [14]=2569.3, [15]=2566.1, [16]=2567,
[17]=2563.3, [18]=2565.2, [19]=2564.3, [20]=2565.9, [21]=2568.5, [22]=2572.2, [23]=2572, [24]=2572, [25]=2571.3}
function main()
 func = MA()
 t_id = AllocTable()
 AddColumn(t_id,1,"Price",true,QTABLE_INT_TYPE,10)
 AddColumn(t_id,2,"MA",true,QTABLE_INT_TYPE,10)
 CreateWindow(t_id)
 SetWindowCaption(t_id,"MA")
 for i=1,#tbl do
  ma_out=func(i, {Period=3, Metod = EMA, VType=ANY}, {[i]=tbl[i]})
  tmp=InsertRow(t_id,-1)
  SetCell(t_id,tmp,1,tostring(tbl[i]),tbl[i])
  SetCell(t_id,tmp,2,tostring(ma_out),ma_out)
 end
end
 
По ссылке написано
"учитывать, что при расчете индикаторов первые значения (1 .... Период расчета индикатора - 1)-- обычно nil"

Да, так и есть, после периода пошли значения. Но тогда вопрос зачем такой алгоритм, ведь нужно то значение если не на последней, то на предпоследней и близких свечах, а зачем нужно значение индикатора 20 или 50 свечей назад непонятно. Тем более, что все данные для расчета есть, терминал прекрасно индикатор строит. Непонятно.
 
Отцы, я разобрался, надо было считать слева направо, а не наоборот
Страницы: 1
Читают тему
Наверх