Ошибка снятия заявки. [GW][3] "Сейчас эта сессия не идет."
Пользователь
Сообщений: Регистрация: 22.02.2023
11.04.2025 02:12:02
А зачем Вы отправляете транзакцию, если сессия в это время закрыта? Если нет OnTransReply и сессия закрыта, какой вывод должен сделать робот?
Всё пройдет. Но это не точно.
CreateDataSource Возвращает данные с пропуском, CreateDataSource Возвращает данные с пропуском
Пользователь
Сообщений: Регистрация: 22.02.2023
11.04.2025 02:05:44
Фигня такая: На сервере хранятся только последние 3000 свечек. Если график долго не открывался, то и подгрузилось 3000 свечек.
Всё пройдет. Но это не точно.
Ошибка снятия заявки. [GW][3] "Сейчас эта сессия не идет."
Пользователь
Сообщений: Регистрация: 22.02.2023
10.04.2025 14:38:34
У меня так:
Код
function OnParam(class, sec)
if class == "SPBFUT" and (sec == Tr[1].sec or sec == Tr[2].sec) then
local sessn = (getParamEx("SPBFUT",sec,"TRADINGSTATUS").param_image == "открыта")
if sessn and (cond & 0x0080 == 0x0080) then
cond = cond & 0xFF7F -- Сброс "Сессия стоп".
SetColor(tw_id, 5, -1, -1, -1, -1, -1)
elseif not sessn and cond & 0x0080 == 0 then
cond = cond | 0x0080 -- "Сессия стоп".
SetColor(tw_id, 5, -1, yellow, -1, -1, -1)
end
end
end
Всё пройдет. Но это не точно.
Очень долгий пересчет клиентского портфеля (секунд 10)., Один из Квиков на компьютере зависает на 10 секунд при нажатии F5 на таблице Клиентский портфель. Если в настройках стоит галка "Обновлять через 15 секунд", то 10 секунд висит а пять работает.
Пользователь
Сообщений: Регистрация: 22.02.2023
10.04.2025 04:22:07
Цитата
Стас Золотарев написал: А где в квике хранится список Lua скриптов с их состояниями запущено/не запущено?Что-то он с info.wnd не передается.
В папке квика, файл "scripts.dat".
Цитата
Стас Золотарев написал: Дампа у меня пока нет.Не сохранял.
Дамп формируется автоматом, папка "dmp".
Всё пройдет. Но это не точно.
Руководство по QLUA, Не могу найти официальное руководство по QLUA
Пользователь
Сообщений: Регистрация: 22.02.2023
06.04.2025 19:03:16
В папке квика есть файл QLUA.chm, в нем все то же самое. В формате справки windows даже удобнее, чем в pdf. А так,
написал: Не знаю как у Вас, возможно это зависит от брокера, в моем QUIKe от ВТБ, в таблице "Текущие торги" ГО указан на первом уровне лимита концентрации.(КПУР) Сравните ГО здесь:
в том то и дело..В таблице всё указано верно,как и должно быть..А при выставлении заявки-уже другое(завышенное)
Вы написали:
Цитата
в таблице"текущие торги" так же соответствует категории КСУР
В моём квике - категории КПУР.
Всё пройдет. Но это не точно.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 22.02.2023
02.04.2025 20:27:38
Если в индикаторе, то
Код
dtSch = getDataSourceInfo()
local C = getParamEx(dtSch.class_code, dtSch.sec_code, "PREVLEGALCLOSEPR").param_value
Всё пройдет. Но это не точно.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 22.02.2023
02.04.2025 20:20:32
На примере Газпрома:
Код
local C = getParamEx("TQBR", "GAZP", "PREVLEGALCLOSEPR").param_value
Всё пройдет. Но это не точно.
не читается график, не читается график после дробления акций
Пользователь
Сообщений: Регистрация: 22.02.2023
02.04.2025 01:23:41
Есть у меня скрипт, обрезающий файлы графиков. Если его переделать, можно будет масштабировать график до дробления.
Всё пройдет. Но это не точно.
Завышенное ГО
Пользователь
Сообщений: Регистрация: 22.02.2023
02.04.2025 01:11:04
Не знаю как у Вас, возможно это зависит от брокера, в моем QUIKe от ВТБ, в таблице "Текущие торги" ГО указан на первом уровне лимита концентрации.(КПУР) Сравните ГО здесь:
Всё пройдет. Но это не точно.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 22.02.2023
12.03.2025 18:03:55
Выводить через PrintDbgStr подозрительные переменные, и когда в очередной раз глюканёт, посмотреть, кто чудит.
Всё пройдет. Но это не точно.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 22.02.2023
12.03.2025 17:15:59
Но если ошибка возникает эпизодически, то это уже сложнее.
Всё пройдет. Но это не точно.
QLUA, вопросы начинающих.
Пользователь
Сообщений: Регистрация: 22.02.2023
12.03.2025 17:09:18
Цитата
Igor_User написал: Есть ли какие-нибудь ещё способы определить строку, из-за которой эта ошибка произошла?
message("OK") и дихотомия. Ставим message в середине скрипта, если выскочило "OK", значит, ошибка дальше. Нет - до него. Делим проблемный кусок дальше. И т.д.
Всё пройдет. Но это не точно.
Данный инструмент запрещен для операции шорт, Ошибка при ручной покупке акции
Пользователь
Сообщений: Регистрация: 22.02.2023
11.03.2025 22:48:56
Глушкова Екатерина, шорт заработал, но в 10-й версии, в таблице "Купить/продать" по-прежнему, кроме "D long" и "D short", одни нули. Данные в таблице "Параметры рыночных рисков [ЦК]" отображаются.
Всё пройдет. Но это не точно.
Данный инструмент запрещен для операции шорт, Ошибка при ручной покупке акции
Vasiliy написал: Это на Lua в Квике, без библиотек?
На qlua, без библиотек. Фрагмент скрипта работающий с окном:
Скрытый текст
Код
local function MainWindow()
limValue = "Market"
red = RGB(255,180,180)
local green = RGB(180,255,180)
yellow = RGB(230,230,0)
local function event_callback(mw_id, msg, row, col)
local function SetLimit()
limValue = string.format("%d ps", indLmPs)
SetColor(mw_id, 3, 4, -1, -1, -1, -1)
SetColor(mw_id, 2, 3, -1, -1, -1, -1)
end
if msg == QTABLE_CLOSE then
w_top, w_left, w_bottom, w_right = GetWindowRect(mw_id)
DestroyTable(x2_id)
DestroyTable(mw_id)
sleep(300)
OnStop()
end
if msg == QTABLE_LBUTTONDBLCLK then
if row == 1 and col == 1 then -- Стоп меньше на 10.
indStPrc = indStPrc - 0.8
elseif row == 1 and col == 4 then -- Стоп больше на 10.
indStPrc = indStPrc + 0.8
elseif row == 2 and col == 1 then -- Лимит меньше на 10.
indLmPs = indLmPs - 8
elseif row == 2 and col == 3 then -- Лимит ноль.
indLmPs = 0
SetLimit()
elseif row == 2 and col == 4 then -- Лимит больше на 10.
indLmPs = indLmPs + 8
end
end
if msg == QTABLE_LBUTTONUP then
if row == 1 and col == 1 then -- Стоп меньше.
indStPrc = indStPrc - 0.1
elseif row == 1 and col == 4 then -- Стоп больше.
indStPrc = indStPrc + 0.1
elseif row == 2 and col == 1 then -- Лимит. меньше.
indLmPs = indLmPs - 1
SetLimit()
elseif row == 2 and col == 4 then -- Лимит больше.
indLmPs = indLmPs + 1
SetLimit()
elseif row == 3 and col == 2 then -- Пауза
sPause = true
SetColor(mw_id, 3, 2, red, -1, red, -1)
SetColor(mw_id, 3, 3, -1, -1, -1, -1)
elseif row == 3 and col == 3 then -- Плей.
sPause = false
SetColor(mw_id, 3, 3, green, -1, green, -1)
SetColor(mw_id, 3, 2, -1, -1, -1, -1)
elseif row == 3 and col == 1 then -- х2
x2key = true
elseif row == 3 and col == 4 then -- Маркет/лимит.
if limValue == "Market" then
SetLimit()
else
limValue = "Market"
SetColor(mw_id, 3, 4, yellow, -1, yellow, -1)
SetColor(mw_id, 2, 3, -1, RGB(0,0,255), -1, RGB(0,0,255))
end
end
SetCell(mw_id, 1, 3, string.format("%.1f %%", indStPrc))
SetCell(mw_id, 2, 3, tostring(limValue))
end
end
mw_id = AllocTable()
-- Создание колонок.
local n = 1
local function NewColumn(hd,wt)
AddColumn(mw_id, n, hd, true, QTABLE_STRING_TYPE, wt)
n = n + 1
end
NewColumn("-",4)
NewColumn("Цена",9)
NewColumn("Отступ",9)
NewColumn("+",4)
CreateWindow(mw_id)
SetWindowPos(mw_id, w_left, w_top, (w_right - w_left), (w_bottom - w_top))
SetWindowCaption(mw_id, "Лонжа")
-- Заполнение строк таблицы.
local function FillRow(...)
local row = InsertRow(mw_id, -1)
for n,v in ipairs{...} do
SetCell(mw_id, row, n, tostring(v))
end
end
FillRow("<","Стоп:",string.format("%.1f %%",indStPrc)," >")
FillRow("<","Лимит:",limValue," >")
FillRow("x2"," I I"," >>","M")
SetColor(mw_id, 3, 3, green, -1, green, -1)
SetColor(mw_id, 2, 3, -1, RGB(0,0,255), -1, RGB(0,0,255))
SetColor(mw_id, 3, 4, yellow, -1, yellow, -1)
SetColor(mw_id, 3, 1, -1, -1, -1, -1)
SetTableNotificationCallback(mw_id, event_callback)
end
Всё пройдет. Но это не точно.
Создание окна и кнопок в Quik.
Пользователь
Сообщений: Регистрация: 22.02.2023
10.03.2025 18:51:39
Цитата
Vasiliy написал: Покопавшись к интернете, понял, что стандартными силами Lua в Quik, создать графическое окно с кнопками не получиться.
Ну, не знаю... У меня получилось. Сделал себе "автостоп".
Всё пройдет. Но это не точно.
Данный инструмент запрещен для операции шорт, Ошибка при ручной покупке акции
Пользователь
Сообщений: Регистрация: 22.02.2023
09.03.2025 15:57:44
Цитата
_LEV_ написал: На ДЕМО QUIK 12.2.0.37 при ручной продаже акции в шорт - выдает сообщение "Данный инструмент запрещен для операции шорт"
Такая же картина в 10 и 11 версиях, шортить "Юниор" не дает ничего. При этом, в 10-ой версии, в таблице "Купить/продать" одни нули, а в 11-ой, в таблице "Позиции по инструментам" тикеры повторяются дважды, с датой расчетов сегодня и завтра.
Уже десять лет, как зарегистрировано и рассмотрено. Скоро юбилей.
И ещё:
Лет через десять ещё раз зарегистрируют, это не трудно.
Всё пройдет. Но это не точно.
Перемещении сотп заявки
Пользователь
Сообщений: Регистрация: 22.02.2023
11.02.2025 17:01:39
Вот эти кнопочки нажаты?
Всё пройдет. Но это не точно.
Звуковые оповещения, как выставить звуковые оповещения
Пользователь
Сообщений: Регистрация: 22.02.2023
13.12.2024 13:00:21
Можно использовать стандартные звуки windows.
Код
--[[
MB_OK = 0x0 -- ' Стандартный звук
MB_ICONHAND = 0x10 -- ' Звук SystemHand
MB_ICONQUESTION = 0x20 -- ' Звук Вопрос
MB_ICONASTERISK = 0x40 -- ' Звук Звездочка
MB_ICONEXCLAMATION = 0x30 -- ' Звук Восклицание
--]]
io.popen('rundll32.exe user32.dll, MessageBeep MB_OK')
--os.execute('rundll32.exe user32.dll, MessageBeep MB_OK')
Всё пройдет. Но это не точно.
Таблицы для sendTransaction из .tri файла, Скрипт преобразующий строки .tri файла в таблицы для sendTransaction
Пользователь
Сообщений: Регистрация: 22.02.2023
13.12.2024 00:49:34
Код
function main()
file = io.open(getScriptPath().."\\Карман.tri", "a+") -- Файл транзакций
tri = file:read("*a")
if not tri:match("%[") then
for rec in tri:gmatch("[^\n]+") do
rec = rec:gsub(";","\n")
rec = rec:gsub("([%g ]+)="," ['%1'] =")
rec = rec:gsub("=([%g ]*)","= '%1',")
rec = rec:gsub(",\n$","")
rec = "\ntransaction = {\n"..rec.."\n }\n"
file:write(rec)
end
end
file:flush()
file:close()
end
Использование: 1) Сохранить содержимое "Кармана транзакций" в файл Карман.tri 2) Запустить скрипт. 3) Забрать результат в том же файле.
У меня проще. Выставил заявку - автоматом стоп-лосс. Точнее половина «Тейк-профит и стоп-лимит». Приоритет у позиции. Опция удвоения, на отскок/пробой. Простой, как кувалда.
Всё пройдет. Но это не точно.
И снова CreateDataSource
Пользователь
Сообщений: Регистрация: 22.02.2023
04.12.2024 20:49:52
Цитата
Acaw написал: Вопрос: если так сделать, не повлечет ли это за собой то, что терминал будет обновлять кучу копий датасорсов
Роберту Иерузалимски "Программирование на языке Lua"
2.5. Таблицы (стр.36) "Вы можете рассматривать таблицу как динамически выделяемый объект; ваша программа работает только со ссылками (указателями) на них. Lua никогда не прибегает к скрытому копированию или созданию новых таблиц."
Всё пройдет. Но это не точно.
Сохранение в Excel-файл всех данных из любой таблицы
Пользователь
Сообщений: Регистрация: 22.02.2023
22.11.2024 15:17:50
Можно просто написать скрипт, чтобы при закрытии квика сбрасывал все сделки в .csv.
Всё пройдет. Но это не точно.
Сохранение в Excel-файл всех данных из любой таблицы
Пользователь
Сообщений: Регистрация: 22.02.2023
22.11.2024 14:46:21
ПКМ > "Копировать всё" > вставить в "Блокнот" > сохранить как ,csv > открыть в LibreOffice Calc.
Всё пройдет. Но это не точно.
Народ, как подключить библиотеку HTTP ?
Пользователь
Сообщений: Регистрация: 22.02.2023
19.11.2024 21:52:06
Чем cUrl не устраивает? os.execute('curl -L -R -o "futures.csv"')
Есть инструмент RTSUSDCUR в классе INDX, это курс доллара. Получить можно через getParamEx() getParamEx("INDX","RTSUSDCUR","CURRENTVALUE").param_value
Всё пройдет. Но это не точно.
MOVE_ORDERS
Пользователь
Сообщений: Регистрация: 22.02.2023
25.10.2024 03:37:31
Anton Belonogov, произошло это однажды, два раза за 3 минуты, но удивило то, что передвинулась только одна заявка, вопреки утверждениям в руководстве и на этом форуме: Поэтому и возник вопрос № 2: на "боевом" такое возможно? Нужен "костыль" в коде, или там не бывает подобных нежданчиков? Версия QUIK 10.1.2.2. Только зачем она Вам, или сервер по-разному обрабатывает заявки терминалов разных версий? Случилось это 14 числа.
Всё пройдет. Но это не точно.
Отчёт по всем сделкам клиента - ввод Кода инструмента, Фильтрация по Коду инструмента при создании отчёта
Пользователь
Сообщений: Регистрация: 22.02.2023
18.10.2024 20:16:07
Если бы не проблема зависания, можно было бы скопировать отчет в текстовый файл, и раскидать инструменты скриптом по отдельным файлам .csv, с подсчетом баланса по каждому инструменту. А так, ждать реализации пожелания можно очень долго.
Всё пройдет. Но это не точно.
MOVE_ORDERS
Пользователь
Сообщений: Регистрация: 22.02.2023
16.10.2024 23:02:26
Столкнулся с неожиданным поведением MOVE_ORDERS и OnTransReply. Пришел reply с номером заявки '0'. Скрипт передвигал заявки, всё шло штатно, как вдруг, откуда ни возьмись, появился
Цитата
Перестановка заявок завершена успешно. New Order1 ID: 0, new Order2 ID: 1892958324056452578.
Скрипт, получив от OnTransReply status 3, запоминает номера заявок и пытается их передвинуть, что у него, естественно, не получается. Это повторяется дважды в течение трёх минут. Отсюда два вопроса: 1). Это как пониматьвашу, господа разработчики? 2). Такое поведение вашего продукта возможно только на учебном quik, или на боевом также может произойти такой пердюмонокль?
Всё пройдет. Но это не точно.
Отчёт по всем сделкам клиента - ввод Кода инструмента, Фильтрация по Коду инструмента при создании отчёта
Пользователь
Сообщений: Регистрация: 22.02.2023
16.10.2024 04:26:48
Загнать отчёт в Excel и отсортировать в нём, не вариант?
Всё пройдет. Но это не точно.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
Пользователь
Сообщений: Регистрация: 22.02.2023
16.10.2024 03:40:30
Цитата
sao написал: Прошу разработчиков зарегистрировать пожелание:Ни в коем случае не делать никаких trans_id=nil !!
В руководстве четко прописано что поле trans_id имеет тип NUMBER. Соответственно программисты (в частности я) в своих скриптах считают что в этом поле может быть только число. В Lua значение nil это отдельный тип переменной, и например выражение t.trans_id>0 приведет к ошибке и вылету скрипта. Почему я должен перелопачивать десятки тысяч строк кода в десятках своих скриптов и вводить множество ненужных проверок, из-за того, что кому-то вдруг приспичило получать nil?
Есть же отрицательные числа. Если значение ещё не определенных параметров будет отрицательным, ничего перелопачивать не придётся.
Всё пройдет. Но это не точно.
Kaк вбить счёт в торговый стакан?, Чтоб запоминался, устал вводить свой счёт вручную
Кто что скажет по теме написания книжки по работе в Quik?
Пользователь
Сообщений: Регистрация: 22.02.2023
09.10.2024 23:53:17
Цитата
BlaZed написал: Роберту Иерусалимски как то сам нашелся
Теперь, на сайте Lua только через амазон, за деньги, а была бесплатно. Здесь ещё есть:
Всё пройдет. Но это не точно.
Как в Quik включить получать обезличенные сделки юр. лиц., Заметил что сделки на срочном рынке приходят только физ лиц как включить отображение сделок юр лиц?
Пользователь
Сообщений: Регистрация: 22.02.2023
09.10.2024 23:19:47
Цитата
Kypat написал: добавьте фон зелёный красный для купли и продаже
Старатель написал: До сих пор нет надёжного решения обсуждаемой проблемы.
Цитата
Серж написал: Состояние скрипта при следующем запуске зависит от того успел ли он становиться до сохранения его статуса (остановлен/запущен) в файл scripts.dat.
Так это и есть решение проблемы. if msg == QTABLE_CLOSE then sleep(time) OnStop() end Нужно только, чтобы "time" было больше периода "бесконечного" цикла main, или времени возвращаемого OnStop.
Всё пройдет. Но это не точно.
Купить по рынку / Продать по рынку, Необходима помощь в подключении этих опций
Пользователь
Сообщений: Регистрация: 22.02.2023
21.08.2023 09:52:58
Чтобы кнопки были активны, на панели торговли должны быть указаны количество "Q", и счет "A". Отобразить эти поля в настройках стакана >Панель торговли>Цена количество и счет.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
18.08.2023 14:14:39
Причина в том, что в новых версиях квик каждый раз при отрисовке метки обращается за картинкой к диску, даже если картинка одна и та же, и, видимо, у него не всегда это получается.
%x: (где x - не алфавитно-цифровой символ) представляет символ x. Это стандартный способ кодирования магических символов. Любой не алфавитно-цифровой символ (включая все знаки пунктуации, даже не магические) могут предваряться '%', когда используются для представления себя в шаблоне.