Обновился до 9.2.3.15 и получил TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND
Пользователь
Сообщений: Регистрация: 29.07.2015
02.12.2021 13:27:28
Решено Почему-то убралась галочка "Импорт внешних транзакций"
Обновился до 9.2.3.15 и получил TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND
Пользователь
Сообщений: Регистрация: 29.07.2015
02.12.2021 13:17:07
Как бороться?
Везде есть проверки па путь и название DLL До обновления самого терминала все прекрасно работало!
Trans2Quik + DDE пропускает котировки
Пользователь
Сообщений: Регистрация: 29.07.2015
15.11.2021 18:20:20
Думаете, что за 6 лет что-то изменилось? (Слева КВИК, справа МТ5)
Котировки с более точным временем
Пользователь
Сообщений: Регистрация: 29.07.2015
12.11.2021 19:19:19
Добрый день! Есть ли в КВИК таблица с ASK, BID и LAST со временем точнее секунды?
Развитие Trans2Quik
Пользователь
Сообщений: Регистрация: 29.07.2015
05.10.2021 10:07:11
Забыл сказать... Сейчас в МТ5 есть валютный рынок, срочный и фондовый. Ведут работу над опционами, а ФИНАМ уже предоставляет для МТ5 торговлю всем секциям (кроме опционов) в МТ5 Ждете когда ваш терминал вообще никому не нужен будет?
написал: Данное API уже позволяет получать тики в обход qlua/qpile? Как знаю, оно уже давно значительно не обновлялось.
Нет не позволяет, но это же не делает его не "API для внешних программ" если Вам нужен аналог qlua/qpile то для этого уже есть но он платный.
Что Вы (АРКА) все прикидываетесь не понимающими? Абсолютно всем пользователям нужно простое решение для торговли. Дали кастрированный trans2quik, сделайте его полным, чтобы можно было полноценно торговать из своего приложения! Зачем пользователям изучать мертвые QPILE, QLUA? Да и отладить серьезную программу вообще не возможно! Никому не нужны эти танцы с бубнами. Добавте функционал в trans2quik и сделайте платным (разумно)!!! trans2quik - бесплатный quikApi - платный! Вот и простое решение всех проблем!
Delphi XE4 и trans2quik.dll
Пользователь
Сообщений: Регистрация: 29.07.2015
04.10.2021 11:39:33
Только я использую асинхронные транзакции
Нужны тики FORTS для тестера стратегий
Пользователь
Сообщений: Регистрация: 29.07.2015
04.10.2021 11:33:14
В МТ5 есть тики по фьючерсам полная история нужных Вам лет
помогите написать робота
Пользователь
Сообщений: Регистрация: 29.07.2015
04.10.2021 11:27:12
Цитата
Эдуард написал: помогите написать робота для QUIK который сможет выставлять одновременно ордера в обе стороны. Также могу выкупить советник для мт4 : Дубликатор сделок MT4-QUIK
Вам нужно писать не здесь, а на сайт МТ5 Ваша задача решается за 10 минут, эксперт МТ4 подгружает nrans2quik.dll - вот Вам и копировщик.
Попытался использовать Ваш unit tr2quik; (Delphi XE8, trans2quik 1.3)
T2QConnect успешно, а при вызове функции T2QSendSyncTrans получаю Exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. Подскажите, с какими параметрами (и типами переменных) Вы вызываете функцию?
Может быть, есть идеи, от чего ошибка может возникать?
Я выкладывал полностью рабочий модуль, переписанный из исходника разработчиков, и у меня все прекрасно работает. Это Вы где-то намудрили
4.24 Транзакции. Флаги транзакции., Что это такое?
Пользователь
Сообщений: Регистрация: 29.07.2015
11.02.2021 01:41:53
Цитата
XXM написал: В Руководстве пользователя "Интерпретатор языка Lua" есть даже глава 5. Описание битовых флагов Но по флагам транзакций ни в этой главе, ни в других местах не нашел информации. Гадать как-то дискомфортно, прошу описания.
Я не знаю про пункт 4,24 Но описание битовых флагов в п,5 относится к таблицам, а не к транзакциям.
Он и будет получать настолько же "мгновенно", как и в случае бродкаста, не заваливая всю систему кучами бесполезных сообщений. Перечитайте еще раз, "раз в секунду" это процесс обнаружения клиента, как только он обнаружен, сообщения посылаются ему немедленно из колбеков. Если думаете, что пройтись по своему списку окон медленнее, чем винда пройдется по списку всех окон, то это заблуждение.
Спасибо, Антон! Только нельзя использовать SendMessage(), т.к она ожидает ответа. Странно, что PeekMessage не будет работать, PostMessage() работатет исправно. И еще... Думается, что так как я написал в разы проще будет... :)
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
04.02.2021 21:38:29
Можете "набросать" схему как организовать список хендлов и запись в этот список так, как Вы понимаете этот механизм?
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
04.02.2021 21:35:56
Посмотрел список функций w32 и эти функции там есть. Беда в том, что я с LUA познакомился 2 дня назад...
Он и будет получать настолько же "мгновенно", как и в случае бродкаста, не заваливая всю систему кучами бесполезных сообщений. Перечитайте еще раз, "раз в секунду" это процесс обнаружения клиента, как только он обнаружен, сообщения посылаются ему немедленно из колбеков. Если думаете, что пройтись по своему списку окон медленнее, чем винда пройдется по списку всех окон, то это заблуждение.
Антон! То, что Вы предлагаете - очень здорово, но как мой скрипт (LUA) будет принимать сообщения от клиентов?
Ну это как-то в лоб решение. Клиенты могут раз в секунду, скажем, рассылать бродкаст WM_APP_QUIK_CLIENT_CONNECT (название условное) с хэндлом своего окна в wparam, скрипт (один) в квике их слушает, сохраняет хэндл клиента в список подписантов и отвечает WM_APP_QUIK_SERVER_CONNECT со своим хэндлом. И все, клиент прекращает спамить, а сервер в колбеках шлет PostMessage по списку. Ну то есть стырить идею в том же дде, чуть поправив.
X-mmm. Вы сами-то торгуете несколькими роботами? Сделки от разных роботов совершаются достаточно часто, а средства для всех роботов одни. Перед сделкой роботы проверяют достаточность средств на счете для совершения оных. Поэтому каждый робот должен "мгновенно" получать инфу о состоянии счете (наличие свободных средств)
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
04.02.2021 17:42:17
Цитата
Владимир написал: СОРОК ДВА РОБОТА?! Куда уж прожорливее - хоть с какой стороны смотреть. У меня как-то и один скрипт справляется. Думаю, как и у всех нормальных людей. Ресурсов практически не жрёт - ему же не надо рассылать данные по 42 направлениям. ::
"Нормальных" людей? Вы себя к ним опрометчиво причислили. Кстати, у меня на ФОРТС, работают 2 терминала МТ5, в сумме 86 роботов, и ничего не виснет...
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
04.02.2021 16:55:46
Цитата
Anton написал: Очень прожорливо из колбеков бродкасты отправлять. Оно ж буквально все окна в системе обходит в каждом колбеке.
Прожорливо, если используется 1 робот. Я использую 42 робота. Гораздо прожорливее будет запускать в Квике 42 скрипта да еще заморачиваться, чтобы указать handle принимающего приложения (как это реализовано в экспорте в МТ5,но там все просто) Потом PostMessage() тем и хорош, что он не ждет ответа - отослал и "забыл" о ней, а все 42 робота получат данные. "Прожорливо", так это с какой стороны смотреть :)
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 21:33:01
Цитата
Что такое минимальные задержки, это каждый понимал по-своему ) ну, ежли задача стоит показать, как "квик тормозит в сравнении с метатрейдером", то верной дорогой пойдено.
При чем тут задача показать как "квик тормозит в сравнении с метатрейдером"?
Я реально торгую на Е-Б-С счете через квик, Выводил данные через DDE в свое приложение (работало очень медленно), поэтому я и решил брать данные из МТ5 Стало гораздо быстрее...
function OnFuturesLimitChange(f_change) a_table = getPortfolioInfoEx("MCXXXXXX", "XXXXX", 2) A_double = a_table.limit_open_pos lpParam = math.floor(A_double * 100) w32.PostMessage(HWND_BROADCAST, WM_EBS_MONEY, WParam, lpParam) end
function main() while is_run do a_table = getPortfolioInfoEx("MCXXXXXX", "XXXXX", 2) A_double = a_table.limit_open_pos lpParam = math.floor(A_double * 100) w32.PostMessage(HWND_BROADCAST, WM_EBS_MONEY, WParam, lpParam)
sleep(100)
end end
Установка ордера фьючерса отрабатывается (свободные средства изменяются), а акции проверю завтра, сегодня на счете мало средств (а это не Junior, а реал)
В общем, значение слипа надо ставить минимум 1, тогда ничего не виснет. А выбирать адекватное значение уже в зависимости от требований конкретно вашей стратегии.
написал: Другими словами, конструкция без слипа, типа такой
Код
function main ()
a = 0
is_run = true
while is_run do
a = a + 1
end
end
может легко повешать квик.
Нет. Если процессор одноядерный - да, это будет заметно в скорости общей работы. Если процессор многоядерный (а это нынче стандарт де-факто) - то никто ничего даже не заметит, кроме термометра на процессоре.
Попробуйте, запустите Ryzen 5 3500x на 6 ядер, квик скопытился после запуска
I-7 6850К завис после запуска скрипта
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 20:41:31
А что на глаз не видно?
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 20:30:01
Цитата
swerg написал: Чем вы измеряли высокую скорость и чему она равна?
Скундомером в руках :)
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 20:13:20
Высокоскоростная передача данных из МТ5 в свое приложение
написал: Другими словами, конструкция без слипа, типа такой
Код
function main ()
a = 0
is_run = true
while is_run do
a = a + 1
end
end
может легко повешать квик.
Нет. Если процессор одноядерный - да, это будет заметно в скорости общей работы. Если процессор многоядерный (а это нынче стандарт де-факто) - то никто ничего даже не заметит, кроме термометра на процессоре.
Так сколько ставить, чтобы бедолаге было комфортно?
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 20:05:02
Смотрим как Квик внутри себя обновляет таблицы
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 19:19:48
и последний вопрос. Я никогда не использую функцию sleep, но в скриптах LUA, как я понял, это необходимость
В конструкции
function OnStop() is_run = false end
function main() while is_run do sleep(??????) end end
Какое значение в sleep(??) лучше ставить, чтобы скрипт работал как можно быстрее
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 18:42:41
Цитата
Владимир написал: , Да что бы то ни было! Если чел торгует сам и не знает, что у него творится в портеле - это уже к ветеринару!
написал: Это колонка в таблице "Клиентский портфель"
С точки зрения программирования на Lua и, тем более, событий, надо опираться на другие, базовые таблицы. Из информации которых формируются уже "Клиентский портфель" и "Таблица состояния счета". Для срочного рынка: Ограничения по клиентским счетам --> OnFuturesLimitChange Позиции по клиентским счетам --> OnFuturesClientHolding Для рынка ценных бумаг и валютного рынка: Таблица лимитов по денежным средствам --> OnMoneyLimit Таблица лимитов по бумагам --> OnDepoLimit
Единый Брокерский Счет (брокер Открытие) Это счет, на котором можно одновременно торговать фьючерсами и акциями, при этом нет раздела средств по секциям средства для фьючерсов и акций - едины.
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 18:22:11
Не работает
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 29.07.2015
03.02.2021 18:13:37
Цитата
swerg написал: Вот же дался вам это клиентский портфель. Не надо в него смотреть с точки зрения программирования на Lua. Не надо.
Попробуйте OnFuturesClientHolding
Я же уже писал, что торгую на Един. Бр. Счете, а изменение средств (свободных) для этого типа счета видны только в таблице "Состояние счета" (не доступно для LUA) и "Клиентский портфель" OnFuturesClientHolding щас попробую...
Nikolay написал: Если говорить о доступных call back, то их список описан в документации. Не очень ясно, что требуется. Но можно предположить, что если речь про денежные средства, а не позиции, может подойти: OnMoneyLimit.
Но можете и сами организовать вызов некой функции при изменении данных портфеля, сделав регулярную проверку оного.
Да интересует изменение в таблице "ПланЧистПос", но не одна из call back функций (