Данные по бумагам в портфеле скриптом lua, Данные по бумагам в портфеле скриптом lua
Пользователь
Сообщений: Регистрация: 14.06.2023
26.07.2024 09:10:36
Пытаюсь получить данные по бумагам в портфеле скриптом. Выдает то ошибки, то nill неделю ковыряюсь, не понимаю в чем ошибка(( в портфеле одна акция Роснефти, нужно что бы при запуске скрипта вывел месседж что в портфеле 1 акция Роснефти.
function LB() n = getNumberOf("depo_limits") value = 0 res = nil for y = 0, n-1 do trade = getItem("depo_limits", y) if (trade["client_code"] == Kod_klienta) and (trade["firmid"] == Firm_ID) and (trade["sec_code"] == sec_code) and (trade["trdaccid"] == ACCOUNT) and (trade["limit_kind"] == 2) then res = trade["currentbal"] break end end return res end
message(tostring(LB()), 0)
Выдают nill
Создать таблицу. Получить данные из таблицы другим скриптом., Создать таблицу. Получить данные из таблицы другим скриптом.
Пользователь
Сообщений: Регистрация: 14.06.2023
29.10.2023 22:45:14
Читаю. Спасибо.
Создать таблицу. Получить данные из таблицы другим скриптом., Создать таблицу. Получить данные из таблицы другим скриптом.
for fff=1,7 do InsertRow(win001,fff) end SetCell(win001,1,0,"Остаток средств:"); SetCell(win001,2,0,"+--","-------------+"); SetCell(win001,3,0,"Кол-во заявок на продажу"); SetCell(win001,4,0,"Сумма заявок на продажу");
if Table1 then -- Таблица существует -- Далее можно получить доступ к элементам таблицы local value = getNumberOf(win001, 3, 2) message(value) else -- Таблица не существует message("Таблица не найдена") end
таблицы не видят. почему не понимаю. По названию и идентификатору обращаюсь. Таблица существует, я ее вижу.
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
26.10.2023 20:06:27
А скрипт который собирает мэседжи в табличку. А другой скрипт который при запуске берет из таблички последний сек код и отправляет по нему заявку. Такое будет работать?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
25.10.2023 21:22:58
Какая функция создания таблицы подойдет лучше всех?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
25.10.2023 18:09:06
Так понятнее, спасибо. А такой вариант. Создается табличка и туда пишутся значения мэсседжей или меток. И из этой таблички скрипт берет самую последнюю информацию. Такое в теории возможно?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
25.10.2023 11:54:06
Я читаю документацию. Понять ее не в состоянии. Стиль изложения вида вода мокрая, а в году 12 месяцев мне не дает ничего. Мне нужны следствия и выводы. Нет в документации списка что можно сделать и что сделать нельзя. Нет списка функции которые друг с другом работают или не работают. Нужно как-то вычислять что работает, а что нет.
Какими способами можно взять sec_code из индикатора и использовать его в скрипте запускаемом вручную? Из сообщения можно взять? Попробовал, похоже невозможно.
AddLabel или GetLabelParams (внутренние их параметры) могут принимать значения sec_code что бы взять sec_code из индикатора и использовать его в скрипте запускаемом вручную?
Другие способы может есть ?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
24.10.2023 23:02:44
Пытаюсь найти label_id перебором.
local chart_tag = "ww5" -- идентификатор графика
function OnInit() local label_id = 1 -- начальное значение идентификатора метки local label_params = GetLabelParams(chart_tag, label_id) while label_params do local secCodeLabel = label_params.secCodeLabel message("Значение метки с идентификатором " .. label_id .. ": " .. secCodeLabel) label_id = label_id + 1 -- увеличиваем идентификатор метки label_params = GetLabelParams(chart_tag, label_id) -- получаем параметры новой метки end end
function OnStop() end
Я на верном пути?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
24.10.2023 22:41:12
Код индикатора теперь.
local Settings = { Name = "goodmode1" }
local secCodeLabel
function Init() return 1 end
function OnCalculate(Index) if Index == 1 then local info = getDataSourceInfo()
local chart_tag = "ww5" -- идентификатор графика local label_id = 1 -- идентификатор метки
function OnInit() local label_params = GetLabelParams(chart_tag, label_id) if label_params then local secCodeLabel = label_params.secCodeLabel message("Значение метки: " .. secCodeLabel) else message("Метка не найдена") end end
function OnStop() end
Пишет "Метка не найдена". Надо тип данных где-то задать? Как получить этот secCodeLabel скриптом?
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
24.10.2023 10:20:02
Settings = { Name = "goodmode1" }
function Init() return 1 end
function OnCalculate(Index) if Index == 1 then local info = getDataSourceInfo() --message(info.sec_code)
-- Создаем метку с информацией sec_code
local chart_tag = "ww5"
label_params = {
local labelSize = 300 -- размер метки local labelX = 50 -- координата X метки (посередине графика) local labelY = 50 -- координата Y метки (посередине графика) local secCodeLabel = tostring(info.sec_code)
}
AddLabel(chart_tag, label_params)
-- Выводим значение метки в сообщении message("Значение метки: " .. secCodeLabel) end
return 0 end
Так корректно? Метки по прежнему нет.
Скрипт
function OnInit() local labelValue = GetLabelParams("goodmode1", "Метка") message("Значение метки: " .. tostring(labelValue)) end
По прежнему отображает nill.
Получить sec_code из метки индикатора, Получить sec_code из метки индикатора
Пользователь
Сообщений: Регистрация: 14.06.2023
23.10.2023 20:24:47
Есть индикатор
Settings = { Name = "goodmode1" }
function Init() return 1 end
function OnCalculate(Index) if Index == 1 then local info = getDataSourceInfo() --message(info.sec_code)
-- Создаем метку с информацией sec_code local labelSize = 100 -- размер метки local labelX = 10 -- координата X метки (посередине графика) local labelY = 10 -- координата Y метки (посередине графика) local secCodeLabel = tostring(info.sec_code) AddLabel(labelX, labelY, secCodeLabel, RGB(255, 255, 0), labelSize)
-- Выводим значение метки в сообщении message("Значение метки: " .. secCodeLabel) end
return 0 end
График заякорен к ТТТ и при выборе инструмента в ТТТ выдает его название, вроде это название так же записывается в метку на графике ( метку кстати ни разу не получилось увидеть, надеюсь она есть)
Делаю скрипт что-бы при запуске скрипта, значение метки выводилось сообщением.
function OnInit() local labelValue = GetLabelParams("goodmode1", "Метка") message("Значение метки: " .. tostring(labelValue)) end
Такой скрипт отображает nill. Код вроде правильный, что не так? Как проверить есть ли метка?
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
19.10.2023 21:35:58
Спасибо. Теперь многое понятно. Попробую делать и брать метку.
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
19.10.2023 20:30:37
это работает
Settings = { Name = "goodmode" }
function Init() return 1
end
function OnCalculate(Index) if Index == 1 then local info = getDataSourceInfo(); message(info.sec_code) end return 0 end
Каким образом можно научить скрипт брать данные из этого индикатора? Нужно чтоб скрипт брал sec_code
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
19.10.2023 20:16:11
Круто. Дело двигается. Запускаю как индикатор код
Settings = { Name = "getDataSourceInfo_Example" }
function Init() return 1 end
function OnCalculate(index) seccode = getDataSourceInfo().sec_code message(seccode) end
После добавления этого индикатора к графику. Квик виснет, начинает пищать спикер в системнике. Квик приходится убивать через диспетчер задач. Можно как-то замедлить его ? Settings = { Name = "goodmode" }
function Init() return 1
end
function OnCalculate(index) sleep(5000) seccode = getDataSourceInfo().sec_code sleep(5000) message(seccode) sleep(5000) end
Не работает((
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
19.10.2023 18:00:22
Запускаю этот скрипт и ничего. Ни ошибок ни message. Что-то надо еще указать? У меня ТТТ 2 штуки, графиков штук 5, стакан открыт. Как привязать это к ТТТ. Почему ничего не происходит?
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
18.10.2023 17:04:19
Пожалуйста. Приведите пример кода из . Не понимаю я как применить эту функцию к конкретному индикатору. Как заставить ее срабатывать.
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
18.10.2023 09:28:37
Вот это поворот. А как тогда можно это реализовать? как-то же человек сделал это? и вот это? у меня только не работает не пойму почему.
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
Пользователь
Сообщений: Регистрация: 14.06.2023
18.10.2023 08:28:23
Идентификатор индикатора WW. Квик перезагружал многократно. Запускаю скрипт - даже ошибок не выдает. Ничего. Никакой реакции.
function OnCalculate(Index) if Index == 1 then local info = getDataSourceInfo("WW"); message(info.sec_code) end return 0 end
Код message('x= ' getNumCandles('WW')) отрабатывает замечательно, число свечей показывает мгновенно. Тоесть привязка по идентификатору WW работает. Что там может быть? Почему не работает код?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
16.09.2023 21:42:34
какой у Вас скрипт? мой не работает((
function GetDataSourceInfo() local info = getDataSourceInfo() if info ~= nil then -- Выводим информацию о доступных источниках данных for i, source in ipairs(info) do message("Источник данных #" .. i) message("Имя: " .. source.class_code) -- Имя источника данных message("Описание: " .. source.desc) -- Описание источника данных message("Код биржи: " .. source.market) -- Код биржи message("Тип инструмента: " .. source.sec_type) -- Тип инструмента message("------------------------------") end else message("Информация о доступных источниках данных не найдена.") end end
-- Функция, вызываемая при выборе строки в таблице ТТТ function OnSelectTTTRow(t_id, sel_index, sel_mode) if t_id == "TTT" and sel_mode == 1 then -- Получаем информацию о выбранной строке в таблице ТТТ local row_info = getRow(t_id, sel_index) if row_info ~= nil then -- Выводим информацию о выбранной строке в сообщении local message_text = "Выбрана строка в ТТТ:\n" message_text = message_text .. "Инструмент: " .. row_info[1] .. "\n" message_text = message_text .. "Цена: " .. row_info[2] .. "\n" message_text = message_text .. "Объем: " .. row_info[3] message(message_text) end end end
setCellScript("TTT", 1, OnSelectTTTRow)
GetDataSourceInfo()
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
06.09.2023 17:06:37
Индикатор должен быть обязательно хэндмэйд? А скрипт должен слушать и спать периодами?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
06.09.2023 13:57:18
Какой дикий колхоз приходится городить. Как не продумано. Спасибо Вам за объяснения. Попробую решить другую задачу. Она выглядит проще.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
06.09.2023 12:56:31
Задача такая. Есть график или стакан по одной акции. Нужно запустить скрипт и он должен отправить заявку по этой акции. Для заявки нужен sec_code. sec_code должен браться автоматом от графика или стакана. Графики и стаканы привязаны якорем к таблице с акциями. Тоесть я постоянно выбираю бумагу, она всегда разная. Какую выбрал хочу нажать кнопку скрипта и по этой бумаге пошла заявка. все параметры заявок знаю с этим все ок. А вот sec_code чтоб брался это проблема.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
06.09.2023 11:49:22
А по открытому стакану sec_code есть возможность получить?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
06.09.2023 08:30:14
Пробовал разные комбинации с getDataSourceInfo. Идентификатор ставил на Price и на индикатор Move Average.
такой код : local ticker_id = "graf2"
local datasource_info = getDataSourceInfo(ticker_id)
local sec_code = datasource_info.sec_code
message("Инструмент: " ..sec_code)
и такой код : tiker_id = "graf3"
local sec_code = getDataSourceInfo(tiker_id, "SEC_CODE")
message("Название акции: " ..sec_code)
Выдают одну и ту же ошибку.
lua:5: attempt to call a nil value (global 'getDataSourceInfo') Может торги еще не начались и по этому не работает. Вчера вроде getDataSourceInfo по всякому пытался вызвать, но не работало.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
05.09.2023 21:52:20
tiker_id = "WWWbond"
local sec_code = getSecurityInfo(tiker_id, "SEC_CODE")
message("Название акции: " ..sec_code)
дает ошибку attempt to concatenate a nil value (local 'sec_code')
пробовал "SHORTNAME" и"SEC_DESCRIPTION" вместо "SEC_CODE" - эта же ошибка.
Ошибка "attempt to concatenate a nil value" возникает, когда пытаемся объединить (сконкатенировать) строку с нулевым значением (`nil`). Это может произойти, если функция `getSecurityInfo()` не возвращает значение для запрошенного параметра. В данном случае, возможно, не удалось получить код инструмента для указанного `tiker_id`.
почему это не работает((( что за проклятье как тяжело получить этот SEC_CODE
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
05.09.2023 15:23:03
.lua:5: attempt to call a nil value (global 'getDataSourceInfo') ошибку выдает
local ticker_id = "graf3"
local datasource_info = getDataSourceInfo(ticker_id)
local sec_code = datasource_info.sec_code
message("Инструмент: " .. sec_code)
getDataSourceInfo в ванильном LUA для квика есть? что не так?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
05.09.2023 13:29:51
методы getItem, getParamEx, getSecurityInfo или другие. могут по идентификатору sec_code?
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
05.09.2023 11:56:38
Идентификатор назначен на Price. Тоесть именно на график. Хочу сделать сделку по этому графику. Для отправки ордера на сделку нужен sec_code. Как я могу его получить? Не задавать же его вручную. Знаю что можно из таблицы заявок вытащить local sec_code = last_order.sec_code. Должен же быть способ с графика открытого получить sec_code для заявки.
Как получить sec_code по идентификатору графика?, Как получить sec_code по идентификатору графика?
Пользователь
Сообщений: Регистрация: 14.06.2023
05.09.2023 09:36:56
Присвоил графику идентификатор WWWbond. Код работает. Выдает число свечек.
x = getNumCandles('WWWbond')
message('x= ' ..x)
Пытаюсь разными способами получить по этому идентификатору WWWbond sec_code. Никак не получается, такая возможность вообще есть?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 19:54:13
Спасибо. Начинаю чтение
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 17:09:18
1) Весь опыт пара калькуляторов на джавсакрипте и пара простеньких батников. 2) Пару недель пытаюсь что-то делать на Lua, и продолжаю, через полгода думаю буду знать больше. Недавно понял в main () слип не тормозит весь квик сразу, это был прорыв! 3) Ни разу, смотрю несистемно, кусками, скорее всего это неправильно, но заставить себя систематически штудировать я не в силах. У меня много вопросов, но ответов нет в документации, примеров там мало, нужной информации мало. Интерпритация почему произошла какая ошибка там нет, как LUA работает под квиком. Думаю что важнее понимать спецификацию работы квика с LUA (куча прог где LUA работает, но ведь код для каждой конкретной проги будет разный? или все везде одинаково? вот где в документах ответ на этот вопрос? только опытный тут ответит), у меня сберквик думаю под ним свои ньюансы работы и куча кода из примеров просто не работает под ним, надо напильником его дорабатывать.
У меня вроде простая задачка "Нажал скрипт с названием купить или скрипт с названием продать. И выставляется заявка с тейк профитом и стопом по бумаге с исполненной заявкой с таким же числом лотов который в исполненной заявке." Стоит ли от корки до корки все пройти что бы ее решить? Или это таки сложная задача?
Кстати она вообще выполнима средствами LUA на квике?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 16:37:53
Задача выставить заявку по данным которые взяты из последней заявки (название бумаги и число лотов).
1) Я зашел в бумагу, заявка исполнена.
2) Нажал скрипт с названием купить или скрипт с названием продать. И выставляется заявка с тейк профитом и стопом по бумаге с исполненной заявкой с таким же числом лотов который в исполненной заявке.
3) профит!
Но как взять название бумаги и число лотов из последней заявки?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 16:21:56
-- Входная точка для скрипта function main () -- Инициализируем параметры для запроса param_name_buy = "BUYDEPO" param_name_sell = "SELLDEPO" class_code = "SPBFUT" sec_code = "SiH9"
-- Запрошиваем ГО покупателя result = getParamEx (class_code, sec_code, param_name_buy) -- Выводим результат по ГО покупателя message( "Гарантийное обеспечение покупателя:\n".. "param_value = " .. tostring(result.param_value).. "; \n" ) -- Запрашвиваем ГО продавца result = getParamEx (class_code, sec_code, param_name_sell) -- Выводим ГО продавца message( "Гарантийное обеспечение продавца:\n".. "param_value = " .. tostring(result.param_value).. "; \n" ) end
Мне надо самому получить sec_code, а не задавать его самому. Есть какая-либо возможность получить это название акции? Из заявки или активного графика или стакана открытого? Если глупость говорю простите. Я нуб, побольше бы реальных рабочих примеров getParamEx или какого аналога.
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 15:54:37
Я пытался всякие библиотеки подключать, но не одну так и не смог. Слишком много вопросов где их качать в каком виде как к ним обращаться. Думаю на ванильном LUA для квика проще разобраться. Задачка вроде плевая название акции и количество лотов из последней снятой или исполненной заявки. Но не асиливаю, я нуб((( Где глянуть Ваш скрипт?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 15:24:27
function main() portfolio = getParamEx (STRING class_code, STRING sec_code, STRING param_name) message(tostring(portfolio)) end
Syntax error while compiling C:\Users\без п\Downloads\кнопка.lua: C:\Users\без п\Downloads\кнопка.lua:2: ')' expected near 'class_code'
Чем ему не нравится class_code?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 15:21:05
У меня задача получать из заявки (исполненной или снятой) название акции и число лотов. Но не получается совсем вытянуть эту инфу. Я постоянно упрощаю задачу в надежде получить хоть какой-то ответ по запросу. Запросить all по портфелю что может быть проще?
Пытаюсь получить название акции из последней заявки, конечно ошибку дает.
-- Получаем последнюю заявку local lastOrder = getNumberOf("orders") - 1 local orderClass = getClass("orders") local order = orderClass:sharedClonable()
Есть какой-нибудь код простенький что бы понять почему не работают эти запросы?
Скрипт который выставляет заявку исходя из объема портфеля и предыдущей исполненной заявки, Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
Пользователь
Сообщений: Регистрация: 14.06.2023
14.06.2023 15:01:12
Возникают непонятные проблемы с запросом информации о портфеле и заявке. Постоянно возвращается nil, что бы не спросил.
function main() portfolio = getPortfolioInfo("all") message(tostring(portfolio)) end
ИЛИ
function main() portfolio = getParamEx("all") message(tostring(portfolio)) end
Думаю где-то что-то я сильно не понимаю. Мнение такое что getPortfolioInfo и getParamEx не имеет доступа к портфелю или таблице заявок. Параметры бумаг конкретных могу получать. Например цену последней сделки Лукойла выдает легко. Использую Сберквик. Куда копать?