Рекомендуем вам использовать "Карман транзакций" (Нажмите в рабочем месте QUIK F7 и в поиске найдите "Карман транзакций..."). В нём вы сможете создать нужную транзакцию с помощью графического интерфейса, затем сохранить транзакцию в файл и использовать этот файл как пример для импорта той или иной транзакции.
1) При создании таблицы "Карман транзакций" выберите нужный класс и транзакцию, добавьте параметры (звездочкой отмечены параметры обязательные для заполнения). 2) Нажмите F2 ("Положить транзакцию"). 3) Заполните параметры транзакции. 4) В таблице "Карман транзакций" появится созданная транзакция, её можно сохранить в tri. файл и получить пример.
Тезка ясно же пишет, что использует trans2quik.dll
...., либо активировать настройку "Пересчитывать при изменении позиций" - обновление "Клиентского портфеля" будет происходить после каждого изменения позиций.
На периодичность расчета таблицы "Купить/Продать" влияет настройка Основные настройки (F9) / Торговля / Клиентский портфель - Обновлять через ... секунд . В Вашем случае расчет таблицы производится каждые 10 секунд, после расчета происходит вывод по DDE.
Чтобы данные из таблицы не выводились каждые 10 секунд, Вы можете изменить значение указанной настройки или вообще отключить ее - в этом случае обновление таблицы выполняться не будет.
Т.е при изменении записи в таблице Клиентский портфель строка не будет выводиться по DDE, если отключить обновление?
Экспорт по DDE таблицы Купить/продать
Пользователь
Сообщений: Регистрация: 29.07.2015
26.07.2023 03:44:17
Совершенно не понятно зачем раз в 10 сек. выводить все строки из таблицы, да еще которые не изменяются в течении сессии???
Почему, при экспорте таблицы по DDE "Купить/продать" только с 4 колонками, а именно 1=Инструмент 2=Код инструмента 3=D long 4=D short Передается огромное количество строк, ведь ничего не меняется в течении сессии? Вывод "строчит" даже ночью. Зачем?
А, вообще, вывод по Pipe быстрее происходит, чем по DDE, ведь в LUA есть принудительная задержка в 1 мс. ?
LUA и PIPE
Пользователь
Сообщений: Регистрация: 29.07.2015
24.05.2023 11:13:36
Спасибо
LUA и PIPE
Пользователь
Сообщений: Регистрация: 29.07.2015
23.05.2023 17:41:59
Добрый день! Есть ли в LUA стандартная поддержка именных каналов:(Pipe)? Если да, то можно пример?
Прерывание экспорта по DDE
Пользователь
Сообщений: Регистрация: 29.07.2015
10.02.2023 19:27:08
Цитата
nikolz написал: Относительно халявы для QUIK на луа сложно сказать. Можете посмотреть мой тест
это рабочая болванка для робота При приходе сделки формирует все параметры для заявки по инструменту. =============== Если надо что-то конкретное и не сложное, напишите, нарисую.
Спасибо, конечно, но в ветке написано, что есть проблемы, тогда как у меня все работает. Я открыл эту тему, чтобы понять Квик шалит, или в моем приложении есть косяк. Приложение получилось большое (более 8 000 строк кода), возможно у меня где-то недочет.
написал: 1024 советника и 4194304 (4 миллиона) заявки в день для каждого из них.
Дело в том, чтоMDI приложении работают одновременно от 97- до 134 роботов.
Мне тоже кажется, что можно 9 бит использовать под идентификатор советника - 512 значений более чем достаточно. Оставшиеся 22 можно использовать под TransID. Знаковый (старший) бит не трогаем, чтобы не было переполнения. И никаких проблем.
Понятно, а где взять примеры на Луа, чтобы что-то выбрать? Очень не хочется разбираться в мертвом LUA
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
10.02.2023 12:51:51
Цитата
Kalmar написал: end; И, собственно все. Имя фьючерса здесь никак не учитывается. А два младших байта (1й и 0й) видимо дают 65535 вариантов TransID-ов.
Это никак не объясняет происхождение числа 0x83917001, из первого поста. По вышеприведенной логике 0x83 - это номер робота? - это 131, уже переполнение. Но 2й байт - 0х91 - не похож на месяц/год. Да и 0х7001 - 28673я транзакция?
Возможно где-то еще что-то примешивается?
Дело в то том, что я много пишу на MQL, там wdTransID - это Magic, объявленный как ULong Вот я, по привычке, для Квик использовал ULong, посылая Ulong я получал кастрированный Long/ Потом, переписал под DWORD
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
10.02.2023 12:35:35
Цитата
nikolz написал: Хочу поинтересоваться, что дает запись кода фьючерса в id. если можно, то интересует численная оценка выигрыша относительно целочисленного id. Номера советников можно написать в старших байтах. Я так раньше делал. Типа 32 бита в итоге 1024 советника и 4194304 (4 миллиона) заявки в день для каждого из них. ------------------------ Чего уж проще.
Дело в том, чтоMDI приложении работают одновременно от 97- до 134 роботов. Ордера я отсылаю асинхронно. При генерации dwTransID каждым из роботов, неизбежно дублирование ID, поэтому нужно делать уникальные ID
Прерывание экспорта по DDE
Пользователь
Сообщений: Регистрация: 29.07.2015
09.02.2023 23:02:38
Квик я пишу на Паскале (Дедфи), а вообще-то мне все-равно на каком языке писать
написал Вы экспортируйте своим сервером в свою прогу или сервером Excel в таблицу Excel. ------------------ У меня свой сервер для скрипта луа, вроде нет проблем.
А возможно из луа экспортировать таблицу "Купить/Продать", которая в Квике составляется из таблицы "Клиентский портфель" ?
в луа можно получить это : getPortfolioInfo -Функция предназначена для получения значений параметров таблицы «Клиентский портфель» , соответствующих идентификатору участника торгов «firmid» и коду клиента и это getBuySellInfo - Функция предназначена для получения параметров таблицы «Купить/Продать».
А где взять пример экспорта из скрипта Луа?
Прерывание экспорта по DDE
Пользователь
Сообщений: Регистрация: 29.07.2015
08.02.2023 14:51:57
Цитата
nikolz написал Вы экспортируйте своим сервером в свою прогу или сервером Excel в таблицу Excel. ------------------ У меня свой сервер для скрипта луа, вроде нет проблем.
А возможно из луа экспортировать таблицу "Купить/Продать", которая в Квике составляется из таблицы "Клиентский портфель" ?
Уточните, настроены ли фильтры в таблице "Текущие торги"? Если да, то какие? А так же поясните подробнее, что значит "пропадает экспорт"? Для наглядности желательно со скриншотами.
Добрый вечер!
Фильтров нет (таблица по умолчанию) В таблице 100 фьючерсов, при начале работы все данные по фьючерсам из таблицы экспортируются, а через некоторое время (бывает минуты, бывает 1 - 2 часа) перестают экспортироваться данные по произвольным инструментам. Данные других фьючерсов передаются. Нет никаких ошибок и зависаний. Сегодня обновился до 10,0,1,18 все тоже самое. Невозможно представить скриншот, странно, что Вы не знаете, что в такой ситуации скриншот бесполезен.
К участникам форума У меня только такое поведение терминала, при выводе данных по DDE ?
Вы экспортируйте своим сервером в свою прогу или сервером Excel в таблицу Excel. ------------------ У меня свой сервер для скрипта луа, вроде нет проблем.
Уточните, настроены ли фильтры в таблице "Текущие торги"? Если да, то какие? А так же поясните подробнее, что значит "пропадает экспорт"? Для наглядности желательно со скриншотами.
Добрый вечер!
Фильтров нет (таблица по умолчанию) В таблице 100 фьючерсов, при начале работы все данные по фьючерсам из таблицы экспортируются, а через некоторое время (бывает минуты, бывает 1 - 2 часа) перестают экспортироваться данные по произвольным инструментам. Данные других фьючерсов передаются. Нет никаких ошибок и зависаний. Сегодня обновился до 10,0,1,18 все тоже самое. Невозможно представить скриншот, странно, что Вы не знаете, что в такой ситуации скриншот бесполезен.
К участникам форума У меня только такое поведение терминала, при выводе данных по DDE ?
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
07.02.2023 16:24:59
Вот так, для Квик, генерится Trans ID function CalcTransID(const Data: string; const idx: integer): Dword; var k, z: integer; Value: Dword; month, year: string; begin if(idx < 0) then begin result:= 0; exit; end; k:= Pos('-', Data); z:= Pos('.', Data); month:= Copy(Data, k + 1, z - k - 1); year:= Copy(Data, z + 1, Length(Data) - z); if(TryStrToInt(month, k) = true) then begin Value:= k; if(TryStrToInt(year, k) = true) then begin Value:= Value + k; result:= (idx shl 24); Result:= Result + Value shl 16; end else result:= 0; end else result:= 0; end; А так берется, при отправке ордера TTRansID = packed record ID: Dword; Value: Dword; end;
FTransAction: TTRansID;
function TExpert.GetTransID; begin FTransAction.Value:= TransAction.Value + 1; if(TransAction.Value >= 65530) then FTransAction.Value:= 0; result:= TransAction.ID + TransAction.Value; end;
Пишу для Квик на Паскале (Delphi XE4)
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
07.02.2023 14:09:41
Добрый день!
Фьючерсы имеют имя не боле 6 байт Вы правильно все поняли. В старших 6 байтах имя символа а младшие байты служат для генерации уникальных ID. Если имя меньше, н-р RTS, то 4 байт просто не заполняется. В случае с MQL мне достаточно 1 байта для генерации уникальных ID для каждого советника. В Квик мне нужно более 256 переборов. При отсылке ордера к существующему ID прибавляется 1, если значение = 4096, то счетчик "обнуляется". Я переделал под Квик генерацию ID. К сожалению, я сейчас не дома и не могу выложить код генерации
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
06.02.2023 13:03:22
Вот здесь, код (MQL5) как реализован dwTransID
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
06.02.2023 12:59:29
Цитата
Kalmar написал: Наконец-то добрался чтобы проверить. 1. Мое сообщение говорило о том, что DWORD и LONG одно и тоже. Я не внял что сыр-бор изза знаковости. 2. Проверил, да, квик через транс2квик обрезает dwTransID если он больше "максимально положительного LONG".
Но, при этом в документации написано (см. скрин) "Указатель типа Long", т.е. никто не обещаел что с числом будут обращаться как с беззнаковым. Согласен, что есть расхождение в прототипе, и описании, и наверное это все-таки баг.
Но, признайтесь честно, вы уже подаете 2млрд. транзакций в течении одного торгового дня, и вам не хватает знакового диапазона чтобы покрыть свои нужды? Или тут принципиальный момент?
Добрый день! Дело в том, что я Генерирую автоматически dwTransID на основе имен фьючерсов, В старших байтах DWORD хранится имя фьючерса, а два младших байта 4096 вариантов dwTransID за торговый день. А в моем приложении работают от 99 до 134 экспертов (роботов), каждый из них использует свой (уникальный) dwTransID.
Прерывание экспорта по DDE
Пользователь
Сообщений: Регистрация: 29.07.2015
06.02.2023 12:52:29
Добрый день! Экспортирую таблицу "Текущие торги" с фьючерсами по DDE При запуске, все экспортируется нормально, но иногда, через несколько минут или часов, пропадает экспорт по одному или нескольким фьючерсам. Версия Квик 9,7,1,10 Это только у меня такое поведение Квик:?
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
13.12.2022 09:19:46
Посылаемый DWORD больше положительной части LONG, trans2quik (без ошибки) сам кастрирует DWORD до максимально положительного LONG!!!
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
13.12.2022 09:15:11
Внезапно.... Внимательно читаем...
Сами внимательно посмотрите на вложенный файл. И немного пошевелим мозгами! Посылаем DWORD, а возвращается Long (максимально положительная часть)
Пользователям trans2quik.dll на заметку!
Пользователь
Сообщений: Регистрация: 29.07.2015
12.12.2022 23:50:06
В файле trans2quik_api.h
dwTransID объявлен как DWORD ( TRANS2QUIK_TRANSACTION_REPLY_CALLBACK и TRANS2QUIK_ORDER_STATUS_CALLBACK)
На самом деле там LONG (положительные значения)
Пишу, так как все-равно исправлять не будут...
Колбек trade_status_callback вызывается несколько раз по одной сделке
Пользователь
Сообщений: Регистрация: 29.07.2015
07.12.2022 00:02:31
А в order_status_callback могут быть дублирующие вызовы?
Название столбца таблицы
Пользователь
Сообщений: Регистрация: 29.07.2015
01.12.2022 14:29:37
Добрый день. Я использую два экземпляра с одинаковыми версиями Квик. В одинаковых таблицах имеются одинаковые столбцы, но их названия отличаются. Н-р В одной таблице столбец называется "Макс. возм. цен.", а в другом экземпляре Квик этот же столбец называется "Макс.возм.цена".
Возможно ли редактировать названия столбцов в таблицах? Если да, то как это сделать? В каком файле дистрибутива Квик находятся названия столбцов таблицы?
Лимитированная заявка на Срочной секции
Пользователь
Сообщений: Регистрация: 29.07.2015
18.11.2022 15:41:43
Боевой КВИК в Открытии
Лимитированная заявка на Срочной секции
Пользователь
Сообщений: Регистрация: 29.07.2015
18.11.2022 15:41:10
Господа разработчики! Пожалуйста, дайте пояснения по следующей ситуации. Подается лимитированная заяка через Trans2quik с целью купить инструмент по указанной цене или снять заявку, если цена "ушла". Параметры заявки
TYPE=L - лимитированная заявка, должна исполнится по цене, указанной в заявке EXECUTION_CONDITION=KILL_BALANCE' - если этой цены (или лучшей) нет, то заявка должна сняться. Посылаю заявку на покупку с ценой 4927, а она исполняется по разным ценам, причем, не по тем, что указана в заявке. Что я не так делаю?
Фондовая секция и trans2quik
Пользователь
Сообщений: Регистрация: 29.07.2015
17.11.2022 01:58:54
Господа разработчики! Возможна ли ситуация, когда я получаю TRANS2QUIK_ORDER_STATUS_CALLBACK, что сделка была совершена, но на самом деле в терминале этой сделки нет?
Удаление отложенного ордера через trans2quik
Пользователь
Сообщений: Регистрация: 29.07.2015
14.11.2022 23:01:26
Скажите, почему частично исполненный ордер (стоит с стакане), при его удалении не вызывается TRANS2QUIK_ORDER_STATUS_CALLBACK (асинхронная подача приказов) ?
TransId не переносится через ночь., TransId не переносится через ночь.
Хотел поинтересоваться, как там дела с переносом TransId на фортсе? Планируется внедрение? Еще подскажите, параметр brokerref тоже не переносится?
Еще 10 лет не прошло...
Сообщение об ошибке в trans2quik
Пользователь
Сообщений: Регистрация: 29.07.2015
09.11.2022 17:21:39
ЂыЂ
Сообщение об ошибке в trans2quik
Пользователь
Сообщений: Регистрация: 29.07.2015
09.11.2022 17:20:52
Добрый день!
На отмену отложенного ордера в lpcstrTransactionReplyMessage пришло следующее сообщение: 09.11.2022 17:08:26.901 --> Error: ЂыЂ[ ЂыЂ] - переведите, пожалуйста
D long? D short таблицы ""Купить/Продать"
Пользователь
Сообщений: Регистрация: 29.07.2015
24.10.2022 17:45:47
Вот, что ответил брокер Открывашка:
Добрый день !
В таблицу «Купить/Продать» можно добавить столбцы «D long» и «D short». Самостоятельно рассчитать это не получится, поскольку согласно регламенту мы устанавливаем перечень ставок риска.
Пользовательская таблица
Пользователь
Сообщений: Регистрация: 29.07.2015
24.10.2022 12:15:58
Цитата
Anzhelika Belokur написал: Правильно понимаем, что Вы хотите иметь таблицу для своих каких-то записей, которые Вы будите вести аналогично блокноту и эта таблица никак не будет обновляться и изменяться терминалом? Если это так, то мы можем зарегистрировать пожелание на такую доработку.
В текущей реализации такой возможности нет. Для чего Вы хотите иметь в QUIK свою таблицу и какая там должна быть информация?
Мне нужны значения D Long D Short, но не из таблицы "Купить/Продать"
Торговый робот для Quick на Delphi, Не работает вывод данные через DDE SERVER
Пользователь
Сообщений: Регистрация: 29.07.2015
23.10.2022 19:58:02
Цитата
Артур написал: Я не прошу чтобы кто-то бесплатно мне что то сдела я заплачу
Вы сделали что хотели? Посмотрел ваш код, там сплошные ошибки...
D long? D short таблицы ""Купить/Продать"
Пользователь
Сообщений: Регистрация: 29.07.2015
23.10.2022 14:54:14
Добрый день!
Возможно ли рассчитать D Long и D Short (таблица "Купить/Продать"), имея только таблицы "Текущие торги" и "Клиентский портфель"?
Пользовательская таблица
Пользователь
Сообщений: Регистрация: 29.07.2015
21.10.2022 19:47:10
Цитата
nikolz написал: Можно, но желательно в содружестве с головой. ------------ Для справки, QLUA - это библиотека функций, написана на СИ и имеет интерфейс для вызова из скриптов, написанных на LUA. --------------- Но если не нравится Lua, то можете либо писать на любом другом языке.
У меня не стоит задача написать что-то на ЛЮБОМ языка, я задал конкретный вопрос.
Пользовательская таблица
Пользователь
Сообщений: Регистрация: 29.07.2015
21.10.2022 15:54:28
Не знаю QLUA и знать не хочу. Руками можно создать?
Не смогли воспроизвести данную проблему на нашем примере API_Tester_DLG_x64.exe, TRANS2QUIK_ORDER_STATUS_CALLBACK срабатывает на изменение статуса заявки с аналогичными параметрами. Проверьте, пожалуйста, воспроизводится ли у Вас проблема с TRANS2QUIK_ORDER_STATUS_CALLBACK на нашем примере API_Tester_DLG_x64.exe.
Понятное дело, что не смогли.
Я около 10 лет программирую роботов и нигде не было такого, что для удаления ордера требовался ТО ЖЕ идентификатор транзакции (dwTransID)! Во всех платформах и терминалах транзакции нумеруются по порядку!
Тикет ордера понятно почему тот же, но транзакция ДРУГАЯ, значит и ее номер должен быть другой!