Многомерные массивы и получение CreateDataSource

Страницы: 1
RSS
Многомерные массивы и получение CreateDataSource
 
Доброе время суток.
для теста стратегии хочу выбрать сумму ОИ по всем страйкам. много кода, но упростил для теста до минимума и есть путаница
кусок скрипта:
Код
OI_Opt = {}
SecList = getClassSecurities("SPBOPT")
SecCode="BRX7" --тест по текущей нефти. заработает, допилим по газпрому
interval = 1

for TempSecCode in string.gmatch(SecList, "([^,]+)") do --перебираем опционы по очереди. --опускаю код сравнения базового актива опциона с нужным.
   ds_oi, dserror = CreateDataSource("SPBOPT", TempSecCode , interval, "NUMCONTRACTS") --подписался на ОИ
   ds_oi:SetEmptyCallback() --если нет в ТТП опциона, подпишемся
        
   for candle_num = 1, ds_oi:Size() do --перебираю исторические данные

-- отладочная информация.
      PrintDbgStr("QLua: " .. TempSecCode .. " " .. ds_oi:T(candle_num).month .. "." .. ds_oi:T(candle_num).day .. "." .. ds_oi:T(candle_num).hour .. "." .. ds_oi:T(candle_num).min .. " " ..ds_oi:C(candle_num))

--получаю по порядковому номеру значение ОИ
      OI_Opt[candle_num] = tonumber(OI_Opt[candle_num]) + ds_oi:C(candle_num)
   end
end
не получается по одной причине. данные минутного графика (я же запросил минутки) выдает мне в таком виде (Тикер) месяц.дата.час.минута значение
QLua: BR34BV7 7.4 12.50 4
QLua: BR34BV7 7.5 9.17 4
QLua: BR34BV7 7.5 17.51 8
QLua: BR34BV7 7.6 9.17 8
QLua: BR34BV7 7.7 9.17 8
QLua: BR34BV7 7.10 9.17 8

центральные страйки выдают более менее кучные результаты. но тоже есть пропуски интервалов.
но для того, чтобы их получить сумму, мне необходимо раскидать по времени и суммировать.
не понимаю как создать многомерный массив. плюс хочу хранить отдельно колы и путы. плюс теоретическую цену на тот момент, волатильность и т.д.
потом, почему ОИ мне показывает по времени вне торгов (в примере стоит 09.17)?!

многое пробовал, сейчас уже на пути создания базы данных (MySQL), чтобы и там все дело хранить, суммировать.
плохо, что CreateDataSource не работает в коде индикатора. там могу получить текущие данные из таблицы параметров. а из скрипта не могу, по рассчитаным данным, изменить линию индикатора.
делаешь индикатор по текущим данным, но изменение ТФ, добавление другого индикатора или изменение параметров Другого индикатора пересчитывает текущий индикатор и исторические показатели очищаются, он становится бесполезен, так как нет предыдущих данных.

как мне создать многомерный массив/таблицу, где хранить данные типа ДатаВремя (пусть будет строка, потом распарсю), ОИ Путов, ОИ Колов, Теорит.Цена. запутался в ключах, вложеных таблицах.
Спасибо.
 
Как хотя бы объявляется таблица типа date time, как в индикаторе
T[index].year T[index].month

чувствую, что мозги уже так загружены, что не замечаю чего-то простого
 
Код
T = {}
local function storeDateTableByIndex(index, ya, mn, d)
  local date = {
    year = ya,
    month = mn,
    day = d
  }
  T[index] = date
end
 
Цитата
Алексей написал:
Код
  T  =  {}
 local   function   storeDateTableByIndex (index, ya, mn, d)
   local  date  =  {
    year  =  ya,
    month  =  mn,
    day  =  d
  }
  T[index]  =  date
 end 
  
спасибо.  
Страницы: 1
Читают тему
Наверх