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) и завалите брокера своими заявками -------------------------------- Успехов
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
21.02.2016 14:58:06
дополню ранее сказанное. пропуски срабатываний у Вас будут всегда происходить по следующей причине. --------------------------------- Данные в ТВС приходят пакетами. Т е сделки следующие с малым интервалом друг за другом придут к Вам одновременно. ----------------------------------- При этом колбек будет срабатывать на них последовательно и непрерывно. Т е например две сделки совершены с интервалом 100 мс но пришили в одном пакете. колбек на них отреагирует два раза но с интервалом полагаю менее мс. Т е у Вас произойдет анализ статуса на обе сделки одновременно. Если первая изменит статус а вторая вернет его обратно, то Вы этот сигнал не увидите и заявку не выставите. -------------------------------------- Эту ошибку никаким железом не исправишь - это методическая ошибка (ошибка метода). Ее можно устранить лишь изменив алгоритм работы робота. Теперь вроде все.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
21.02.2016 14:03:23
могу предположить следующее. Так как Вы пользуетесь колбеками , а они не синхронизируются то у Вас status успевает изменится туда и обратно до того момента, как Вы на него прореагируете
У БКС сервера работают медленно ( возможно так делают специально, чтобы на вип сервер подключались за денюшку, возможно старое железо, возможно клиентов много и сервер не справляется), короче реакция сервера медленная. Сейчас у нового брокера у Вас раз в 5 быстрее реакция сервера. В результате Вы сейчас просто не успеваете обрабатывать status и теряете сигнал. ----------------------------- Чем медленнее будет рынок, тем лучше у Вас будет срабатывание. -------------------------- Короче, проблема у Вас в потере сигналов status. Надо переделывать алгоритм обработки сигналов, либо работать со свечами. О чем уже писал ранее. --------------------------------- Чудес не бывает, но хочется в них верить.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 19:04:58
а почему Вы решили, что меньше сигналов - это неправильно? возможно у вас коридор для болинджера большой задан для текущего рынка.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 18:44:42
вернее сказать запаздывание 2-5 раз больше
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 18:43:58
В БКС серверы работают медленнее, чем то, что Вы показали раньше. Примерно 2-5 раз.
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 17:56:26
и еще если я правильно понял, у Вас как-то странно проверяется пересечение. Вы используете сделку и заявку Вы именно так хотите? но тогда Ваш алгоритм вообще не соответствует картинке
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 17:52:12
На картинках у Вас пересечение свечи с линией болинджера а в программе используется тик. ----------------------- свеча - это четыре индикатора вычисляемых по куче тиков. ----------------------------- поэтому то, что у Вас написано это совершенно не то, что Вы хотите (если смотреть на картинки) ------------------------------- Нарисуйте картинку тиков внутри свечи и посмотрите . Если хотите как на картинке то используйте свечи а не ТВС
Железо для торговли роботом
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 16:04:37
Хочу обратить Ваше внимание на тот факт, что в ТВС тики, а на графиках у Вас свечи. ------------------------------ Т е то, что вы реализовали это не то , что на графиках.
Определить очередь моей заявки в стакане в любой момент времени., Определение очереди.
Пользователь
Сообщений: Регистрация: 30.01.2015
20.02.2016 15:20:22
берете стакан и ищите свою заявку по цене. это и будет ваш номер в стакане.