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. Это стандартный способ кодирования магических символов. Любой не алфавитно-цифровой символ (включая все знаки пунктуации, даже не магические) могут предваряться '%', когда используются для представления себя в шаблоне.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Прошло 2 года. Как дело движется?
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
14.08.2023 21:18:41
Цитата
VPM написал: При тестировании стратегий на исторических свечах. При выводе меток приходит такая ошибка;
Цитата
Ошибка при создании метки: Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции.
Ни чего по ней найти не возможно, по смыслу что со свечами не то?
Скорее не со свечами, а с метками. Файлы картинок для меток используются?
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
14.08.2023 13:33:59
Цитата
VPM написал: стоимость контракта = price_last * pos_qty* lot ?
С контрактом на индекса мосбиржи (MXI) такая формула не работает.
Всё пройдет. Но это не точно.
Экспорт из Quik в Excel необходимых данных!, Экспорт из Quik в Excel следующих данных!
Пользователь
Сообщений: Регистрация: 22.02.2023
08.08.2023 22:39:32
Цитата
hts написал: Можно ли вывести в эксель все свои сделки, купля продажа итд. И если можно то как. Спасибо
На таблице сделок, правая кнопка мыши > Вывод через DDE сервер.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
02.08.2023 00:59:38
Цитата
Игорь М написал: Вы здесь за один удар определяете и то, что у вас заявка активная и то, что она купля/продажа
Вот и я о том же:
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
02.08.2023 00:29:56
Опять я наврал. Нельзя два дела одновременно делать! Так правильно:
Код
x = order.flags & 3 -- для версии lua ниже 5.3 -> bit.band(order.flags,3)
if x == 2 then
message("Заявка снята")
elseif x == 1 then
message("Заявка активна")
elseif x == 0 then
message("Заявка исполнена")
end
end
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 22:43:02
Можно.
Код
x = order.flags & 3 -- для версии lua ниже 5.3: bit.band(order.flags,3)
if x == 3 then
message("Заявка снята")
elseif x == 2 then
message("Заявка исполнена")
elseif x == 1 then
message("Заявка активна")
end
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 22:04:40
Цитата
Ziveleos написал: r = order.flags & Х, где Х - вес соответствующего флага. r - 1 или 0, в зависимости от того, установлен флаг, или нет.
Наврал. r - вес флага или 0, в зависимости от того, установлен флаг, или нет.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 21:44:53
Еше ватиант bit.test(order.flags,Х), где Х - номер флага. Возвращает true или false. Работает медленно, но зато даже на луа 5.1
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 21:37:32
Цитата
VPM написал: Как безошибочно выяснять состояние флагов
r = order.flags & Х, где Х - вес соответствующего флага. r - 1 или 0, в зависимости от того, установлен флаг, или нет.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 21:31:56
nikolz, нафига их двигать, если можно сразу и пачкой:
Цитата
Ziveleos написал: У каждого флага свой вес. Чтобы узнать состояние флагов, нужно в качестве второго операнда побитового И взять число, равное сумме весов интересующих флагов. Результат = сумме весов установленных флагов.Пример:Если order.flags & 5 == 4, заявка на продажу, не активна. ==1 - заявка на покупку, активна.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 21:06:21
Цитата
Владимир написал: Сейчас вероятность проблем со связью близка к нулю
Это смотря в каком городе Вы живете...
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 20:45:45
VPM, в каком смысле пользоваться? Как выяснить состояние флагов, или как эту информацию использовать в торговле?
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 19:55:53
Владимир, это на случай проблем с интернетом, электричеством, или на сервере брокера, как это было со сбером, чтобы заявка не осталась с неприкрытой задницей. Ну и для ручной торговли.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 19:37:07
Владимир, первый, в случае управления стопом тоже нужен. Если лимитированная снята, то стоп тоже нужно снять, если исполнена - то должен остаться.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 19:24:02
Владимир, разумеется. И выставляется она на лимитированную заявку, которая может быть как на покупку, так и на продажу. Поэтому нужен второй бит.
Всё пройдет. Но это не точно.
Предотвращение убыточной продажи по TAKE_PROFIT_AND_STOP_LIMIT_ORDER
VPM написал: order.flags - где нулевой где не нулевой не разберешь.
Руководство пользователя QLua > Описание битовых флагов. У каждого флага свой вес. Чтобы узнать состояние флагов, нужно в качестве второго операнда побитового И взять число, равное сумме весов интересующих флагов. Результат = сумме весов установленных флагов. Пример: Если order.flags & 5 == 4, заявка на продажу, не активна. ==1 - заявка на покупку, активна.
Старая шутка: "Нашел в телефоне кнопку Вкл.бл, значит, где-то должна быть Выкл.нах."
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 17:59:47
Владимир, это у Вас. Контролировать состояние заявки бывает нужно в разных целях.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
01.08.2023 17:20:43
Цитата
VPM написал: Можно утверждать что такая запись надежна?
В приведенном Вами примере контролируется нулевой бит, а описание почему-то взято от первого. А это все-таки разные вещи: ордер активен и ордер снят. По моему, определять лучше сразу оба бита. Если bit.band(order.flags,3) или order.flags & 3 равно 3, то заявка снята, равно 2 - исполнена, 1 - активна.
Всё пройдет. Но это не точно.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
Пользователь
Сообщений: Регистрация: 22.02.2023
31.07.2023 21:17:30
Извините, что вмешиваюсь,
Цитата
VPM написал: if (order.flags % 2) == 0 then -- Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
чет/нечет - это проверка нулевого бита. Из руководства:
Цитата
бит 0 (0x1) Заявка активна, иначе – не активна бит 1 (0x2) Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена
Есть еще вариант bit.test(order.flags,0), но чет/нечет самый быстрый.
Код
function main()
order = getItem("orders", 1)
start = os.clock()
for i = 1, 1e6 do
x = order.flags % 2
--x = bit.band(order.flags,1)
--x = bit.test(order.flags,0)
end
message(tostring(os.clock() - start))
end
Всё пройдет. Но это не точно.
Таблица с измемениями открытого интереса
Пользователь
Сообщений: Регистрация: 22.02.2023
31.07.2023 14:17:54
По моему, график гораздо нагляднее, чем цифры. И скрипт писать не нужно.
Всё пройдет. Но это не точно.
Как реализовать "Карман транзакций", Как реализовать "Карман транзакций"
Пользователь
Сообщений: Регистрация: 22.02.2023
31.07.2023 00:46:44
В терминале, клавиша F7 -> Карман транзакций.
Всё пройдет. Но это не точно.
DelAllLabels приводит к "General Protection Fault", Вызов DelAllLabels при смене тикера приводит к падению QUIK с ошибкой "General Protection Fault"
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 22:15:18
Придумал! Вот что ноосфера животворящая делает!
Код
if lastLbl then
repeat
sleep(10)
t_Lbl = GetLabelParams(iStr, lastLbl) -- Костыль. Ждем пока появится последняя метка.
until t_Lbl
end
lastLbl = 0
<...>
lbl_ID = AddLabel(iStr, arr)
lastLbl = lastLbl + 1
end
Но лучше, если бы не приходилось изобретать "костыли". Разработчики! Поправьте на досуге.
Всё пройдет. Но это не точно.
DelAllLabels приводит к "General Protection Fault", Вызов DelAllLabels при смене тикера приводит к падению QUIK с ошибкой "General Protection Fault"
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 20:46:36
Стрелки:
Всё пройдет. Но это не точно.
Тормоза в отрисовке меток в 10 версии
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 19:30:28
Цитата
Andrey Golik написал: Уточните, пожалуйста, вы тоже столкнулись с этой проблемой?
Столкнулся со смежной проблемой:
Всё пройдет. Но это не точно.
DelAllLabels приводит к "General Protection Fault", Вызов DelAllLabels при смене тикера приводит к падению QUIK с ошибкой "General Protection Fault"
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 19:25:13
Значки почему-то не выкладываются.
Всё пройдет. Но это не точно.
DelAllLabels приводит к "General Protection Fault", Вызов DelAllLabels при смене тикера приводит к падению QUIK с ошибкой "General Protection Fault"
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 19:18:44
Тестовый скрипт:
Скрытый текст
Код
function OnInit()
is_run = true
path = (getScriptPath() .. "\\")
Arrow_B = (path .. "Arrow_B.bmp") -- Стрелки
Arrow_S = (path .. "Arrow_S.bmp")
iStr = "Rv-1" -- Идентификатор графика.
end
function OnStop()
DelAllLabels(iStr)
is_run = false
return 3000
end
function main()
while is_run do
local cdls = -1
repeat
local cdls0 = cdls
sleep(10)
cdls = getNumCandles(iStr)
until cdls > 0 and cdls == cdls0 -- Ждем, пока загрузятся все свечи.
local tc, nc, leg = getCandlesByIndex (iStr, 0, math.floor(cdls/2), 3)
if leg ~= old_leg and leg ~= "GZU3 [Price]" and leg ~= "" then -- Если на графике сменился инструмент. Один оставляем пустым.
old_leg = leg
LinePrnt("\n \n", leg)
--sleep(500) -- Костыль. Чем больше меток, которые нужно убить, тем больше должна быть задержка.
---[[
if lbl_ID then
for i=1, 700 do
t_Lbl = GetLabelParams(iStr, i) -- После смены инструмента идентификаторы меток тоже изменяются.
if t_Lbl then
last = i
end
end
end
--]]
LinePrnt(cdls, lbl_ID, last)
local image;
local aligt;
DelAllLabels(iStr) -- Если отключить, то quik просто зависает, без "General Protection Fault".
local start = os.clock()
for i=1, 100 do -- Кол-во меток.
local date = string.format("2023%02d%02d", math.random(3, 6), math.random(1, 30)) -- Диапазон месяцев и дней.
local time = string.format("%02d%02d00", math.random(10, 22), math.random(1, 59)) -- Диапазон часов и минут.
local price = tc[1].close + math.random(-100, 100)*tc[1].close/1000 -- Диапазон цен.
--LinePrnt(date, time, price)
local hint = tostring(date.."\n"..time.."\n"..price)
local txt = tostring("Lbl "..i)
if math.floor(i/2) == i/2 then
image = Arrow_B
aligt = "BOTTOM"
else
image = Arrow_S
aligt = "TOP"
end
arr = {
TEXT = "", -- txt
FONT_FACE_NAME = "Arial",
FONT_HEIGHT = 9,
R = 250,
G = 250,
B = 250,
IMAGE_PATH = image, -- Без картинок всё ОК, quik не падает.
TRANSPARENCY = 0,
TRANSPARENT_BACKGROUND = 1,
ALIGNMENT = aligt,
DATE = tonumber(date), -- Работает даже если STRING, зачем DOUBLE - не понятно...
TIME = tonumber(time),
YVALUE = price,
HINT = hint
}
lbl_ID = AddLabel(iStr, arr)
end
LinePrnt(os.clock() - start, lbl_ID)
end
sleep(30)
end
end
-------------------------------------------------------
function LinePrnt(...)
local lin = ""
for i, v in ipairs {...} do
lin = (lin ..(tostring(v)).." ")
end
PrintDbgStr(lin)
end
По-видимому, если во время восстановления меток после смены инструмента (график подключен к каналу), вызвать DelAllLabels, QUIK не выдерживает такой "шизофрении", и падает с криком "Internal exception happened".
Помогает только задержка, позволяющая QUIK восстановить все метки. Как поймать момент окончания прорисовки, мне придумать так и не удалось, может быть разработчики что-нибудь подскажут? Версия терминала - 10, но и на 7-ой всё то же самое.
Всё пройдет. Но это не точно.
Свободное перемещение графика
Пользователь
Сообщений: Регистрация: 22.02.2023
18.07.2023 17:03:03
Цитата
Alexey Ivannikov написал: Хамство и оскорбления - это по Вашему правильно? Мы Вас верно поняли?
Неверно. И что значит "Мы"? Во множественном числе себя величали только самодержцы. У высказывания есть форма и содержание. Имелось в виду именно содержание.
Цитата
Alexey Ivannikov написал: Да, пользуются. И вполне довольны. Если Вы тоже считаете что пожелания, в которых заинтересованы 1-2-3 пользователя, должны выполняться " по щелчку" - то Вы ничего не понимаете в организации работы IT-Компании.
Ну, если "вполне довольны", то улучшений ждать не приходится. Зачем менять то, что и так работает замечательно?
Чего для мне что-то понимать в организации работы IT-Компании? Достаточно сравнить ваш продукт с тем же приснопамятным TradingView, и с вами всё становится ясно. Взять хотя бы возможность назначать оповещение на пересечение ценой любой линии, например, линии тренда.