Верно, это не эквивалент. Т.е. так можно, но нужно ли - вопрос. Мы же с Вами подобное уже обсуждали в предыдущей ветке:
Конфликт коллбэков
Пользователь
Сообщений: Регистрация: 31.03.2016
04.02.2019 07:14:38
Будьте добры, опишите, в чем было решение Вашей проблемы.
Редактирование архивов скриптом lua
Пользователь
Сообщений: Регистрация: 31.03.2016
23.01.2019 12:12:54
Если содержимое необходимого файла известно скрипту без его открытия (т.е. не требуется распаковывать архив), можно сохранять новое содержимое в файл с нужным именем в любом месте, а потом вызывать консольную команду добавления к архиву ( "7z.exe" или т.п. ).
А если требуется распаковка, то, возможно, это можно так же точечно сделать через консольную команду.
Корректная рекурсия, Как корректно оформить рекурсию в Lua (функция ссылается сама на себя)
Пользователь
Сообщений: Регистрация: 31.03.2016
18.01.2019 06:46:10
Цитата
Иван Ру написал: При предложенном Вами исполнении, Павел Bosco, функция InitEveryDay будет вызваться в лучшем случае единожды за все время работы скрипта -- тогда когда будет впервые установлено соединение с сервером. Выше несколько раз было сказано, что необходима ежедневная реинициализация параметров, т.е. многократное обращение к функции InitEveryDay
В Вашем изначальном варианте InitEveryDay точно так же вызывается единожды при старте скрипта.
Если требуется "ежедневная переинициализация" в InitEveryDay ● проверяйте isConnected() ● проверяйте дату торгов getInfoParam ("TRADEDATE ") и если она измененилась по сравнению с предыдущей запомненной делайте, что Вам требуется ● если работаете из одного и того же часового пояса, проверяйте локальное время, почему нет! ● откажитесь от рекурсии, она вводит Вас в заблуждение. Сейчас у Вас в коде рекурсия ради рекурсии, а не достижения цели. Обычный while вполне сгодится.
Корректная рекурсия, Как корректно оформить рекурсию в Lua (функция ссылается сама на себя)
Пользователь
Сообщений: Регистрация: 31.03.2016
17.01.2019 14:14:20
Цитата
Иван Ру написал: "Во вторых, как уже было сказано, нежелательно их использовать только в колбеках, а значит..." Насколько я понимаю, функцию InitEveryDay, где имеется рекурсия не относится к коллбэкам.
А вызываете Вы её как раз в коллбэке - в OnInit
Цитата
Иван Ру написал: function OnInit() ... InitEveryDay () -- ежедневная инициализация end
откуда x
Пользователь
Сообщений: Регистрация: 31.03.2016
16.01.2019 06:41:50
Цитата
Let_it_go написал: Почему второй принт выводит 2, а не 1? Ведь во второй строчке идёт обнуление переменной i. Она не может сохранить старое значение 1 и превращается в 0. Откуда 2?
Получается, что 1 будут выводить только такие принты, в которых будет создаваться новый экземпляр newCounter вместе с новым нулевым i:
SDL написал: Потому что функция c1, которая создана вызовом newCounter(), - не простая функция, а т.н. "замыкание". Она не просто может сохранить старое значение 1, она это делает, т.к. переменная i является для этой функции внешней, и именно для этого подобные конструкции и предусмотрены. См., например: %B5_(%D0%BF%D1%80%D...
Прикольно) Спасибо!
Как инициировать запуск функции в lua-скрипте снаружи Квика?
Пользователь
Сообщений: Регистрация: 31.03.2016
10.01.2019 07:55:17
Для создание заявок из внешних программ, возможно, стоит взглянуть на Trans2QUIK API Trans2QUIK.dll. или Импорт транзакций (tri/tro-файлы). Описаны в Руководстве пользователя QUIK (info.chm) Раздел 6. Совместная работа с другими приложениями. Примеры там же. Но тогда не доступны все плюшки QLua по получению графиков, инфы о портфеле и инструментах.
Если всё-таки через файл, то придётся придумывать свой протокол.
Как инициировать запуск функции в lua-скрипте снаружи Квика?
Пользователь
Сообщений: Регистрация: 31.03.2016
10.01.2019 06:59:23
Цитата
Алексей Шабашов написал: Доброго всем дня. 1. Я правильно понимаю, что другая программа никак не может взаимодействовать с lua-скриптом в Квике? 2. Что если так: внешняя программа пишет в файл, а скрипт проверяет в цикле содержимое файла - как увидел нужное значение - запустил функцию - отписал в этот файл результат. Как думаете возможно такое? Заранее спасибо.
Добрый день!
1. Что подразумеваете под "взаимодействием"? Обмен информацией, запросы, вызов команд? 2. Да, такое вполне возможно. Аналогично использованию файловой системы можно задействовать базу данных, сокеты, человека, ...
в чем ошибка в коде?, просмотр таблицы заявок
Пользователь
Сообщений: Регистрация: 31.03.2016
28.12.2018 08:49:54
Цитата
vgi написал: Вот как можно делать с key-value таблицами Lua, когда key - это строка:
Код
local key = "TheKey"
local t = { key = "value" }
print ( t[key] ) -- 1ый вариант, через квадратные скобки, используя имя ключа
print ( t.TheKey ) -- 2ой вариант, через точку, используя сам ключ
Во втрой строке должно быть естественно
Код
local t = { [key] = "value" }
-- или
local t = { TheKey = "value" }
в чем ошибка в коде?, просмотр таблицы заявок
Пользователь
Сообщений: Регистрация: 31.03.2016
28.12.2018 08:40:38
Все варианту тут: При этом у 2ого варианта есть ограничения: строка не должна начинаться с цифр и содержать спец.символы, кроме '_'.
в чем ошибка в коде?, просмотр таблицы заявок
Пользователь
Сообщений: Регистрация: 31.03.2016
28.12.2018 08:33:38
Вот как можно делать с key-value таблицами Lua, когда key - это строка:
Код
local key = "TheKey"
local t = { key = "value" }
print( t[key] ) -- 1ый вариант, через квадратные скобки, используя имя ключа
print( t.TheKey ) -- 2ой вариант, через точку, используя сам ключ
в чем ошибка в коде?, просмотр таблицы заявок
Пользователь
Сообщений: Регистрация: 31.03.2016
28.12.2018 08:32:19
Цитата
Андрей написал: И упрощенный вариант не работает, может в синтаксисе что то не так?
local depo = getDepoEx ("MC0003300000", "555555", "SU26225RMFS1", "L01-00000F00", 2)
...
Пробовал, сама первая строка, которую вы предлагаете вышибает скрипт.
Помимо рисковать, ещё любите спамить)) Попробуйте кнопку Просмотр перед тем, как Отправить. На форуме нет возможности исправить/удалить сообщение.
А по делу. Ситуация странная, надеюсь АРКА поможет. Как бы то ни было, надо, чтобы ошибки не вышибали скрипт. Используйте pcall / xpcall и логгируйте ошибки.
Поделитесь, кто как отслеживает факт "готовности свечи"?
Пользователь
Сообщений: Регистрация: 31.03.2016
27.12.2018 09:59:24
Цитата
Андрей написал: где можно посмотреть чем отличаются различные модули квика при обновлении, это где то пишется? Я тупо обновляю программу, что приходит, а что там обновилось не имею представления. Может где то можно почитать или это не имеет особого значения при работе программы?
Это важная информация, особенно если касается lua.
горизонтальные объёмы - доживу ли?
Пользователь
Сообщений: Регистрация: 31.03.2016
27.12.2018 07:36:11
Цитата
Zoya Skvorcova написала: ... В тоже время возможности сделать "всё и сразу" мы не имеем ...
Наконец-то исчерпывающий ответ на пресловутый вопрос "Почему в QUIKе до сих пор не ... ?". Стоит сохранить ссылку на него, и репостить при очередной необходимости.
getDepoEx, Ошибки при выполнении функции
Пользователь
Сообщений: Регистрация: 31.03.2016
27.12.2018 07:28:00
Цитата
Kolossi написал: Добрый день ! Столкнулся с проблемой при использовании данной функции. ... y=getDepoEx ("MC0003300000", "555555", "SU26225RMFS1", "L01-00000F00", 2).currentbal
Добрый день!
Вы любите рисковать)) В lua, как в динамически типизированном языке, стоит всегда добавлять проверки на null, а потом уже доставать из переменной значения, как из таблицы:
Код
local depo = getDepoEx ("MC0003300000", "555555", "SU26225RMFS1", "L01-00000F00", 2)
local currentbal = depo and depo.currentbal
or 0 -- например
Интерфейс в Lua, Диалог из Lua
Пользователь
Сообщений: Регистрация: 31.03.2016
20.12.2018 06:52:27
Цитата
Юрий С написал: К сожалению столкнулся сразу же со следующей проблемой : при незначительных изменениях в исходном тексте программы: сделал ошибку, исправил, заново скрипт не запустился, выдал ошибку: Unknown error. Possible unhandled exeption Вернулся к исходному тексту вашей программы. скрипт запускаться так же не желает ошибка та же : Unknown error. Possible unhandled exeption И только после перезагрузки Квика , скрипты запускаться стали. Почему так происходит ?
Понять, почему так получается, не удалось, впрочем, сильно не разбирался. Лечится только перезапуском Квика. Спрашивать у АРКИ об этой проблеме бесполезно, т.к. она возникает из-за сторонней библиотеки. Стоит сделать так: отладить скрипт, максимально исключив возможное появление подобной ошибки. Далее работает вполне стабильно, немного утомляя из-за однопоточности и sleep после iup.LoopStep() .
Интерфейс в Lua, Диалог из Lua
Пользователь
Сообщений: Регистрация: 31.03.2016
19.12.2018 07:42:58
На русском языке документации iup нет. Пусть это Вас не смущает, вставши на путь программирования.
Если что-то будет не понятно про iup, можете открыть новую тему с пометкой iUP , попробуем разобраться.
Интерфейс в Lua, Диалог из Lua
Пользователь
Сообщений: Регистрация: 31.03.2016
17.12.2018 07:15:08
Попробуйте так:
Скрытый текст
Код
local function addLuaForWindowsToLuaPath(luaForWindowsPath)
package.cpath = "./?.dll;./?51.dll;"
.. luaForWindowsPath .. "?.dll;"
.. luaForWindowsPath .. "?51.dll;"
.. luaForWindowsPath .. "clibs/?.dll;"
.. luaForWindowsPath .. "clibs/?51.dll;"
.. luaForWindowsPath .. "loadall.dll;"
.. luaForWindowsPath .. "clibs/loadall.dll;"
.. package.cpath
package.path = package.path
.. ";./?.lua;"
.. luaForWindowsPath .. "lua/?.lua;"
.. luaForWindowsPath .. "lua/?/init.lua;"
.. luaForWindowsPath .. "?.lua;"
.. luaForWindowsPath .. "?/init.lua;"
.. luaForWindowsPath .. "lua/?.luac;"
end
addLuaForWindowsToLuaPath("C:/Program Files/Lua/5.1/")
require("iuplua")
require("iupluacontrols")
local iup = iup
local function initializeDialog()
local btn_addSec = iup.button { title = "Add security" }
function btn_addSec:action()
iup.Message(config.name, self.title..":action()")
end
local vbox = iup.vbox{
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
btn_addSec
;margin="5x5", gap="2", scrollbar = "VERTICAL",
}
local dlg = iup.dialog{ vbox; title = "My title",
--size = "HALFxQUARTER",
rastersize = "800x300",
}
function dlg:close_cb()
local a = iup.Alarm( dlg.title, "Завершить работу?", "Да", "Нет" )
if a == 1 then
interrupted = true
return iup.CLOSE
else
return iup.IGNORE
end
end
return dlg
end
function main()
local dlg = initializeDialog()
dlg:show()
while not interrupted do
iup.LoopStep()
sleep(50)
end
dlg:hide()
dlg:destroy()
end
Данные из стакана котировок
Пользователь
Сообщений: Регистрация: 31.03.2016
14.12.2018 10:59:32
Цитата
Женя Логинов написал: И вообще получается, что если сделка прошла до того как котировка попала в стакан- тогда она НЕРЫНОЧНАЯ!
Это всё равно, что считать каплю не дождевой из-за того, что она стекла с лобового стекла автомобиля до того, как её смахнул стеклоочиститель.
Стакан отображается срезами, но заявки в нём исполняется непрерывно.
написал: iup входит в стандартную LuaForWindows 5.1.4.0
Подскажите, плиз, где скачать LuaForWindows 5.1.4.0 и как установить его в квике, насколько я понял луа в квике встроенный , у меня установлен квик версии 7.18.1.20, но он на iup ругается не видит модули ?
Скачиваете, устанавливаете. В скрипте не забудьте добавить путь к LuaForWindows в package.path. Захочется добавить в окошки что-то поинтереснее - документация очень хорошая, исчерпывающая, будет лежать в каталоге установленной LuaForWindows.
Интерфейс в Lua, Диалог из Lua
Пользователь
Сообщений: Регистрация: 31.03.2016
13.12.2018 12:31:40
iup входит в стандартную LuaForWindows 5.1.4.0
Интерфейс в Lua, Диалог из Lua
Пользователь
Сообщений: Регистрация: 31.03.2016
13.12.2018 12:29:24
Цитата
Юрий С написал: Т.е. если я правильно понял средствами QLua невозможно вывести окно, как например в Java, в котором будут например две кнопки "Да" и "Нет" и проанализировать какая из них нажата ?
Да можно, конечно. Вот же
Цитата
_sk_ написал: Для реализации диалогов и окон мы пробовали использовать библиотеку iplua. Только интерфейс при этом тормозит из-за особенностей многопоточности в QLua в нашей конкретной реализации.
Только библиотека называется iup.
Код
require("iuplua")
require("iupluacontrols")
local iup = iup
local function initializeDialog()
local btn_addSec = iup.button { title = "Add security" }
function btn_addSec:action()
iup.Message(config.name, self.title..":action()")
end
local vbox = iup.vbox{
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
iup.button{ rastersize = "700x100", title = "1", },
btn_addSec
;margin="5x5", gap="2", scrollbar = "VERTICAL",
}
local dlg = iup.dialog{ vbox; title = config.name,
--size = "HALFxQUARTER",
rastersize = "800x300",
}
function dlg:close_cb()
local a = iup.Alarm( dlg.title, "Завершить работу?", "Да", "Нет" )
if a == 1 then
interrupted = true
return iup.CLOSE
else
return iup.IGNORE
end
end
return dlg
end
function main()
local dlg = initializeDialog()
dlg:show()
while not interrupted do
iup.LoopStep()
sleep(50)
end
dlg:hide()
dlg:destroy()
end
Данные из стакана котировок
Пользователь
Сообщений: Регистрация: 31.03.2016
11.12.2018 10:08:52
Цитата
Женя Логинов написал: Через настройки получения данных отключены все рынки кроме ФОРТС, в рынке выбран только один инструмент - фьюч сбера; выбраны параметры лучшие цены спроса и предложения, и размеры спроса и предожения. Обезличенные сделки-отключены все рынки. Таким образом, думаю я исключил получение левых данных. В терминале открыт стакан по выбранному фьючерсу. В коде я задал переменные для класса и кода бумаги. И если удалось подписаться на заданный стакан, то ду вайл...
Это всё равно, что вместо вентиля на смесителе, перекрывать подачу на водоснабжающей станции, чтобы уменьшить напор воды в кране.
Цитата
Женя Логинов написал: То есть даже для 10 бумаг нужно прописать все 10 проверок- выглядит не очень удобно. Или же есть другой способ?Спасибо
Можно создать таблицу с ключами из seccode+classcode и значениями в виде методов, которые выполняют нужные дейтсвия, и вызывать эти методы прямо в onQuote, если не жалко основной поток QUIKа.
написал: почекать пару раз в год такая уж проблема?
Любопытная вообще концепция, 1. Удалить вручную пару файлов. 2. Отключить вручную обновления. 3. Не забыть что уже полгода не чекал (других забот человеку мало))) Возникает на самом деле вопрос о квалификации того кто такой дистр собрал. ИМХО разумеется.
Вы можете обратиться к своему брокеру, чтобы он исключил файл WinRos.exe из списка файлов обновления. Сошлитесь на эту ветку обсуждения, но скорее всего ответ будет отрицательным, потому что "вдруг кто-то ещё использует".
От какого времени вести отчет для создания своего таймфрейма?
Пользователь
Сообщений: Регистрация: 31.03.2016
30.11.2018 12:09:42
Код
local date = os.date("*t")
local timeFromDate = os.time(date)
local dateFromTime = os.date("*t",timeFromDate)
Разлогиниться принудительно на другом компе
Пользователь
Сообщений: Регистрация: 31.03.2016
16.11.2018 06:43:22
1. Позвонить брокеру, пусть разорвёт ту сессию. 2. Или заранее, если возможно, сделать удаленный доступ из дома к компьютеру на работе. Тогда можно будет подключиться и закрыть Квик самому. 3. Можно наоборот - сделать удаленный доступ с работы на домашний компьютер. Пусть он постоянно работает, а Вы подключайтесь к нему по удаленке и работайте в Квике. 4. Если оставленный на работе Квик - не проблема безопасности [для Вас], брать у брокера 2 Квика, привязанных к одним счетам. Пусть один запущен на работе, другой - дома. Торгуйте и там и там одновременно.
Работа со строками LUA
Пользователь
Сообщений: Регистрация: 31.03.2016
12.11.2018 06:41:50
Удалить все такие подстроки:
Код
local str = "Here it is not necessary to remove[it should be removed] this is also not necessary [kasjdhkjadhkajsh]to (sdlfjsdlk!@kdlsaj) remove"
print("origin str: ",str)
str = str:gsub("%[[^]]*%]",""):gsub("%([^)]*%)","") -- remove all occurencies of [substr] and (substr)
print("gsubed str: ",str)
out: D:\lua\tmp>lua tmp_20181112.lua origin str: Here it is not necessary to remove[it should be removed] this is also not necessary [kasjdhkjadhkajsh]to (sdlfjsdlk!@kdlsaj) remove gsubed str: Here it is not necessary to remove this is also not necessary to remove
Между ними стоит добавить какой-то минимальный курс по программированию
Д-акции
Пользователь
Сообщений: Регистрация: 31.03.2016
06.11.2018 14:47:41
Обратиться к брокеру
Недосистема Quik, Недосистема Quik
Пользователь
Сообщений: Регистрация: 31.03.2016
31.10.2018 07:12:15
Цитата
Zoya Skvorcova написала: В настройках терминала Вы можете задавать иные горячие клавиши
Зоя, сожалею, что приходится писать в тему с таким "эмоциональным" названием, но подскажите, как задать сочетание клавиш для вызова окна доступных lua-скриптов? При поиске в редакторе по сочетаниям клавиш и описаниям команд строки "lua" пусто, в то время как Qpile-скрипты оккупируют Ctrl+F11. Но Qpile мертв, в отличие от QLua. Если через Редактор горячи клавиш это сейчас не возможно, то просьба также добавить в пожелания на доработку возможность назначать сочетание и для вызова lua-скриптов, а ранее зарегистрированое пожаление на назначение сочетания именно Ctrl+F12 для вызова Lua-скриптов тогда можно закрыть.
local graphic_id = "RIZ8_PRICE_M1"
function main()
local N=getNumCandles(graphic_id)
local t,n,l=getCandlesByIndex(graphic_id, 0, N-2, 2)
if t[0].low>t[1].low
and (t[1].high-t[1].low)/3>(t[1].high-t[1].close)
then
message("Возможна точка входа на "..graphic_id..", BUY!",2)
end
end
А что у Вас в Options - Open lua.properties в command.go.*.lua ? Опять с путями к lua.exe проблема, судя по всему. Добавьте путь к lua.exe в переменные среды, а в SciTe в lua.properties в command.go.*.lua поставьте lua как тут:
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 31.03.2016
29.10.2018 06:44:45
Цитата
Андрей написал: Что квику могло в коде не понравиться?
В ошибке же написано, что ему не нравится, что к sum прибаляется C(i), который равен nil.
Возможно, стоило сделать так: sum = sum + ( C(i) or 0 )
Отображение идентификатора графика в сообщении
Пользователь
Сообщений: Регистрация: 31.03.2016
29.10.2018 06:30:38
Задавайте идентификатор графика в QUIKе в виде SECCODE_INDICATOR_TIMEFRAME_PARAMS, напр RIZ8_MACD_60_15 или SiH0_PRICE_1D А потом в Lua, перебирая все заданные вами идентификаторы графиков, парсите их, получая, соответственно, инструмент, тип графика(индикатора), таймфрейм и список параметров.
Вопросы по LUA
Пользователь
Сообщений: Регистрация: 31.03.2016
26.10.2018 06:38:47
Цитата
Виктор Столетов написал: можно выделить блок текста и нажать Tab. Но тогда сдвигает блок на целых четыре клетки. Вопрос: можно ли сдвинуть блок текста вправо всего на одну клетку?
Что Вы подразумеваете под "клеткой"? Если это "пробел", то сделайте в "Опции - Настройки... - Синтаксисы - Настройка Табуляции - Размер табул. 1 и √ Заменить пробелом" и табайте блоки на один пробел влево-вправо.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 31.03.2016
25.10.2018 12:12:07
Цитата
RLarisa написал: [QUOTE] написал: у меня они вроде бы есть
Вы показываете на скриншоте SVZ8, а в lua запрашиваете инфу по CVZ8.
По SVZ8 даёт такое:
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 31.03.2016
25.10.2018 07:03:58
Цитата
RLarisa написал: у меня так же выходит, но шаг цены не может быть ноль)
Возможно, у Вас так же, как у меня, нет этого инструмента в QUIKе? Поиск по коду не даёт результатов. Отсюда и 0.
1) c:\dir > lua.exe hello.lua Прямо так и запускали? =) Так разве вообще можно?
2) C:\Program Files\Lua\5.1>lua.exe hello.lua Из той же оперы(про ">"), наверное. У меня на такое пишет: "C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
3) C:\Program Files\Lua\5.1\lua.exe hello.lua Надо было так: "C:\Program Files\Lua\5.1\lua.exe" hello.lua
А вообще лучше C:\Program Files\Lua\5.1\lua.exe добавить в переменные среды, и тогда можно будет запускать скрипты из любого места так: lua script.lua
dofile в защищённом режиме
Пользователь
Сообщений: Регистрация: 31.03.2016
25.09.2018 06:57:42
Цитата
Let_it_go написал: хм... а как мне в функцию foo передать параметр?
Обращайтесь к мануалу по Lua. Вот же ответ на Ваш вопрос:
Цитата
Enfernuz написал: pcall принимает функцию, значит, нужно передать ему функцию:
Код
pcall ( function () foo("privet) end )
Такое обворачивание нужно только для xpcall, который в Lua 5.1 ещё не умеет принимать аргументы для принимаемой функции (в Lua 5.2 уже умеет).
Для pcall достаточно делать так:
Скрытый текст
Код
local f = function(...)
if #{...} == 0 then
error("no args!")
else
return ...
end
end
print("pcall(f) with args")
local res,return1,return2 = pcall( f, "arg1", "arg2" )
if res then
print(return1,return2)
else
print("ERROR: ",return1)
end
-- pcall(f) with args
-- arg1 arg2
print("pcall(f) with no args. Catch exception")
local res,return1,return2 = pcall( f )
if res then
print(return1,return2)
else
print("ERROR: ",return1)
end
-- pcall(f) with no args. Catch exception
-- ERROR: D:\PATH\TO\source.lua":3: no args!
dofile в защищённом режиме
Пользователь
Сообщений: Регистрация: 31.03.2016
24.09.2018 14:38:47
Цитата
Новое сообщение на форуме пользователей QUIK в теме «dofile в защищённом режиме» от пользователя dygroutty:
T_FuturesHolding = getFuturesHolding(Settings.FIRM_ID,Settings.ACCOUNT,Settings.SECCODE, 0)
totalnet = T_FuturesHolding and T_FuturesHolding.totalnet or 0
Не могу войти в Quik, Получил ключ от сбербанк скачал Quik но не могу войти пишет неверное имя иле пароль
Пользователь
Сообщений: Регистрация: 31.03.2016
14.09.2018 06:46:28
К брокеру обращались? Такие вопросы с ним решаются.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
Пользователь
Сообщений: Регистрация: 31.03.2016
30.08.2018 10:43:35
Проблема, имхо, в том, что в таблице FUTURES_CLIENT_HOLDING присутствуют "технические лимиты" по фьючам, у которых Торговый счет - это строка из цифр, которые не должны отображаться обычным пользователям, и количество которых изменяется после загрузки лимитов по фьючам в Квик.
К примеру, у меня количество FUTURES_CLIENT_HOLDING выросло после старта торгов с 264 до 275, при этом сразу долгое время прыгало с 264 на 265 и обратно.
Скрытый текст
Код
local Misc = require("Misc")
local function writeTtoFile(fn)
local f = io.open(fn,"w+")
for i=0,getNumberOf("FUTURES_CLIENT_HOLDING")-1 do
local t = getItem("FUTURES_CLIENT_HOLDING",i)
f:write(Misc.asString(t),"\n")
end
f:close()
end
local function run()
local _c
local _t = os.time()
local c_err = 0
while true do
local c = getNumberOf("FUTURES_CLIENT_HOLDING")
if _c ~= c then
message("c = "..tostring(c),1)
if _c then c_err = c_err + 1 end
_c = c
--message( "_c ~= c "..tostring(_c).." ~= "..tostring(c), 3 )
local fn = getScriptPath().."\\FUTURES_CLIENT_HOLDING\\FUTURES_CLIENT_HOLDING_"..os.date("%Y%m%d_%H%M%S")..".lua"
writeTtoFile(fn)
end
sleep(10)
local time = os.time()
if time - _t > 10 then
message("Количество неправильных количеств: "..tostring(c_err).." (_c = "..tostring(_c)..")",1)
_t = time
end
end
end
function main()
local ok,res = pcall(run)
if not ok then
message( tostring(res),3 )
message( tostring(debug.traceback()),3 )
end
end
Верно ли, что проблема в технических лимитах ?
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице