Разработчик стратегий косячит или это нормально для выходного дня?, Версия терминала 7.27.2.1
Пользователь
Сообщений: Регистрация: 03.02.2015
21.03.2020 06:40:28
Вчера 20.03.20 т.е. в пятницу кода все работает щлюзы шмузы разработчик стратегий опять косячил. Вместо графика опционной позиции на экране просто наклонная линия хотя должен отображаться стредл. Это при том что заказаны котировки интересующих опционов и базового актива, сняты фильтры параметров. В таблице параметров стратегии не отображается цена базового актива ни в столбце "фактич." ни в сценариях. Предположу что это как то связано со сменой базового актива которая произошла как раз с 19.03 на 20.03. Хотя до 19.03 корректно отображалась позиция которая была собрана из опцоинов на разные базовые активы - RIH0 и RIM0. Хотя говоря корректно отображались я имею ввиду форму но не значения - здесь то же есть что сказать. Когда позиция собрана из опционов на разные базовые активы для построения графика позиции берется только цена одного - ближайшего по дате истечения . В связи с этим: 1. Скажите что сделать что бы заработал разработчик стратегий - удалить какие то дат файлы или еще что. 2. Прошу зарегистрировать пожелание на доработку разработчика стратегий - что бы при построении суммарной опционной позиции учитывались цены базовых активов разных опционных серий из которых собраны эти позиции.
Спасибо.
Разработчик стратегий косячит или это нормально для выходного дня?, Версия терминала 7.27.2.1
Пользователь
Сообщений: Регистрация: 03.02.2015
22.12.2019 09:33:17
Цитата
Сергей написал: День добрый! Некое противоречие между двумя предложениями: "загружает текущую позицию но не прорисовывает графики " и "данные перезаказаны и получены графики перерисованы ". Если Ваш вопрос - к пустым стаканам, то да - они пустеют сразу по закрытию сессии. К наполнению готовятся другие стаканы ::
Не знаю как у вас у меня стаканы котировок после сессии не пустеют и в них присутствуют заявки которые конечно не сняли участники торгов. Если систему перезагрузить то да стаканы будут очищены. После перезаказа данных прорисовываются графики по кокретным инструментам которые мы открываем как "построить график" или " создать диаграмму по интересующим инструментам". В разработчике стратегий строятся диаграммы по совокупности всей позиции по фьчам и опционам которые и не прорисовываются.
Разработчик стратегий косячит или это нормально для выходного дня?, Версия терминала 7.27.2.1
Пользователь
Сообщений: Регистрация: 03.02.2015
21.12.2019 19:14:31
Здравствуйте! При запуске разработчика он загружает текущую позицию но не прорисовывает графики. Заказ данных для инструментов включен, фильтров параметров нет. Из видимых причин - в поле цена б/а ноль. Пытался подставлять актуальную цену в сценарии - результат тот же. Возможно причина в том что сегодня суббота - но подключение установлено даже данные перезаказаны и получены графики перерисованы - только стаканы(пардон) пустые. Да и проявился этот баг еще вчера. В чем причина может быть?
Получение цены по наклонному тренду., наклонная линия тренда для расчетов., Как рассчитать в будущем цену для наклонных трендов.
Пользователь
Сообщений: Регистрация: 03.02.2015
04.08.2019 09:40:02
Зачем заморачиваться с индикаторами. Весь расчет который я вам предложил укладывается в одну формулу. Как получить пиковые значения так же Вам предложил. С более крупного таймфрейма берете значения максимумов или минимумов цен в зависимости от того линию сопротивления или поддержки ищете - сложность только в том что для этих цен нужно будет найти время но опять же на мелком таймфрейме. Но это не так уж и сложно.
Получение цены по наклонному тренду., наклонная линия тренда для расчетов., Как рассчитать в будущем цену для наклонных трендов.
Пользователь
Сообщений: Регистрация: 03.02.2015
03.08.2019 17:18:33
Цитата
lergen написал: Здесь вопрос совсем в другом - как определить ключевые точки по которым вы будете строить линию тренда. Если Вы знакомы с программированием и сможете достаточно четко формализовать решение данной задачи то возможно даже денег тут заработаете :)
Пардон, то же все элементарно если не заморачиваться. Можно взять значения цен с более крупных таймфреймов с дневного или 4-х часового.
Получение цены по наклонному тренду., наклонная линия тренда для расчетов., Как рассчитать в будущем цену для наклонных трендов.
Пользователь
Сообщений: Регистрация: 03.02.2015
03.08.2019 17:01:43
Вам же правильно подсказали что можно использовать уравнение линии. Считается все элементарно. P1 - пик цены 1 Р2 - пик цены 2 NT1 - количество интервалов между Р1 и Р2 NT2 - количество интервалов после Р2 до крайнего периода (Р2 - Р1)/NT1 - коэффициент для построения этой линии назовем его К Р2 + (NT2 * K) - то что Вы хотели найти
Здесь вопрос совсем в другом - как определить ключевые точки по которым вы будете строить линию тренда. Если Вы знакомы с программированием и сможете достаточно четко формализовать решение данной задачи то возможно даже денег тут заработаете :)
Можно ли из Квика на lua запустить внешний ехе файл?, mail.
Пользователь
Сообщений: Регистрация: 03.02.2015
30.05.2018 04:30:22
Спасибо! Будем копать.
Можно ли из Квика на lua запустить внешний ехе файл?, mail.
Пользователь
Сообщений: Регистрация: 03.02.2015
29.05.2018 20:08:57
А еще подскажите кто в теме как из виндовсой библиотеки iphlpapi.dll (в частности из ее функции GetIfTable() )получить информацию в скрипт( о состоянии сетевых подключений). За пример буду особенно признателен или хотя бы направление подскажите.
Можно ли из Квика на lua запустить внешний ехе файл?, mail.
Пользователь
Сообщений: Регистрация: 03.02.2015
26.05.2018 08:56:53
Бли-и-и-н. Все перепробовал а на это внимание не обратил. Вернее смутило то что это ID оборудования. Михаил - снимаю шляпу. Работает.
Можно ли из Квика на lua запустить внешний ехе файл?, mail.
Пользователь
Сообщений: Регистрация: 03.02.2015
26.05.2018 08:20:34
День добрый! Не запускается exe файл с параметрами. От поиска в глазах рябит уже.
os.execute("C:\\Work\\2\\devcon.exe enable USB\Class..") os.execute("C:\\Work\\2\\devcon.exe -enable USB\Class..") os.execute("C:\\Work\\2\\devcon -enable USB\Class..") io.popen -также не спасает на что ругается cmd не вижу поскольку не могу в параметрах ему задать паузу. Квик запущен от админа, в свойствах devcon так же указан запуск с правами админа. Пробовал через батник. Если сам батник запускаю руками из cmd все работает - из скрипта ни как. Что не так делаю подскажите
Взаимодействие OLua и Lua под Виндой
Пользователь
Сообщений: Регистрация: 03.02.2015
24.03.2018 08:27:28
Готов взять обратно свои слова о слабом быстродействии Qlua. Оптимизацией алгоритма добился того что скрипт обрабатывающий таблицу в 6500 строк делает 15 проходов в секунду. Опять же оговорюсь что это для моего железа - для кого то возможно это так себе показатель. Замедление происходит в основном при взаимодействии виртуальной машины с квиком - при опросе графиков, таблиц, выводах в таблицы, сохранении в файл .... Если эти операции ограничить до необходимой целесообразности то все работает довольно шустро.
Если пишем систему в реальном времени, то функция main должна просто что-то инициализировать и все. Далее все должно выполняться в коллбэках. Если их нет, то и нечего анализировать получается. Пришла свечка - отвечаем на событие, решили, что надо сделать транзакцию, отправили ее. Ждем ответа о ее завершении.
А вот в функции main, видимо, надо как раз анализировать ситуации когда ответа нет. Скажем, нет ответа на транзакцию, значит перебери ордера, чтобы понять, может она прошла. Видимо, так. Я пока не все еще продумал, т.к. не очень знаком с организацие вызовов в qlua, но, наверно, есть ситуации неуловимые коллбэками.
А вот если система не реального времени, а по расписанию, то, как я понимаю, все надо реализовывать в бесконечном цикле main. Скажем, цикл, перебирающий список бумаг каждые 15 минут и рассчитывающий что-то. Правда в этом месте возникает вопрос, а нельзя ли при инициализации скрипта назначить один и тот же коллбэк на получение данных разных инструментов, разных интервалов? Тогда и здесь можно было бы все в этом одном коллбэке делать не утилизируя функцию main. Судя по описанию нельзя. Т.е. я вынужден каждые 15 минут заново перибирать список инструментов, получать данные, считать. А если бы в коллбэк приходил не только индекс, но признак чей это индекс, то можно было бы сохранив ранее DS каждого инструмента, отреагировать именно на него.
Колбеки нельзя перегружать кодом, можешь завесить Квик. Процесс main это один поток, рядом в потоке сам квик с колбеками. В одном OnTransReply анализируй все. Сначала отфильтруй повторный вызов колбека, потом фильтруй по бумаге если нужно, потом фильтруй по своим ID.
QUIK для HFT
Пользователь
Сообщений: Регистрация: 03.02.2015
11.02.2018 13:01:29
Вы можете разместить ваш терминал на серверах биржи или где то поблизости исключив тем самым некоторую зависимость от временной задержки сигнала- но это нельзя назвать прямым доступом. Все равно ваша заявка будет сначала попадать на сервер квик потом уже на биржу. Для непосредственно прямого доступа нужно использовать PLAZA2, FAST/FIX или что там может уже новое есть. Но там уже используются не Квик а другие терминалы и скорее всего там нужно писать на "С". Но еще нужно сказать что это будет вам стоить дополнительных денег. Если вы уверены в своей стратегии то необходимости самому учить "С" нет - можно же заказать. В свое время то же планировал выйти на прямой доступ но потом отказался от этой затеи - после обсуждения возможностей стратегии которую хотел использовать с теми кто уже занимался тем же.
OnTrade для сделок по FUTSPREAD
Пользователь
Сообщений: Регистрация: 03.02.2015
02.02.2018 19:44:23
Проблему можно было бы решить легко, например в операторе сравнения номеров использовать "<=" для случая когда не делаем ни чего, это было бы справедливо если бы номера инициированных сделок по фьючу были больше номера сделок по спреду, что казалось мне логичным пока не увидел в таблице сделок что номер сделки по спреду больше. Поэтому вопрос - это случайность или закономерность?
OnTrade для сделок по FUTSPREAD
Пользователь
Сообщений: Регистрация: 03.02.2015
02.02.2018 18:35:19
Кажется дошло. За сделками по спреду автоматически следуют сделки по фьючам и видимо повторные вызовы по спреду приходят уже после колбека по фьючу. А поскольку я сохранял один номер только последний то он забивался фьючем перед приходом повторного по спреду Нужно запоминать несколько номеров а не один.
OnTrade для сделок по FUTSPREAD
Пользователь
Сообщений: Регистрация: 03.02.2015
02.02.2018 17:42:41
Не совсем Вас понял. Вы хотите сказать что по одной сделке будут колбеки с разными номерами?
OnTrade для сделок по FUTSPREAD
Пользователь
Сообщений: Регистрация: 03.02.2015
02.02.2018 17:17:49
День добрый всем! В обозначенном колбеке обрабатываются сделки по указанному класскоду. При этом есть фильтр для отсеивания повторных вызовов с одинаковыми номерами. Но в результате " ни когда такого не было и вот опять" - прошла одна сделка по FUTSPREAD и получил два срабатывания колбека.
function OnTrade (trade) if tr_num~=trade.trade_num then tr_num=trade.trade_num; new_trade=1
if (trade.sec_code==spreadPara) and (string.match(trade.brokerref,"limit")) then local lot=math.abs(trade.qty) --================================================================= if bit.band(trade["flags"],4)>0 then
SendOrder("S",lot,bid-500,"M", "market", fF,M_SellFF,"SPBFUT") SendOrder("B",lot,bid+500,"M", "market", nF,M_BuyNF,"SPBFUT") end end end end Это что какие то особенности FUTSPREAD.Возможно появление сделок по фьючам которые следуют за спредом несут признаки сделки по спреду?
Взаимодействие OLua и Lua под Виндой
Пользователь
Сообщений: Регистрация: 03.02.2015
13.01.2018 09:54:13
Андрей спасибо за помощь. На сколько я помню МТ работает на исторических данных мне это не подходит. Да и не вспомню сейчас насколько он гибок в настройках, уж сам то я сваяю что мне в голову взбредет. На данный момент есть несколько наметок как развязать узелок. Возможно обойдусь оптимизацией алгоритма. За ссылки спасибо - "С" думаю все равно нужен будет со временем.
lergen написал: Возникла необходимость ускорить обработку данных в написанном тестере стратегий
А как тестер писали ? он на Луа у Вас ?
По теме, можно на С++ он запускает Луа скрипты спокойно, только нужно будет источники данных делать думаю и скрипты квика переписывать под тестер. По сути программа - тестер. (первое что в голову пришло)
Писал сам на lua. С "С" вариант мне не подходит пока с ним не работал. Дело не в языке даже а во взаимодействии его с виндой и с lua. Во все это вникнуть это отдельная тема - пока такой задачи не ставлю - со временем свободным не так хорошо как хотелось бы. Хочу пока с lua разобраться какие варианты есть передать параметры из скрипта работающего в квике скрипту который запущен в винде.
Взаимодействие OLua и Lua под Виндой
Пользователь
Сообщений: Регистрация: 03.02.2015
10.01.2018 16:53:17
Возникла необходимость ускорить обработку данных в написанном тестере стратегий поскольку на том железе что я имею мой бот с таблицей необходимгого мне размера плохо справляется - всего 4 прохода в секунду(весь скрипт). По личному опыту знаю что аналогичный скрипт исполняемый не в квике а запущенный в винде работает в десятки раз быстрее. Подскажите есть какие нибудь варианты связать два скрипта работающие в квике и в винде кроме как через запись в файл? Вариант с С# пока не подходит поскольку с ним пока не работал.
number value
Пользователь
Сообщений: Регистрация: 03.02.2015
09.01.2018 17:35:12
Ок. Спасибо за оперативность. Нашел косяк - в одном месте было присваивание st.n_f = ...которое и ломало таблицу.
if #st.tax < m then for r = #st.tax + 1 ,m - #st.tax do st.open_poz[r] = 0; st.open_fut[r] = 0; st.nh[r] = 0; st.h_r[r] = 0; st.tax[r] = 0; st.n_f[r] = 0; st.state_max[r] = 0; st.state_min[r] = 0; end end ....... ....... Потом та строка которая вызывает ошибку. Что не так?
number value
Пользователь
Сообщений: Регистрация: 03.02.2015
09.01.2018 16:59:24
И даже вот так if tonumber(st.n_f[i])>tonumber(0) then st.open_fut[i] = offer_Fut elseif tonumber(st.n_f[i])<tonumber(0) then st.open_fut[i] = bid_Fut end результат тот же
number value
Пользователь
Сообщений: Регистрация: 03.02.2015
09.01.2018 16:31:08
День добрый! Строка: if st.n_f[i] > 0 then st.open_fut[i] = offer_Fut elseif st.n_f[i] < 0 then st.open_fut[i] = bid_Fut end вызывает ошибку: attempt to index field 'n_f' (a number value)
lergen написал: Складывается впечатление что обновление open_interest несколько запаздывает. Это может быть так?
Уточните, относительно чего определяется запаздывание?
Во втором посте пример, цифра перед "//" показывает количество в последней заявке, после "//" - новое количество открытых позиций и в последних строках оно не меняется. Вопрос - количество открытых позиций пересчитывается после каждой сделки, может ли этот пересчет запаздывать?
И еще дополню свой вопрос : если я в этом же колбеке(OnAllTrade) буду обрабатывать все сделки по одному из инструментов то в моменты сильных движений колбек вероятно будет вызываться в связи с новой сделкой до того как я успею обработать старую. Не будут ли теряться при этом данные. т.е. новый вызов колбека не прервет работу старого или данные будут сохраняться в стеке?
lergen написал: Складывается впечатление что обновление open_interest несколько запаздывает. Это может быть так?
Уточните, относительно чего определяется запаздывание?
Во втором посте пример, цифра перед "//" показывает количество в последней заявке, после "//" - новое количество открытых позиций и в последних строках оно не меняется. Вопрос - количество открытых позиций пересчитывается после каждой сделки, может ли этот пересчет запаздывать?
lergen написал: А скажите какой строка в таблице параметров сделки может указывать на открытие или закрытие позиции?
В таблице обезличенных сделок такого параметра, к сожалению, нет.
А любые другие косвенные признаки найти могут помочь?
open_interest, актуальность данных
Пользователь
Сообщений: Регистрация: 03.02.2015
05.06.2017 16:37:03
Теоретически можно предположить что это все встречные сделки - в смысле открытие об закрытие и наоборот. Но столько подряд как то мало вероятно. А скажите какой строка в таблице параметров сделки может указывать на открытие или закрытие позиции?
Есть задача вычислять онлайн количество лонговых и шортовых открытых позиций. Для этого в OnAllTrade вставил код просчета опираясь на open_interest и qty. Предварительно делаю снимок потока этих данных по нужному мне инструменту. Складывается впечатление что обновление open_interest несколько запаздывает. Это может быть так? В колбеке поставлена защита от повторных срабатываний.
Создание торговых алгоритмов на LUA, Ищу программистов для создания робота под LUA
Анатолий написал: Совсем неожиданно образовалась еще одна проблема. Данная функция сработала до начала торговой сессии. В чем проблема? И как избежать таких срабатываний?
Обычное дело. Решение простое - время работы скрипта установи.С колбеками то же обычное дело - фильтруй по маркерам, например так: if tr_num~=trade.trade_num then tr_num=trade.trade_num .............. end Идентификатор обрабатываемого события сохраняем в глобальной переменной и повторный колбек с тем же идентификатором отсеивается.
KILL_BALANCE, Заявка тут же снимается???
Пользователь
Сообщений: Регистрация: 03.02.2015
14.03.2017 19:29:54
Занавес! Перечитайте это все завтра!
KILL_BALANCE, Заявка тут же снимается???
Пользователь
Сообщений: Регистрация: 03.02.2015
14.03.2017 18:33:39
Нужно что бы висела лимитная заявка!!! И при частичном исполнении снялся остаток. Можно этого добиться просто установив нужные параметры заявки. Если да то какие?
KILL_BALANCE, Заявка тут же снимается???
Пользователь
Сообщений: Регистрация: 03.02.2015
14.03.2017 18:03:15
Нужно что бы выставлялась лимитная заявка с условием - если исполнение частичное снять эаявку на остаток. Как это делается?
KILL_BALANCE, Заявка тут же снимается???
Пользователь
Сообщений: Регистрация: 03.02.2015
14.03.2017 17:31:07
transaction={ ["TRANS_ID"]="111", ["ACTION"]="NEW_ORDER", ["CLASSCODE"]="SPBFUT", ["SECCODE"]="SiU7", ["EXECUTION_CONDITION"]= "KILL_BALANCE", ["OPERATION"]="B", ["QUANTITY"]="50", ["ACCOUNT"]=account, ["PRICE"]= price, } Заявка появляется в таблице как снятая. Подскажите что не так делаю?
Что с оператором "if"?, Он не умеет сравнивать дробные числа?
Пользователь
Сообщений: Регистрация: 03.02.2015
28.10.2016 17:06:46
Забыл уточнить числа округлены. Я так думаю проще будет оба числа для верности умножить на 100...
Что с оператором "if"?, Он не умеет сравнивать дробные числа?
Пользователь
Сообщений: Регистрация: 03.02.2015
28.10.2016 06:18:53
Пример кода: .... function ...(dp) for i=-8.8,-0.8 do --message(i.."/"..dp) if dp==i then ..... end end end ... Для проверки совпадения переменных включил оператор message, совпадения происходят а проход через if нет. Оговорюсь что пару дней назад все работало. Файлы dat и info.log удалял не помогло, откат обновления не делал. Это что америка начала воплощать хакерские угрозы :D Или это подтверждение существования практики двойных стандартов и программировании:D
Установка отметок на графике через скрипт
Пользователь
Сообщений: Регистрация: 03.02.2015
27.10.2016 16:50:36
Не знаю как в последних версиях квика, но раньше эти скриптовые метки жутко тормозили терминал.
Актуальная пок/прод =/= активные заявки
Пользователь
Сообщений: Регистрация: 03.02.2015
19.04.2016 18:03:32
Отправлять пока ни чего не стал. Откатился на версию 70410. История та же. Может быть дело в инструменте (календарный спред) ? Глюк вылазит после сделок с ним. Странно но на первом терминале все работает. Еще на терминале где проявляется глюк заведен счет с единой денежной позицией - может в этом дело? Или просто мой брокер мне кислород перекрывает?
Плата за транзакции - а где их взять, У биржи есть плата за транзакции - вопрос в том где их взять
Пользователь
Сообщений: Регистрация: 03.02.2015
16.04.2016 08:07:10
Цитата
DeSan DeSan написал: привет у биржи есть плата за транзакции как я понял текущая формула - если транзакций больше 2000
Именно так.
Актуальная пок/прод =/= активные заявки
Пользователь
Сообщений: Регистрация: 03.02.2015
15.04.2016 20:30:42
Цитата
Stanislav Tvorogov написал: Архив рабочего места QUIK необходимо разместить на стороннем ресурсе, а ссылку для скачивания направить в письме.
Если можно объясните для чего это нужно.
Актуальная пок/прод =/= активные заявки
Пользователь
Сообщений: Регистрация: 03.02.2015
14.04.2016 19:32:00
Цитата
Николай Камынин написал: попробуйте откатится к предыдущей версии КВИК
Письмо на этот адрес не доходят: "Извините, мы вынуждены информировать Вас, что письмо, которое Вы отправили, не может быть доставлено одному или нескольким адресатам"
При сохранении проблемы просьба прислать архив рабочего места QUIK с открытыми таблицами "Заявки" и "Позиции по клиентским счетам" с видимыми параметрами "Акт.покупка", "Акт. продажа". без файлов ключей и файла справки info.chm на адрес: указав в письме ссылку на данную ветку форума.
Уточните про архив с открытыми таблицами. Может скрин окна квика с открытыми таблицами?
Актуальная пок/прод =/= активные заявки
Пользователь
Сообщений: Регистрация: 03.02.2015
13.04.2016 05:02:27
В добавок терминал упал с сообщением " не хватило памяти под объекты...."
Актуальная пок/прод =/= активные заявки
Пользователь
Сообщений: Регистрация: 03.02.2015
12.04.2016 19:39:42
Версия терминала 7122. Часто проявляется такой баг заявок активных нет а в таблице открытых позиций FORTS висит актуальная покупка или продажа. Иногда это уходило после удаления дат файлов. Сегодня ни чего не помогает. В результате система отвергает заявки - превышен лимит по инструменту.
Рисовать линию на графике
Пользователь
Сообщений: Регистрация: 03.02.2015
07.12.2015 13:26:59
Да нашел. Не в то место я его прописывал. Спасибо.
Рисовать линию на графике
Пользователь
Сообщений: Регистрация: 03.02.2015
07.12.2015 11:48:59
Простите за детский вопрос. Не получается вставить метку на график: