Доброе время суток.
для теста стратегии хочу выбрать сумму ОИ по всем страйкам. много кода, но упростил для теста до минимума и есть путаница
кусок скрипта:
не получается по одной причине. данные минутного графика (я же запросил минутки) выдает мне в таком виде (Тикер) месяц.дата.час.минута значение
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 не работает в коде индикатора. там могу получить текущие данные из таблицы параметров. а из скрипта не могу, по рассчитаным данным, изменить линию индикатора.
делаешь индикатор по текущим данным, но изменение ТФ, добавление другого индикатора или изменение параметров Другого индикатора пересчитывает текущий индикатор и исторические показатели очищаются, он становится бесполезен, так как нет предыдущих данных.
как мне создать многомерный массив/таблицу, где хранить данные типа ДатаВремя (пусть будет строка, потом распарсю), ОИ Путов, ОИ Колов, Теорит.Цена. запутался в ключах, вложеных таблицах.
Спасибо.
для теста стратегии хочу выбрать сумму ОИ по всем страйкам. много кода, но упростил для теста до минимума и есть путаница
кусок скрипта:
Код |
---|
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 не работает в коде индикатора. там могу получить текущие данные из таблицы параметров. а из скрипта не могу, по рассчитаным данным, изменить линию индикатора.
делаешь индикатор по текущим данным, но изменение ТФ, добавление другого индикатора или изменение параметров Другого индикатора пересчитывает текущий индикатор и исторические показатели очищаются, он становится бесполезен, так как нет предыдущих данных.
как мне создать многомерный массив/таблицу, где хранить данные типа ДатаВремя (пусть будет строка, потом распарсю), ОИ Путов, ОИ Колов, Теорит.Цена. запутался в ключах, вложеных таблицах.
Спасибо.