Michael Bulychev написал: Добрый день. Пинг, который Вы смотрите в параметре LASTPINGDURATION, не является пингом в классическом понимании (ICMP протокол). Это определенные данные, которыми терминал и сервер обмениваются в процессе работы. Приоритет таких сообщений очень низкий. Это значит что ответные "понги" клиенту будут отправляться только в том случае, если больше нет торговых данных в очереди на отправку. Этим и объясняется разница между приведенными выше данными.
Добрый день,Михаил, С тем, что это не пинг а что-то Ваше - это понятно. Теперь просьба на конкретных данных мне объяснить вот наиболее интересные: Я выбрал лишь задежкии более 1 секунды. как видно их тьмы и тьмы. ------------------------------ Как Вы объясните наличие задержки в 10 секунд в 14:23:49 в 16:07:02. ---------------------------- какие по-вашему мнению так интенсивно отсылались по каналу в 100 мбит? ----------------------- И куда эти данные пришли, если я за это вреня не получил эти мегабайты ------------------------ Как сказал классик: "Суха теория, мой друг"
2016-02-29
12:09:09
1109
27.3
2016-02-29
12:13:35
1015
120.4
2016-02-29
12:14:36
6125
27.1
2016-02-29
12:15:05
1218
27
2016-02-29
12:43:41
2266
27.2
2016-02-29
12:51:12
2828
27.1
2016-02-29
12:54:06
1281
29.7
2016-02-29
12:58:36
1032
26.9
2016-02-29
13:01:16
4859
27.3
2016-02-29
13:01:46
1578
27.1
2016-02-29
13:02:16
1907
27.1
2016-02-29
13:08:15
1156
27.1
2016-02-29
13:38:16
1390
27.2
2016-02-29
13:43:56
3453
27.1
2016-02-29
13:44:19
1485
27.2
2016-02-29
13:45:20
1188
29.6
2016-02-29
14:23:49
10125
26.9
2016-02-29
15:27:04
2687
27
2016-02-29
15:53:08
4516
31.1
2016-02-29
15:54:18
3844
27.1
2016-02-29
15:55:07
2360
27.1
2016-02-29
16:05:11
1093
27.1
2016-02-29
16:07:02
10922
27.2
2016-02-29
16:13:07
3796
27.4
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
29.02.2016 15:58:56
делаю замеры неделю. Результаты того же вида.
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
29.02.2016 15:57:51
замеры делал сегодня время указано на графиках. брокер указан на графике UID 2895 Замеры делаются и сейчас, так как мониторинг встроил в робота
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
29.02.2016 12:11:50
Добрый день, выкладываю картинку мониторинга канала связи и задержки данных сервером QUIK. как видно из графиков ( задержка канала фактически постоянна и равна 27 ms) задержка данных сервером QUIK имеет огромные величины. Как говорил классик: Может быть в консерватории пора что-то изменить? ------------------------------------ Налицо ляпы либо в ядре сервера либо в головах технической службы брокера. --------------------------------- Хотелось бы услышать начальника транспортного цеха по данному вопросу.
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
29.02.2016 07:06:20
У меня вопрос к автору темы. А зачем использовать мьютекс, если у нас один процесс? Спасибо
Переподключение к серверу: автоматическое или из Lua
пользуйтесь заведомо проверенными источниками информации, и не читайте рекламы как стать миллионером бесплатно. -----------------------------
А если серьезно, то речь идет о "специальных" библиотеках - вернее сказать модулях, которые написаны специально для решения прикладной задачи . --------------------------------- Т е если делается прога для конкретного решения, например автоматического запуска КВИК, и к ней предлагается добавить специально написанный dll модуль то получить в встроить в него трояна отсылающего пароль не представляет особого труда. ------------------------------ Но если мы используем библиотеки разширяющие фозможности официального луа без привязки к прикладной задачи, например socket для работы с интернет, и пишем скрипт без подключения где-то взятых на халяву специальных библиотек, то проблем со злым умыслом фактически нет. Примерно так. ------------------------------------------ Но полагаю, что все это Вы знаете сами, так как вечный треп о том, что кому-то нужен, непонятно зачем , ваш логин и пароль - это страшилка для буратин.
Трендовые линии привязка к одному графику
Пользователь
Сообщений: Регистрация: 30.01.2015
29.02.2016 06:39:17
Цитата
swerg написал: disasterovich , у вас совсем немного инструментов, между которыми вы переключаетесь.
А что если сделать несколько вкладок, на каждой вкладке - график своего инструмента. Тогда это разные графики, на каждом свои тренды. И переключаться легко и быстро.
В термина QUIK отображение графика ест много ресурсов поэтому такое решение очень затратное.
Переподключение к серверу: автоматическое или из Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 20:29:09
можно такой скрипт написать на обычном луа( не встроенным в КВИК) без спец библиотек. и никто никуда ничего ...
Переподключение к серверу: автоматическое или из Lua
swerg написал: После потери связи можно настроить автопереподключение штатными средствами. А чтобы терминал .
Ага, и при первом же использовании этот файл с dll в который средний пользователь QLUA заглянуть не сможет, кинет вам его логин и пароль))) А то оба файла pubrink и sebrink в фоном режиме)
для особо мнительных напишите скрипт на Autoit без доп библиотек. Я таким скриптом пользуюсь ...надцать лет. пример можно найти на моем сайте
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 10:19:31
т е на какой момент извлеченный в main элемент будет первым в таблице, если колбеке есть вставка первого элемента?
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 10:11:25
вопрос является ли потокобезопасным оператор извлечения элемента таблицы t: local x=t[1];
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 10:05:37
и еще можно обойтись без мьютекса вообще лишь используя concat ->sconcat remove ->sremove insert->sinsert sort->ssort и создавая копию очереди в main.
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 09:56:44
что-же касается простаивания колбеков, при работе main, то это можно решить путем копирования очериди в локальный массив в main. и далее main работает с копией, а колбеки с очередью
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 09:48:50
Цитата
Вячеслав написал: Николай Камынин , вопрос немного не об этом. Я уже выполняю синхронизацию на уровне мьютексов. Вопрос в том, прочитаются ли данные в потоке main сразу после вставки их в таблицу в обработчике callback'а или наоборот.
Перечисленных потокобезопасных функций мне не достаточно. В частности, мне нужно пройтись по таблице, в которой добавляются/удаляются элементы из callback'а и выполнить определённые действия для некоторых элементов по условию.
Я делаю иначе: если потоку main делать нечего, то я его усыпляю. в результате он не занимает никаких ресурсов процессора. когда я обновляю таблицу, то пинаю поток main, он просыпается и обрабатывает то, что ему пришло в очереди. после этого он снова засыпает до нового пинка.
Трендовые линии привязка к одному графику
Пользователь
Сообщений: Регистрация: 30.01.2015
28.02.2016 09:37:09
Цитата
swerg написал: В смысле одно окно графика, но переключаете инструмент при помощи рядом стоящей таблицы со список инструментов и якоря, верно?
верно. на картинках включен якорь.
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2016 18:00:34
Потокобезопасные функции для работы с таблицами Lua
Одновременная работа с таблицами из функций обратного вызова скрипта и функции main() может приводить к неопределенным ситуациям. Для решения этой проблемы qlua.dll предоставляет потокобезопасные аналоги стандартных функций Lua. Формат вызова потокобезопасной функции совпадает с форматом вызова аналогичной стандартной функции Lua. вместо concat ->sconcat remove ->sremove insert->sinsert sort->ssort
std::recursive_mutex и cинхронизация потоков в Lua
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2016 17:56:28
для начала можно почитать документацию QLUA где указано: ---------------------------------- Потокобезопасные функции для работы с таблицами Lua Одновременная работа с таблицами из функций обратного вызова скрипта и функции main() может приводить к неопределенным ситуациям. Для решения этой проблемы qlua.dll предоставляет потокобезопасные аналоги стандартных функций Lua. Формат вызова потокобезопасной функции совпадает с форматом вызова аналогичной стандартной функции Lua. В таблице представлены стандартные функции Lua и соответствующие им потокобезопасные аналоги:
Стандартная функция Lua
Потокобезопасная функция
concat
sconcat
remove
sremove
insert
sinsert
sort
ssort
Этого достаточно?
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2016 13:28:42
теперь напишите , как Вы понимаете срабатывание стопа на каком-либо числовом примере, при этом укажите о чем Вы говорите - о стоп-лимите или тэйк-профите.
пересечениэ мувингов
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2016 13:24:47
могу предположить, что индикаторы вычисляются на закрытие свечи. В этом случае они изменятся лишь на открытии новой и Вы получите то, что получаете. Надо считать индикаторы в скрипте.
пересечениэ мувингов
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2016 13:22:40
В приведенном коде нет открытия позиции. Напишите точно - что,где,когда
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
26.02.2016 20:06:06
почитайте в документации по квику раздел 5 пункт Условные(стоп)-заявки Типы заявок 4.Тэйк-профит и стоп-лимит
у Вас нет присвоения значения переменной SEC_PRICE_STEP ---------------------- "Это у Вас не заливная рыба"
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 12:36:21
это значения параметра LASTPINGDURATION - Задержка данных при обмене с сервером
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 12:33:58
это значения параметра
LASTPINGDURATION
Задержка данных при обмене с сервером
не могу снять с графика цены параметры фрактала, значение всего одного параметра вытягиваемого с указываемого на графике идентификатором графика фрактала равно нулю на 30 последних свечах
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 11:37:56
кроме того, фрактал пишется вроде бы High и Low, но это надо проверять уже не помню точно
не могу снять с графика цены параметры фрактала, значение всего одного параметра вытягиваемого с указываемого на графике идентификатором графика фрактала равно нулю на 30 последних свечах
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 11:36:05
Если память мне не врет, то индикатор фрактала в квик работает в зад. Т е записывает значения в прошедшие свечи. Поэтому в текущей свече будет всегда ноль. ----------------------------------------------- Это чтобы работа с КВИК не казалось не медом.
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 11:32:52
а как Вы узнали, что не видит?
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 11:28:43
т е отвечать на поставленные вопросы Вы не хотите. Например, Вы можете показать результаты своих тестов задержки для любого брокера не называя его? или таких тестов вы не делали? Т е вам это по...? для информации привожу результаты мониторинга задержки ответов за вчера:
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 10:51:09
если самому жевать лень, то сразу пишите и строки . где 46 строка?
ocal Transaction = { ["ACTION"] = "NEW_STOP_ORDER", -- Тип заявки ["TRANS_ID"] = tostring(trans_id), ["CLASSCODE"]="SPBFUT", ["SECCODE"]="SRH6 ", ["ACCOUNT"]="SPBFUT011Ib ", ["OPERATION"]="B", ["QUANTITY"]= "1", ["PRICE"]= tostring(PriceS), ["STOPPRICE"] = tostring(stopprice), -- Цена Тэйк-Профита ["STOP_ORDER_KIND"]= "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки ["EXPIRY_DATE"]= "TODAY", ["SPREAD"]= "20", ["STOPPRICE2"]= tostring(stopprice2), -- Цена Стоп-Лосса ["IS_ACTIVE_IN_TIME"]= "NO" } sendTransaction(Transaction); -------------------------------------------------------- если самому живать лень, то ы сразу пишите и строки . где 46 строка?
Ошибка в создании транзакции, ОШИБКА 159
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 10:45:44
нет кода клиента CLIENT_CODE
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 10:39:38
["SPREAD"]= "20" нет запятой надо так ["SPREAD"]= "20",
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 10:32:16
покажите 39 линию в тексте.
Тейк Профит и Стоп Лос
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 06:56:38
expected (to close '{' at line 39) near '[' в линии 39 отсутствует закрывающая скобка для '{} около '[' ------------------------------------------------------ это че Вы и жевать за меня будете? - АГА!!!
Add/SetLabel
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 06:50:59
как я понял, удалять можно после закрытия квик или окна. В остальных случаях - "асинхронно" означает "никто это не изучал "
Отставание от системного времени
Пользователь
Сообщений: Регистрация: 30.01.2015
25.02.2016 06:47:02
чтобы решить проблему надо: 1) синхронизировать часы компьютера с сервером времени 2) в момент задержки посмотреть диспетчером задач ( но лучше собрать за день в лог файл) параметры системы (загрузка процессора, объем пиковой памяти и т д) 3) записать в лог файл в течении дня информационные параметры квика. 4) на основе этой информацию скажу причину.
Ошибка в создании транзакции, ОШИБКА 159
Пользователь
Сообщений: Регистрация: 30.01.2015
24.02.2016 21:23:25
это наверно на учебном сервере? возможно не проходит По рынку и еще Вы как-то странно задаете, если по рынку то зачем цена если по цене то почему по рынку?
Код бумаги из Краткого названия бумаги, Можно ли получить Код бумаги из Краткого названия бумаги?
Пользователь
Сообщений: Регистрация: 30.01.2015
24.02.2016 18:50:54
можно делать еще так. создаете файл или коллекцию используемых классов и бумаг после этого ищите лишь в этой коллекции вообще- настоятельно рекомендую переходить на луа. По многим причинам, В частности в вашей задаче поиск будет осуществляться существенно быстрее так как строки сравниваются как целые числа (по хешам)
Код бумаги из Краткого названия бумаги, Можно ли получить Код бумаги из Краткого названия бумаги?
Пользователь
Сообщений: Регистрация: 30.01.2015
24.02.2016 11:04:25
сначала получаете список классов потом в цикле перебираете бумаги в классе и ищите по краткому названию свою
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
24.02.2016 08:44:21
Добрый день Вопрос к разработчикам QUIK. Наблюдаю следующую картину. 1) В информационном табло Задержка данных при обмене с сервером составляет при малой загрузке сервера брокера (нет торгов или вечерняя сессия) от 63 до 170 мс при большой загрузке (начало торгов активная сессия) 150 ... 250 мс (временами до 1 сек) 2) пинг на ip севера дает 16 мс ---------------------------- Получается, что запаздывание ответа от сервера терминалу в 10-20 раз больше, чем запаздывание за счет каналов связи. -------------------------- Вопрос: 1. Какая возможная причина такого запаздывания ответа сервера брокера? 2.Брокер умышленно создает дополнительное запаздывание? Верно? 3. Это делается средствами QUIK или доп оборудованием? 4. С какой целью это делается? Ваши варианты. Спасибо
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Пользователь
Сообщений: Регистрация: 30.01.2015
23.02.2016 15:15:27
Цитата
Андрей Мурга написал: У меня слип(120000000000) делает 100 меседжей в секунду
А в документации написано так: NUMBER sleep(NUMBER time)
Параметры:
Параметр
Тип
Описание
time
NUMBER
Время, на которое приостанавливается выполнение, в миллисекундах
Пример: Sleep(1000) -- приостановка выполнения скрипта на одну секунду ------------------------------ Обращаю ваше внимание, что в документации ошибка: В первом случаем написано sleep, а в примере Sleep. А это две большие разницы. Может быть у вас не тот слип. Вот пример сообщение будет отображаться 1 раз в секунду 100 раз.
Скрытый текст
run=true; function main() count=0; while run do if res then message(res) else message("полет нормальный") end count=count+1; if count>100 then run=false end sleep(1000) end message("приземлился") end
function OnStop(s) run = false end
Что за [ FORTS ] [ 90112 ] " SQLProxy ограничение борьбы с наводнениями " .Кто сталкивався?
Пользователь
Сообщений: Регистрация: 30.01.2015
23.02.2016 15:03:04
Одного неученого спросили, почему Вы такой глупый? Он ответил - Потому, что моя не хочет быть читателем, моя хочет быть писателем.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
22.02.2016 19:54:58
что именно? в инете много инфы, например я когда-то написал это (уже и сам забыл)
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
22.02.2016 07:19:05
проблема решается так: 1) создаем очередь сигналов пересечения 2) в колбеке ТВС каждое новое пересечение запихиваем в очередь 3) в функции main на каждый сигнал из очереди посылаем соответствующую транзакцию и сигнал убираем из очереди --------------------------------- Т е обработка колбеков должна осуществляться с помощью очередей. Я делаю в скриптах именно таким образом.
Закрытие позиции, нет индикации, Есть только значки покупки и продажи, непонятно какая позиция закрыта, если позиций несколько
Пользователь
Сообщений: Регистрация: 30.01.2015
21.02.2016 15:33:30
Цитата
rozmin написал: Проблема: например, я открываю позицию покупка 5 контрактов по 10 руб, потом покупаю ещё 5 по цене 20 руб, потом продаю 5 контрактов по цене 30 руб. Не понятно, какая из позиций закрылась, первая покупка по 10 руб или вторая покупка по 20 руб?
Предлагаю решение - проводить соединяющие линии между сделками.
Попробую объяснить популярно, в чем ошибка спрашивающего. Так как на бирже совершаются обезличенные сделки по стандартизованным продуктам, то у любого игрока есть лишь одна позиция по каждому инструменту. Т е если мы совершаем сделку (биржа - это место совершения сделок) , то мы изменяем параметры позиции по инструменту ( т е не создаем еще одну, а изменяем существующую позицию по данному инструменту) Может быть много позиций, но по множеству инструментов. ---------------------------------- Теперь о позиции по инструменту. возможны следующие состояния ------------------------ рынок акций или облигаций: открыт лонг на свои деньги открыт лонг на заемные деньги закрыт лонг (продажа своих бумаг ) открыт шорт (продажа заемных бумаг) вне рынка - позиция нейтральная(нулевая) ------------------------------ рынок фьючерсов: открыт лонг открыт шорт вне рынка - позиция нейтральная ------------------ примерно так
Проблема с циклом
Пользователь
Сообщений: Регистрация: 30.01.2015
21.02.2016 15:18:26
попробуйте так:
Скрытый текст
local t = { ["CLASSCODE"]="SPBFUT", ["SECCODE"]="RIH6", ["ACTION"]="NEW_ORDER", ["ACCOUNT"]="SPBFUT00b52", ["CLIENT_CODE"]="99883", ["TYPE"]="L", ["OPERATION"]="S", ["QUANTITY"]="1", ["PRICE"]= "70500", ["TRANS_ID"]="1" } run=true; function main() count=0; while run do --res=sendTransaction(t) if res then message(res) else message("полет нормальный") end count=count+1; if count>100 then run=false end sleep(100) end message("приземлился") end
function OnStop(s) run = false end
Если Вы запустите ваш скрипт то Вы никогда не сможете его остановить. так как окно сообщения которое будет выводится будет блокировать ваши попытки что-нибудь сделать ( это прикол разрабочиков квика, чтобы жизнь седом не казалось) ------------------------------- Поэтому я написал вам пример который крутится 100 раз и завершается. отправку транзакции я закоментировал т е этот пример лишь покажет вам сообщение ------------------------ далее если захотите завалить сервер своими транзакциями то уберите -- перед res=sendTransaction(t) и завалите брокера своими заявками -------------------------------- Успехов