if not column then column = QTABLE_NO_INDEX end
if color == "Голубой" then SetColor (id, line, column, RGB (173,216,230), RGB(0,0,0), RGB (173,216,230), RGB(0,0,0)) end
if color == "Белый-Красный" then SetColor (id, line, column, RGB(255,255,255), RGB(217,20,29), RGB(255,255,255), RGB(217,20,29)) end
if color == "Желтый" then SetColor (id, line, column, RGB (255,255,0), RGB(0,0,0),RGB (255,255,0), RGB(0,0,0)) end
if color == "Серый" then SetColor (id, line, column, RGB (230,230,230), RGB(0,0,0),RGB (230,230,230), RGB(0,0,0)) end
if color == "Синий" then SetColor (id, line, column, RGB (44,112,188), RGB(255,255,255),RGB (44,112,188), RGB(255,255,255)) end
if color == "Оранжевый" then SetColor (id, line, column, RGB (255,165,0), RGB(0,0,0),RGB (255,165,0), RGB(0,0,0)) end
if color == "Зеленый" then SetColor (id, line, column, RGB (165,227,128), RGB(0,0,0),RGB (165,227,128), RGB(0,0,0)) end
if color == "Красный" then SetColor (id, line, column, RGB (255,168,164), RGB(0,0,0),RGB (255,168,164), RGB(0,0,0)) end
ServerTime = getInfoParam("SERVERTIME")
if ServerTime == nil or ServerTime == 0 or ServerTime == "" then
ServerTime = "00:00:00"
end
SetCell(t_id, 9, 1, tostring(ServerTime));Color("Желтый", t_id, 9, 1)
if stop_on == 0 then
SetCell(t_id, 9, 2, tostring("x Stop при 0"));Color("Желтый", t_id, 9, 2)
else
SetCell(t_id, 9, 2, tostring("v Stop при 0"));Color("Желтый", t_id, 9, 2)
end
Color("Голубой", t_id, 9, 3)
end
function FindPrice(sec_code, class_code)
local AktivPrice = tonumber(getParamEX(class_code, sec_code, "LAST").param_value)
if AktivPrice == nil then
AktivPrice = tonumber(getParamEX(class_code, sec_code, "PREVPRICE").param_value)
end
return AktivPrice
end
function main()
ReadTable()
CreateTable()
end
Помогите разобраться не могу запустить робота в квике выдает ошибку 23: bad argument #2 to 'read' (invalid format)
уже все перепробовал
Добрый день. Хотел бы самостоятельно написать прогу которая будет работать по типу кластеров в приводах типа Qskalp и Cscalp, т.е. считать разницу покупок и продаж в моменте (за определенный промежуток времени) и выдавать соответствующее оповещение к примеру если превышено какое-то значение. Прошел бесплатные курсы по программированию, научился работать с гитом). В общем ноль в программировании. Подскажите с чего начать. Думаю надо брать данные из таблици обзличенных сделок. Но как что делать?
Как удаленно запускать и останавливать Lua - скрипты из сторонней программы?
Вывожу данные через LUA - скрипт и UDP - Сокет в скринер написанный на С. Возник вопрос: есть ли вариант запуска и остановки LUA - скриптов сторонней программой? Придумал костыльный вариант остановки(через запись ключевого слова в текстовый файл) и еще более костыльный вариант запуска(через HWND окна). Может можно как-то стартануть скрипт, например через изменения реестра, ini - файла, может Хексом библиотеку какую-нибудь подправить и т.д.???
Коллеги, есть ли код для имитации ds? Суть кода: прочитать данные из файла csv и присвоить прочитанное ds, чтобы читалось так же, как и createdatasource.
Здравствуйте!
Периодически вылетает ошибка: "Необработанное исключение по адресу
0x000007F9EC5C9D19 (ntdll.dll) в info.exe: 0xC0000374: Куча была повреждена
(параметры: 0x000007F9EC61E5F0)". Часто если в коде lua указано: "sleep(1)".
Ошибка чтения в точке "lua_pushstring(L, (char*)(pb))".
Как её избежать?
1
2
lua_pushstring(L,(char*)(pb));for(int i =0; i <256; i++)pb[i]='\0';
1
2
3
QluaCSharpConnector.SendQuote(Quote);
local CommandStr = tostring(QluaCSharpConnector.GetCommand());
sleep(1);
Microsoft Visual Studio Enterprise 2015
Версия 14.0.24720.00 Update 1
Microsoft .NET Framework
Версия 4.6.01055
Здравствуйте!
Периодически вылетает ошибка: "Необработанное исключение по адресу
0x000007F9EC5C9D19 (ntdll.dll) в info.exe: 0xC0000374: Куча была повреждена
(параметры: 0x000007F9EC61E5F0)". Часто если в коде lua указано: "sleep(1)".
Ошибка чтения в точке "lua_pushstring(L, (char*)(pb))".
Как её избежать?
1
2
3
4
...
lua_pushstring(L, (char*)(pb));
for (int i = 0; i < 256; i++)pb[i] = '\0';
...
1
2
3
4
5
...
QluaCSharpConnector.SendQuote(Quote);
local CommandStr = tostring(QluaCSharpConnector.GetCommand());
sleep(1);
...
Microsoft Visual Studio Enterprise 2015
Версия 14.0.24720.00 Update 1
Microsoft .NET Framework
Версия 4.6.01055
Здравствуйте товарищи! При экспорте данных из квика самый длительный этап - ожидание их поступления при заказе с сервера:
1
ds:SetEmptyCallback()-- вот эта штучка
Экспортирую данные графиков, порядочно. При повторном запуске экспорта хотелось бы пропустить графики, по которым не появилось новых данных с момента предыдущего экспорта, чтобы не тратить несколько секунд на заказ данных.
Кто-нибудь решал эту проблему?
Я пробую использовать параметры инструмента из таблицы всех сделок. Сохраняю несколько значений, полученных на момент заказа данных графика, отакие вот:
1
2
3
4
5
6
TRADE_DATE_CODE -- Дата торговTIME-- Время последней сделки
LAST -- Цена последней сделки
VALUE -- Оборот в деньгах последней сделки
CHANGETIME -- Время последнего изменения
STATUS -- Если торговался на момент заказа данных то всегда заказываю данные заново
Если при следующем запуске они отличаются - тогда подписываюсь на график и уже смотрю конкретно, что поменялось. Но это костыль, может есть какая-то хитрость или отточенный способ, или я что-то в доке пропустил?
Добрый день!
1. А вы учли, что при дисконекте и повторном соединении нужно отписаться от источников и подключить их заново, иначе данных просто не будет?
2. Обезличенные сделки брокеры любят не транслировать, т.е. такой костыль априори не подходит.
3. Графики, это зрительный обман и ничего более, если очень нужно - стройте свои, на основании таблицы обезличенных сделок, тогда думать нужно будет только о пункте 2.
4. Если по другому никак, то OnParam вам в руки, подписываетесь на параметр "оборот" и если он не ноль, то сделки есть и нужно подключить источник.
Вопрос решился? Я тоже самое с тиками пытаюсь сделать, если подключаюсь в 14.00, данные через CreateDataSource по всем инструментам грузит за всё предыдущее время. Прогоняю в цикле Size, пока он не будет равен предыдущему, только потом считываю нужные мне данные, очень костыльно как-то получается. OnAllTrade работает лучше, но идет нагрузка на проц и каждые полчаса Квик дисконектит.
Привет народ, кто-нибудь собирал LuaSQLite3.dll для работы со скриптом? Я нашел в интернетике уже собранные неизвестным мне человеком, но там может быть все что угодно внутри зашито, хотелось бы самому собрать. Кто может что подсказать посоветовать? Может где-то на сайте уже есть?
---------------------------------------
name_bot = "сеточный бот"
version = "2.0"
Name = "сеточный боты"
-------------------------------------
depo = ""
class = "SPBFUT"
FileStart = getScriptPath().."\\".."1.txt"
------------------------------------
last_price = 0
ticker = ""
min_step = 0
min_take = 0
size_lot = 0
max_lot = 0
trades_work = 0
orient_trade = 0
stop_on = 0
---------------------------------
function ReadTable()
local f = io.open(FileStart, "r+")
if f then
comment, ticker = f:read(16, "1")
ticker = string.gsub(ticker, "%s+", "")
comment, orient_trade =f:read(16, "1")
orient_trade = string.gsub(orient_trade, "%s+", "")
orient_trade = tonumber(orient_trade)
comment, size_lot =f:read(16, "1")
size_lot = string.gsub(osize_lot, "%s+", "")
size_lot = tonumber(size_lot)
size_lot = math.abs(size_lot)
comment, min_step =f:read(16, "1")
min_step = string.gsub(osize_lot, "%s+", "")
min_step = tonumber(min_step)
min_step = math.abs(min_step)
comment, min_take =f:read(16, "1")
min_take = string.gsub(min_take, "%s+", "")
min_take = tonumber(min_take)
min_take = math.abs(min_take)
comment, max_lot =f:read(16, "1")
max_lot = string.gsub(max_lot, "%s+", "")
max_lot = tonumber(max_lot)
max_lot = math.abs(max_lot)
f:close()
else
SaveStart()
end
end
--------------------------------------------------
function SaveStart()
local f = io.open(FileStart,"w")
f:write("Инструмент :"..ticker.."\n")
f:write("Позиция :"..trades_work.."\n")
f:write("Напровление :"..orient_trade.."\n")
f:write("Размер лота :"..size_lot.."\n")
f:write("Шаг :"..min_step.."\n")
f:write("Тейк :"..min_take.."\n")
f:write("Максимум лотов:"..max_lot.."\n")
f:close()
end
------------------------------------------------
function Color(color, id, line, column)
if not column then column = QTABLE_NO_INDEX end
if color == "Голубой" then SetColor (id, line, column, RGB (173,216,230), RGB(0,0,0), RGB (173,216,230), RGB(0,0,0)) end
if color == "Белый-Красный" then SetColor (id, line, column, RGB(255,255,255), RGB(217,20,29), RGB(255,255,255), RGB(217,20,29)) end
if color == "Желтый" then SetColor (id, line, column, RGB (255,255,0), RGB(0,0,0),RGB (255,255,0), RGB(0,0,0)) end
if color == "Серый" then SetColor (id, line, column, RGB (230,230,230), RGB(0,0,0),RGB (230,230,230), RGB(0,0,0)) end
if color == "Синий" then SetColor (id, line, column, RGB (44,112,188), RGB(255,255,255),RGB (44,112,188), RGB(255,255,255)) end
if color == "Оранжевый" then SetColor (id, line, column, RGB (255,165,0), RGB(0,0,0),RGB (255,165,0), RGB(0,0,0)) end
if color == "Зеленый" then SetColor (id, line, column, RGB (165,227,128), RGB(0,0,0),RGB (165,227,128), RGB(0,0,0)) end
if color == "Красный" then SetColor (id, line, column, RGB (255,168,164), RGB(0,0,0),RGB (255,168,164), RGB(0,0,0)) end
end
--------------------------------------------------
function CreateTable()
t_id = AllocTable()
addcolumn(t_id , 1, name_bot, true, QTABLE_INT_TYPE, 17)
addcolumn(t_id , 2, ticker, true, QTABLE_INT_TYPE, 15)
addcolumn(t_id , 3, version, true, QTABLE_INT_TYPE, 5)
CreateWindow(t_id)
SetWindowCaption(t_id, Name)
SetWindowPos(t_id, 0, 0, 310, 220)
for m=1, 9 do
InsertRow(t_id, -1)
end
SetCell(t_id, 1, 1, tostring("СТАРТ")); Color("Голубой", t_id, 1, 1)
SetCell(t_id, 1, 2, tostring("Не работает")); Color("Белый-Красный", t_id, 1, 2)
SetCell(t_id, 2, 1, tostring("Цена"));Color("Желтый", t_id, 2, 1)
last_price = FindPrice(ticker, class)
SetCell(t_id, 2, 2, tostring(last_price));Color("Желтый", t_id, 2, 2)
Color("Желтый", t_id, 2, 3)
SetCell(t_id, 3, 1, tostring("Позиция"));Color("Серый", t_id, 3, 1)
SetCell(t_id, 3, 2, tostring(trades_work));Color("Серый", t_id, 3, 2)
SetCell(t_id, 3, 3, tostring(" - "));Color("Серый", t_id, 3, 3)
SetCell(t_id, 4, 1, tostring("Напровление"));Color("Серый", t_id, 4, 1)
if orient_trade == -1 then
SetCell(t_id, 4, 2, tostring("Sell"));Color("Красный", t_id, 4, 2)
elseif orient_trade == 0 then
SetCell(t_id, 4, 2, tostring("sell+buy"));Color("Синий", t_id, 4, 2)
elseif orient_trade == 1 then
SetCell(t_id, 4, 2,tostring("buy"));Color("Зеленый", t_id, 4, 2)
end
SetCell(t_id, 4, 3, tostring(" - "));Color("Серый", t_id, 4 ,3)
SetCell(t_id, 5, 1, tostring("Размер лота")); Color("Голубой", t_id, 5, 1)
SetCell(t_id, 5, 2, tostring(size_lot));Color("Голубой", t_id, 5, 2)
SetCell(t_id, 5, 3, tostring("- ")); Color("Голубой", t_id, 5, 3)
SetCell(t_id, 6, 1, tostring("Мах лотов"));Color("Голубой", t_id, 6, 1)
SetCell(t_id, 6, 2, tostring(max_lot));Color("Голубой", t_id, 6, 2)
SetCell(t_id, 6, 3, tostring(" - "));Color("Голубой", t_id, 6, 3)
SetCell(t_id, 7, 1, tostring("Шаг")); Color("Оранжевый", t_id, 7, 1)
SetCell(t_id, 7, 2, tostring(min_step));Color("Оранжевый", t_id, 7, 2)
SetCell(t_id, 7, 3, tostring(" - ")); Color("Оранжевый", t_id, 7, 3)
SetCell(t_id, 8, 1, tostring("Тейк"));Color("Оранжевый", t_id, 8, 1)
SetCell(t_id, 8, 2, tostring(min_take));Color("Оранжевый", t_id, 8, 2)
SetCell(t_id, 8, 3, tostring(" - "));Color("Оранжевый", t_id, 8, 3)
ServerTime = getInfoParam("SERVERTIME")
if ServerTime == nil or ServerTime == 0 or ServerTime == "" then
ServerTime = "00:00:00"
end
SetCell(t_id, 9, 1, tostring(ServerTime));Color("Желтый", t_id, 9, 1)
if stop_on == 0 then
SetCell(t_id, 9, 2, tostring("x Stop при 0"));Color("Желтый", t_id, 9, 2)
else
SetCell(t_id, 9, 2, tostring("v Stop при 0"));Color("Желтый", t_id, 9, 2)
end
Color("Голубой", t_id, 9, 3)
end
function FindPrice(sec_code, class_code)
local AktivPrice = tonumber(getParamEX(class_code, sec_code, "LAST").param_value)
if AktivPrice == nil then
AktivPrice = tonumber(getParamEX(class_code, sec_code, "PREVPRICE").param_value)
end
return AktivPrice
end
function main()
ReadTable()
CreateTable()
end
Подскажите, пожалуйста, где найти lua.lib для x64 ?
Добрый день. Хотел бы самостоятельно написать прогу которая будет работать по типу кластеров в приводах типа Qskalp и Cscalp, т.е. считать разницу покупок и продаж в моменте (за определенный промежуток времени) и выдавать соответствующее оповещение к примеру если превышено какое-то значение. Прошел бесплатные курсы по программированию, научился работать с гитом). В общем ноль в программировании. Подскажите с чего начать. Думаю надо брать данные из таблици обзличенных сделок. Но как что делать?
Как удаленно запускать и останавливать Lua - скрипты из сторонней программы?
Вывожу данные через LUA - скрипт и UDP - Сокет в скринер написанный на С. Возник вопрос: есть ли вариант запуска и остановки LUA - скриптов сторонней программой? Придумал костыльный вариант остановки(через запись ключевого слова в текстовый файл) и еще более костыльный вариант запуска(через HWND окна). Может можно как-то стартануть скрипт, например через изменения реестра, ini - файла, может Хексом библиотеку какую-нибудь подправить и т.д.???
Коллеги, есть ли код для имитации ds? Суть кода: прочитать данные из файла csv и присвоить прочитанное ds, чтобы читалось так же, как и createdatasource.
Как в QLua закрыть файл по его полному пути+имени (строка)?
Допустим, файл уже был открыт до запуска скрипта, тогда
как закрыть этот файл с именем FileFullName (строковое)?
Здравствуйте!
Периодически вылетает ошибка: "Необработанное исключение по адресу
0x000007F9EC5C9D19 (ntdll.dll) в info.exe: 0xC0000374: Куча была повреждена
(параметры: 0x000007F9EC61E5F0)". Часто если в коде lua указано: "sleep(1)".
Ошибка чтения в точке "lua_pushstring(L, (char*)(pb))".
Как её избежать?
Microsoft Visual Studio Enterprise 2015
Версия 14.0.24720.00 Update 1
Microsoft .NET Framework
Версия 4.6.01055
lua5.1.lib
Здравствуйте!
Периодически вылетает ошибка: "Необработанное исключение по адресу
0x000007F9EC5C9D19 (ntdll.dll) в info.exe: 0xC0000374: Куча была повреждена
(параметры: 0x000007F9EC61E5F0)". Часто если в коде lua указано: "sleep(1)".
Ошибка чтения в точке "lua_pushstring(L, (char*)(pb))".
Как её избежать?
1
2
3
4
...
lua_pushstring(L, (char*)(pb));
for (int i = 0; i < 256; i++)pb[i] = '\0';
...
1
2
3
4
5
...
QluaCSharpConnector.SendQuote(Quote);
local CommandStr = tostring(QluaCSharpConnector.GetCommand());
sleep(1);
...
Microsoft Visual Studio Enterprise 2015
Версия 14.0.24720.00 Update 1
Microsoft .NET Framework
Версия 4.6.01055
lua5.1.lib
Здравствуйте товарищи! При экспорте данных из квика самый длительный этап - ожидание их поступления при заказе с сервера:
Экспортирую данные графиков, порядочно. При повторном запуске экспорта хотелось бы пропустить графики, по которым не появилось новых данных с момента предыдущего экспорта, чтобы не тратить несколько секунд на заказ данных.
Кто-нибудь решал эту проблему?
Я пробую использовать параметры инструмента из таблицы всех сделок. Сохраняю несколько значений, полученных на момент заказа данных графика, отакие вот:
Если при следующем запуске они отличаются - тогда подписываюсь на график и уже смотрю конкретно, что поменялось. Но это костыль, может есть какая-то хитрость или отточенный способ, или я что-то в доке пропустил?
Добрый день!
1. А вы учли, что при дисконекте и повторном соединении нужно отписаться от источников и подключить их заново, иначе данных просто не будет?
2. Обезличенные сделки брокеры любят не транслировать, т.е. такой костыль априори не подходит.
3. Графики, это зрительный обман и ничего более, если очень нужно - стройте свои, на основании таблицы обезличенных сделок, тогда думать нужно будет только о пункте 2.
4. Если по другому никак, то OnParam вам в руки, подписываетесь на параметр "оборот" и если он не ноль, то сделки есть и нужно подключить источник.
Вопрос решился? Я тоже самое с тиками пытаюсь сделать, если подключаюсь в 14.00, данные через CreateDataSource по всем инструментам грузит за всё предыдущее время. Прогоняю в цикле Size, пока он не будет равен предыдущему, только потом считываю нужные мне данные, очень костыльно как-то получается. OnAllTrade работает лучше, но идет нагрузка на проц и каждые полчаса Квик дисконектит.
Привет народ, кто-нибудь собирал LuaSQLite3.dll для работы со скриптом? Я нашел в интернетике уже собранные неизвестным мне человеком, но там может быть все что угодно внутри зашито, хотелось бы самому собрать. Кто может что подсказать посоветовать? Может где-то на сайте уже есть?
Посмотрите в "Статьи участников" LUA_SHARE от Тохи, это вам подойдет, быстро и надежно.
Я потратил время на поиск в проекте LUA_SHARE того, что мне поможет разобраться со сборкой sqlite3.dll, зачем вы так делаете не спрашиваю
я где то упомянул, что вы там найдете что-то, что поможет вам разобраться с sqlite? претензии вашему учителю русского языка предъявляйте.
а я уже хотел написать, что погорячился. Мой вопрос касался сборки sqlite3 для луа, поэтому логично было предположить. А вы еще и грубите
где то - через дефис)