nikolz (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 30 31 32 33 34 35 36 37 38 39 40 ... 80 След.
Функция getDepoEx возвращает nil на имеющийся в портфеле инструмент, В каких случая такой возможно?
 
предположу, что проблема в том, что все функции в QLUA глобальные.
Это значит, что когда колбеки исполняются, то блокируют доступ getDepoEx к архиву инструментов.
А  main не ждет. В итоге ему возвращают nil.
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Владимир написал:
nikolz, Не говорите ерунды, лапуль. Во-первых, свечи для интервалов в секунды нафиг не нужны, а уж применение Си и вообще противопоказано. У меня минимальный интервал 10 секунд, но и это маловато, в качестве базового таймфрейма, в основном, используется 30-секундный. Всё на чистом Луа. А уж использовать OnAllTrade или ТОС могут только камикадзе. Ах, да - и пользоваться незакрытыми свечами тоже: у меня в своё время просто челюсть отвалилась, когда я об этом услышал.
купи клей для челюсти.
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Quikos,
Если Вы хотите построить свечи с интервалом меньше 1 минуты, то вам надо работать с колбеком OnAllTrade ,
который вызывается перед тем как сделка будет записана в таблицу обезличенных сделок.
-------------------
Свечи для интервалов в секунды лучше строить на СИ.  
Как отключить линии DI+ и DI- на индикаторе ADX в квике?, Очень мешают и раздражают эти две линии
 
Цитата
Алексей написал:
Здравствуйте. Подскажите, как найти и внести изменения в скрипт существующего индикатора. Спасибо
Встроенные в КВИК индикаторы - это не скрипты.
----------
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Цитата
Quikos написал:
Цитата
Nikolay написал:
Вам уже уже писали, что чтобы понять, что пришел новый бар, надо всего лишь сравнить запомненное при прошлом опросе значение ds:Size() с новым. При этом можно опрашивать не постоянно, а с периодичностью заказанного интервала.
А чтобы узнать изменения цены можно использовать колбек OnParam, можете сами периодически читать через getParamEx, или таблицу всех сделок, если нельзя пропускать ни одной сделки. А можете и сами просто читать ds:Close() - это и будет текущая цена на момент запроса.
1)Ну так я тоже писал, что считаю подобный опрос в цикле - неправильным, некорректным, неэффективным. Опрашивая просто в цикле - во первых придется каждый раз заказывать ds:Size(). Во вторых - так вы 100% будете пропускать значения.
2)Насчет таблицы всех сделок - тоже писал, что не хочу запускать вручную в Квике что либо помимо скрипта.
Вы заблуждаетесь.
-------------------------
1) Не надо опрашивать что-то в цикле.
------------
2) Если Вас интересует изменение цены (какой?)
Есть две цены - предложения и сделки.
------------------
Свеча строится по ценам сделок.
--------------------------
если я правильно понял, то Вы говорите о последней текущей свече.
-------------------
Изменение цены в реальном времени будет всегда в незакрытой т е последней свече
-----------------------
Нет надобности вообще что-то считать.
Читайте последнюю свечу всегда.
---------------------
А свечу Вы можете читать по колбеку onParam или по колбеку OnAllTrade .
И нет никакого цикла.
--------------
Вы не заказываете ds:Size ()  Это просто размер таблицы архива свечей. Т е эта функция читает ячейку с адресом первой свободной ячейки таблицы свечей.
На это чтение у вас уйдет примерно 0.000005 сек.  это много?
---------------
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Quikos написал:
Цитата
nikolz написал:
 
Цитата
Quikos  написал:
Индекс свечи приходит в SetUpdateCallback. А размер таблицы data_source обновляется по мере прихода свечи.
 В начальный момент у вас нет свечей , а размер таблицы не нулевой, так как в ней содержатся указатели на функции.
Вы это хотя бы поняли ?
------------------------------
Покажите пример того, о чем говорите.
Да я это сразу учел. Я наверное некорректно задал, мне нужно было проверять свечи только после того, как они превысят первоначально запрошенный размер таблицы. И когда номер свечи будет будет боль размера Первоначально запрошенной таблицы при первом вызове SetUpdateCallback -то это значит уже пришли новые данные.
Я наверное не полностью сформулировал вопрос в само начале.
колбек вызывается когда приходят новые свечи, т е те свечи которых нет в архиве.
Это могут быть пропущенные свечи.
-------------------
Чтобы читать лишь нужные свечи не нужен колбек.
Вы можете контролировать получение нужной вам свечи
по числу свечей в архиве терминала либо по дате и времени последней свечи в архиве.
Для этого есть функции
ПараметрТипОписание
O

function

Получить значение Open для указанной свечи
HfunctionПолучить значение High для указанной свечи
LfunctionПолучить значение Low для указанной свечи
Cfunction

Получить значение Close для указанной свечи

V

function

Получить значение Volume для указанной свечи
TfunctionПолучить значение Time для указанной свечи
SizefunctionВозвращает текущий размер (количество свечек в источнике данных)

Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Quikos написал:
Индекс свечи приходит в SetUpdateCallback. А размер таблицы data_source обновляется по мере прихода свечи.
В начальный момент у вас нет свечей , а размер таблицы не нулевой, так как в ней содержатся указатели на функции.
Вы это хотя бы поняли ?
------------------------------
Покажите пример того, о чем говорите.
Net error "Удалённый хост принудительно разорвал существующее подключение", Такая ошибка ,как правило, возникает ближе к концу торгов.Подключиться после этой ошибки невозможно в этот день. На пк установлено ещё 2 квика,они при этом работают нормально. Подключение через USB-модем
 
Цитата
Андрей написал:
I512600K  кулер нокта 15

USB WiFi TpLink
вылетела ошибка "ошибка шифрования",
запустил второй раз "не найдены ключи"
запустил третий раз "завис интернет"  но не вырубился
запустил четвертый раз квик работает
не важно какой кулер, если забит пылью.
У Вас ошибки разные , не связаны с приложением, это признак проблем с железом.
Net error "Удалённый хост принудительно разорвал существующее подключение", Такая ошибка ,как правило, возникает ближе к концу торгов.Подключиться после этой ошибки невозможно в этот день. На пк установлено ещё 2 квика,они при этом работают нормально. Подключение через USB-модем
 
возможно проблема с перегревом компа.
Почистите вентилятор процессора.
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
т е эта таблица содержит указатели на функции, а не свечи.
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Quikos написал:
Вопрос, номер свечи, который приходит в колбеке SetUpdateCallback-  ВСЕГДА будет равен размеру таблицы, которая возвратила CreateDataSource ?
смотрим в документацию библиотеки QLUA  и читаем что функция CreateDataSource:

TABLE data_source, STRING error_desc  (STRING class_code, STRING sec_code, NUMBER interval, [, STRING param])
Параметры:
  • class_code – код класса,
  • sec_code – код инструмента,
  • interval – интервал запрашиваемого графика,
  • param – необязательный параметр. Если параметр не задан,
    то заказываются данные на основании таблицы обезличенных сделок, если задан –
    данные по этому параметру.

Функция возвращает таблицу data_source в случае успешного  завершения. Если указан неверный код класса или параметр, то возвращается «nil».  При этом error_desc содержит описание ошибки.

Так вот, размер этой таблицы не может быть равен индексу свечи в колбеке

смотрим документацию:

Функция CreateDataSource возвращает таблицу Lua с параметрами:

ПараметрТипОписание
SetUpdateCallbackfunctionПозволяет задать пользователю функцию обратного вызова для обработки  изменившихся свечек
O

function

Получить значение Open для указанной свечи
HfunctionПолучить значение High для указанной свечи
LfunctionПолучить значение Low для указанной свечи
Cfunction

Получить значение Close для указанной свечи

V

function

Получить значение Volume для указанной свечи
TfunctionПолучить значение Time для указанной свечи
SizefunctionВозвращает текущий размер (количество свечек в источнике данных)
Closefunction

Удаляет источник данных, отписывается от получения данных

SetEmptyCallbackfunction

Позволяет получать данные с сервера без указания функции обратного вызова  

Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Quikos написал:
практика показывает, что совпадает. Вы на каком основании сделали такой вывод ?
покажите Вашу практику.
Функция getDepoEx возвращает nil на имеющийся в портфеле инструмент, В каких случая такой возможно?
 
Цитата
Для ответа на ваш вопрос добавьте все параметры в message и покажите сообщения.
---------------------------
Зачем sleep на 1 секунду?
l
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
это вообще две большие разницы.
Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?, Номер свечи из SetUpdateCallback всегда будет равен размеру таблицы ?
 
Цитата
Quikos написал:
Вопрос, номер свечи, который приходит в колбеке SetUpdateCallback-  ВСЕГДА будет равен размеру таблицы, которая возвратила CreateDataSource ?
нет
Зависает QUIK, Терминал тупо висит и не реагирует ни на что
 
Цитата
Валерий написал:
Брокер Сбербанк
QUIK 7.26.0.26
24.10.2022 после 12:00 мск завис. Несколько раз кратковременно начинал работать и тут же опять "умирал".
Служба поддержки держит глухую оборону: невозможно дозвониться.
У меня тоже сбербанк
Вчера,  сегодня и вообще работает без зависания.
Предположу,  что у вас возможны три причины.
1) Самопальные скрипты и индикаторы
2) комп и другие приложения.
3) плохой канал связи и провайдер.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Alexander написал:
Цитата
nikolz написал:
читайте Раздел 5. Торговые операции клиента. Руководство пользователя QUIK.там все написано.
Ничего путнего там не написано. Я это читал раньше. На мой вопрос там ответа нет.
Если правильно понял Ваш вопрос, то вас интересует в чем различие рыночной заявки по акциям и по фьючерсам.
-------------------------------------------------
Ответ есть в указанном разделе.
вот он:
для акций:
«Рыночная» – признак заявки без указания цены исполнения.
Такая заявка исполняется на бирже по ценам имеющихся встречных заявок, начиная с лучшей из них.
--------------------------
Для фьючерсов:
«Рыночная» в пустое поле «Цена» подставляется значение «Максимально возможная цена», а при подаче заявки на продажу – «Минимально возможная цена» для данного инструмента.
«Рыночная» –  при наличии встречного предложения заявка исполняется по цене не хуже, чем значение, указанное в поле.
--------------------------
Т е для акции расчет требуемых средств будет выполнен по лучшей  цене, а для фьючерсов фактически по наихудшей цене.
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Alexander написал:
Вот ещё хочу тут спросить старожилов по такому поводу. Скрипт на Lua сначала делает продажу акций Лукойл по рынку в шорт 10 шт через sendTransaction() при этом естественно ставлю TYPE="M", PRICE="0".
Транзакция проходит, заявка исполнилась нормально. Следующая транзакция на покупку фьючерса "LKZ2", т.е. LKOH-12.22 в количестве 1шт так же по рынку, где в sendTransaction() установлено так же TYPE="M", PRICE="0". Но при этом транзакция с ошибкой: Ошибка создания заявки. [GW][332] "Нехватка средств по лимитам клиента." Пытаюсь купить данный фьючерс вручную в квике, установив галочку в окне ввода заявки "Рыночная" - результат опять та же самая ошибка!
В результате фьючерс купил таки вручную, указав цену на покупку из стакана равную лучшей цене продажи. Транзакция прошла без ошибок и заявка тут же исполнилась. Да мог бы поставить цену покупки и выше чем лучшая цена продажи на несколько пунктов, это я знаю, и заявка ушла бы так по лучшей рыночной цене.
Но вопрос: почему sendTransaction() работает на покупку/продажу акций по рынку с значениями TYPE="M", PRICE="0", а на  покупку/продажу фьючерса с значениями TYPE="M", PRICE="0" выдаёт ошибку: "Нехватка средств по лимитам клиента." и я вынужден ставить цену хуже рынка, чтобы заявка ушла по рынку? Заявка то в конечном итоге прошла, значит средств достаточно!
читайте
Раздел 5. Торговые операции клиента. Руководство пользователя QUIK.
там все написано.
Пользовательская таблица
 
Цитата
Михаил Филимонов написал:
У меня не стоит задача написать что-то на ЛЮБОМ языка, я задал конкретный вопрос.
Читайте инструкцию по КВИКу там все написано,
Там написано что это можно и как делать?
очевидно , что нет.
Вот вам и ответ на ваш вопрос.
Пользовательская таблица
 
Цитата
Михаил Филимонов написал:
Цитата
nikolz написал:
Можно, но желательно в содружестве с головой.
------------
Для справки,
QLUA - это библиотека функций,
написана на СИ
и имеет интерфейс для вызова из скриптов,
написанных на LUA.
---------------
Но если не нравится Lua,
то можете либо писать на любом другом языке.
У меня не стоит задача написать что-то на ЛЮБОМ языка, я задал конкретный вопрос
может поясните, что конкретно означает ваш вопрос: "Руками можно создать?"
Вы еще чем-то создаете ?
Пользовательская таблица
 
Можно, но желательно в содружестве с головой.
------------
Для справки,
QLUA - это библиотека функций,
написана на СИ
и имеет интерфейс для вызова из скриптов,
написанных на LUA.
---------------
Но если не нравится Lua,
то можете либо писать на любом другом языке.
Пользовательская таблица
 
Функции для работы с таблицами Рабочего места QUIK

В таблицах Рабочего места QUIK, созданных с помощью скриптов на языке Lua,  поддержаны следующие возможности:  


  • режим «drag-and-drop»,
  • пользовательские фильтры,
  • условное форматирование,
  • размещение на «экранных закладках»,
  • поиск значения в ячейках таблицы,
  • печать таблицы с предварительным просмотром.

Ниже приведен список действий, которые не поддерживаются для таблиц,  созданных на языке Lua:  

  • таблицы не сохраняются в файл конфигурации,
  • отсутствует диалог редактирования таблицы,
  • отсутствует контекстное меню таблицы (кроме пункта «Переместить на
    закладку»),
  • не создается копия таблицы,
  • не задается по умолчанию заголовок окна таблицы,
  • отсутствует экспорт данных из таблицы,
  • недоступно управление «горячими клавишами».

Список функций:  

  • AddColumn - добавляет колонки в таблицу
  • AllocTable - создает структуру, описывающую
    таблицу
  • Clear - удаляет содержимое таблицы
  • CreateWindow - создает окно таблицы
  • DeleteRow - удаляет строку из таблицы
  • DestroyTable - закрывает окно таблицы
  • InsertRow - добавляет строку в таблицу
  • IsWindowClosed - возвращает «true», если закрыто
    окно с таблицей
  • GetCell - позволяет получить данные из ячейки
    таблицы
  • GetTableSize - получает количество строк и
    столбцов
  • GetWindowCaption - получает текущий заголовок
    окна
  • GetWindowRect - получает координаты верхнего
    левого и нижнего правого угла окна, содержащего таблицу
  • Highlight - подсвечивает выбранный диапазон
    ячеек с плавным «затуханием» для таблицы
  • RGB - преобразовывает компоненты RGB (red,
    green, blue) в одно число для дальнейшего использования в функции SetColor
  • SetCell - задает значение для ячейки в таблице
  • SetColor - устанавливает цвет ячейки, столбца
    или строки для таблицы
  • SetTableNotificationCallback - задает функцию
    обратного вызова для обработки событий в таблице
  • SetWindowCaption - задает заголовок окна
  • SetWindowPos - устанавливает положение окна с
    таблицей
  • SetSelectedRow - выделяет определенную строку
    таблицы

Руководство пользователя QUIK © ARQA Technologies / www.arqatech.com/ru/products/quik/
QLUA + C#, Вызов методов C# из QLua
 
https://habr.com/ru/post/197262/
QLUA + C#, Вызов методов C# из QLua
 
https://quikluacsharp.ru/stati-uchastnikov/lua-c-bez-s-dll/
Хочу заказать скрипт для Quick + настройку, Хочу заказать скрипт для одновременного выставления stoploss/takeprofit при выставлении заявки в стакане одной клавишей (параметры заявки заданы заранее)
 
Цитата
Владимир написал:
nikolz, А на кой с ними соревноваться? HFT есть расписка в отсутствии нормальных алгоритмов торговли, суходроч по схеме "сила есть - ума не надо". Да и прибыль от них копеечная, если вообще есть.
Вы опять пургу несете.
------------------
Вы опять меня рассмешили своим воинствующим невежеством.
-----------------
HFT  роботы - это роботы маркет-мейкеров и крупных игроков на бирже.
ваша прибыль в сравнении с их прибылью - это сверхмалая величина.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Владимир написал:
Quikos, Да я тыщу раз говорил, что классические мат. ожидание и дисперсия в миллион раз информативнее этой японской гадости. Но при желании можно посчитать и их: первый замер после отсечки очередной свечи - начало, последний - конец, минимум и максимум считаем обычным образом. Но лично меня интересует только ОДНО значение - то самое среднее арифметическое. Дисперсию когда-то собирался посчитать, но оказалось, что она тоже нафиг не нужна.
Может хватит бред нести в массы буратин?
все мозги засрали Quikos.
-------------------
Вы хотя бы в учебник по стат анализу заглянули.
Мат ожидание и дисперсия и индикатор свечи - это две большие разницы.
Специально для Вас и других буратин поясняю.
--------------
мат ожидание и дисперсия - это точечные средние оценки первого и второго момента закона распределения функции случайной величины на интервале наблюдения.
а свечи - это точечные мгновенные оценки четырех функций случайной величины на интервале тайма.
-----------------
Владимир,
Так как Вы очевидно дальше чем нормальный закон распределения и два его момента ничего больше не усвоили,
то и свечи и другие индикаторы для Вас как очки для мартышки.
----------------
Хочу заказать скрипт для Quick + настройку, Хочу заказать скрипт для одновременного выставления stoploss/takeprofit при выставлении заявки в стакане одной клавишей (параметры заявки заданы заранее)
 
и еще..
подобный скальпинг в стакане был актуален лет десять, а то и двадцать, назад.
---------------------
В настоящее время этим занимаются HFT роботы.
Соревноваться с ними бессмысленно так как они работают рядом по самым быстрым каналам доступа к бирже.
Они кликают примерно в 1000 раз быстрее, чем Вы можете кликать мышкой в стакане.
Права на Program Files
 
Если очень надо, то попробуйте изменить атрибуты у папки Program Files (x86) и убрать флаг "только читать".
Кривые шибки в QLua
 
Типа нажал кнопку утром, и мечтаем до вечера спать, но  не получилось работать.
------------------------
А у меня получается,
после того как построил провайдера и показал где у него узкое место.
Теперь все тип-топ.
Хочу заказать скрипт для Quick + настройку, Хочу заказать скрипт для одновременного выставления stoploss/takeprofit при выставлении заявки в стакане одной клавишей (параметры заявки заданы заранее)
 
Цитата
Sergey Denegin написал:
Цитата
Anton Belonogov написал:
Sergey Denegin , добрый день.

Если используется стакан котировок, созданный в интерфейсе Рабочего места QUIK, штатный функционал QLua действительно не позволяет определить, какая именно котировка выделена в стакане, а значит и получить ее параметры.
Однако таблица котировок также может быть создана и наполнена с помощью пользовательского скрипта; в этом случае будет доступна функция обработки различных событий в таблице. Более подробную информацию можно найти в Руководстве пользователя Интерпретатора языка Lua (раздел  3.15 Функции для работы с таблицами  Рабочего места QUIK , описание функции  SetTableNotificationCallback ).
Благодарю! Наблюдая как быстро меняется стакан, мне кажется маловероятным, что скорости перерисовки таблицы Луа хватит для того, чтобы держать "самописный" стакан в актуальном состоянии. Могу ошибаться .
Скорость перерисовки таблицы существенно выше, чем запаздывание прихода данных в ваш терминал по каналу интернет.
Поэтому актуальность наблюдаемых данных мало зависит от скорости рисования картинок на экране.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:
Цитата
nikolz написал:
 
Цитата
Quikos  написал:
 
Цитата
 Владимир   написал:
  nikolz   , это скрипт имеет дело с терминалом, а    Quikos   , как и я, имеем с ним дело только при нажатии кнопок  "Запустить" или "Остановить". Вот сегодня утром я запустил скрипт на двух Квиках, вечером выключу, и больше я никакого дело с терминалом не имею.
  Да, я это и имел ввиду :)
Непонятно в чем    nikolz    нашел противоречие.
 — Запомни мои слова: когда что тебе захочется — скажи только: «По щучьему веленью, по моему хотенью».
Странный какой. Наверное только это и запомнил ? :)
Ваше желание не новое на рынке, это желание всех буратин.
Если нет желание иметь дело с терминалом то есть несколько способов это сделать.
Все кроме одного требуют затрат либо времени либо денег.
Вы сами определите, чего у Вас много.
Но халявы на рынке нет.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:
Цитата
Владимир написал:
nikolz , это скрипт имеет дело с терминалом, а  Quikos , как и я, имеем с ним дело только при нажатии кнопок  "Запустить" или "Остановить". Вот сегодня утром я запустил скрипт на двух Квиках, вечером выключу, и больше я никакого дело с терминалом не имею.
Да, я это и имел ввиду :)
Непонятно в чем  nikolz  нашел противоречие.
— Запомни мои слова: когда что тебе захочется — скажи только:

«По щучьему веленью, по моему хотенью».

Квик ПАДАЕТ от простейшего кода
 
Цитата
Quikos написал:
Quik_Lua_connector
если это весь код,
то где создание таблицы функций  Quik_Lua_connector?
если это лишь кусок, то телепатов нет, чтобы угадать, что за кадром.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:
Что ж именно я напутал ? ))))
Я прямым текстом так и написал - "Я не хочу иметь дело с терминалом, кроме одного единственного действия - запуска скрипта.".
Дело в том, что скрипт запускается в виртуальной машине луа (VM Lua) , она работает внутри терминала, а скрипт получает все данные через терминал.
поэтому вне вашего желания, если используете скрипт, то значит имеете дело с терминалом .
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:крипте.
Я не хочу иметь дело с терминалом, кроме одного единственного действия - запуска скрипта.
Колбек на то и колбек, что вызывается, когда готовы данные, как без него я узнаю, когда проверять данные ?
вы что-то путаете.
-----------------------
Терминал - это  приложение QUIK, которое вы запускаете на компе.
Без него вы не установите обмен данными с сервером.
Поэтому и скрипт Вы запускаете в терминале и работает скрипт в терминале и данные вы получаете в терминале.
----------------------
Колбек вызывается не когда готовы данные, а когда наступило событие связанное с данным колбеком.
Колбек источника данных вызывается на каждое новое значение.
-------------------
Если в пришедшем блоке будет 100 значений, то колбек будет вызван 100 раз.
-------------------------
Если ваш робот торгует в реальном времени,
то получение последней сделки и будет сигналом,
что все данные приняты.
-------------------
Кроме этого, вы можете узнать о приходе всех данных прочитав время и дату последней свечи.
------------------
Но Вы конечно можете делать как желаете.
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:
Кстати тут:  https://forum.quik.ru/forum10/topic6449 /   - самое последнее сообщение написано, что SetEmptyCallback - вообще даже не нужен.
В общем случае колбек - это функция, которая вызывается при наступлении события.
Таким образом реализуется механизм асинхронного приема без ожидания.
---------------
Следовательно, если Вам не надо обрабатывать каждое значение в момент его прихода с сервера в терминал, то и колбек вам не нужен.
Более того, вы можете просто подписаться один раз через меню терминала и не заниматься этим в скрипте.
 
Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы, Отписка callback`а SetUpdateCallbackcallback - отписывает ВСЕ заказы
 
Цитата
Quikos написал:
После вызова callback`а от SetUpdateCallback - я сразу отписываюсь от callback`а, но отписываюсь именно от как бы первого объекта CreateDataSource, но почему от отписка происходит от всех последующих от CreateDataSource.  Вот такой простенький код:  
Код
   function   main ()

 local  code_class_ =   "TQBR"           
 local  code_paper_ =   "ZVEZ"            
 local  interval_ =  INTERVAL_W1

my_table_, error_desc  =   CreateDataSource (code_class_, code_paper_, interval_)  

 ------------------------Проверка на ошибки:------------------- 
 if  error_desc ~ =   nil   then  
 message (error_desc)
 end 
 -------------------------------------------------------------- 

my_table_: SetUpdateCallback ( function (idx)my_callback_ CreateDataSource _HISTORY(my_table_, code_class_, code_paper_, intervakla_)  end )




code_class_ =   "TQBR"           
code_paper_ =   "ZVEZ"            
interval_ =  INTERVAL_M15   


 local  my_table_1, error_desc_1  =   CreateDataSource (code_class_, code_paper_, interval_) 

 ------------------------Проверка на ошибки:------------------- 
 if  error_desc_1 ~ =   nil   then  
 message (error_desc_1)
 end 
 -------------------------------------------------------------- 

my_table_1: SetUpdateCallback ( function (idx)my_callback_ CreateDataSource _HISTORY(my_table_1, code_class_, code_paper_, intervakla_)  end )



 ------------------------- 
 while   not  stopped  do  
 sleep ( 1 )
 end  
 ------------------------- 


 end   -- end main()   


То есть я вызываю CreateDataSource для двух значений, которые точно нужно заказывать на сервере.  На два значений вешаю callback`и.  Вызывается первый callback для my_table_ и сразу же отписываюсь от callback`а - НО отписка осуществляется и для таблицы my_table_1, то есть отписка осуществляется для всех ранее заказанных callback`ов для разных парамтеров.  Так и должно быть ?
Дело в том, что Вы не учитываете очень много моментов.
когда Вы первый раз подписываетесь то на сервер уходит Ваша заявка.
Не факт, что к моменту вашей отписке сервер исполнит вашу подписку, так как там есть очередь и транзакции идут пакетами и интернет имеет различные задержки для различных пакетов ну и т д.
Поэтому Ваш финт не только не типичный прием, но и результат не предсказуемый может быть.
При этом непонятно , что это дает и зачем так делать.
А в документации QLUA нет указаний на подобные действия.
---------------------
Поясните с какой целью Вы это делаете.  
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Цитата
Alexander написал:
Цитата
Alexey Danin написал:
Здравствуйте.
Но я спрашиваю конкретно для своего наипростейшего случая, что описал выше. Например - покупка 1 лота. Нужен контроль того, что покупка 1-го лота 100% прошла и только тогда подавать на продажу того же 1-го лота. Какой алгоритм контроля применить посоветует техподдержка? Уж куда проще то? Мой алгоритм подойдёт? Или можно его упростить, например - вообще не использовать OnTrade()? Достаточно проверить OnOrder() где баланс = 0? Сейчас использую и то и то. А надо ли? Вроде работает.
Объясняю как я делаю это.
--------------------------------
Например, циклический тест  выставления и снятия заявки.
Это тест подобен Вашей задаче.
Отличие лишь в том, что я контролировал снятие заявки, а Вы контролируете исполнение заявки.
Но алгоритм , описанный ниже решает обе задачи.
================
Результат тестирования алгоритма,
показал его безошибочную работу при случайном выставлении и снятии заявки по 200 инструментам.
За 4 часа теста на демо сервере выставлено и снято 200 тысяч заявок без единой ошибки.
==================
Алгоритм:
------------------------------
Преамбула:
Робот - это конечный автомат, который изменяет свое состояние в зависимости от внешних сигналов и своей цели.
Источником внешних сигналов являются колбеки.
------------------------
В моем роботе задействованы все колбеки, описанные в документации библиотеки QLua
Заверяю Вас, что лишних колбеков нет.
Вы можете не использовать какие-либо колбеки, но это подобно тому, что у человека отключить какой-либо орган.
-------------------------------
Если Вы колбек выкидываете, то ваш робот не видит многих событий и просто зависнет в один прекрасный момент.
===========
Если инструмент, по которому я хотел бы выставить заявку активен
,т е произошло событие по данному инструменту ( сделка, изменение заявки),
то проверяем по таблице заявок есть ли активная и  по таблице транзакций есть ли активная   по этому инструменту.
----------------------
Если есть активная , то новая заявка не выставляется, иначе выставляется.
-----------------
В более продвинутом алгоритме выполняется анализ актуальности текущего состояния , но это уже другая задача.
 
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
В этом и есть риск предлагать то, что у Вас отсутствует.
Этот риск еще больше на опционах.
Поэтому опционами торгуют либо профи, либо буратины.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
Суть поставочных фьючерсов в том и состоит,  что это страховка от возможных убытков.
Если у Вас уже есть акции, которые Вы купили по 90 и вы заявили что отдадите по 100 и цена 80, то Вы гарантированно получите 100 за акцию за счет покупателя.
Но если Вы заявили что продадите 100 по 100, а их у Вас нет, то вы обязаны купить их на рынке и отдать покупателю.
Убытки за Ваш счет и цена при этом будет та по которой вы сможете купить на рынке. Возможно это будет и 200.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
в любом случае, затраты оплатит тот, кто проиграл.
Если Вы указали что купите 100  по 100, а цена на момент экспирации  110, то убытки за счет продавца, если у него не хватает акций чтобы передать вам
Если Вы продавец, то убытки за ваш счет.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
полагаю, что подробнее есть в регламенте брокера.
если нет, то можно запросить опять же у брокера.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
Цитата
k4rkpin написал:
Цитата
nikolz написал:
цена не просто сойдется, а цена исполнения фьючерса будет приравнена цене акции.
nikolz, я смотрел схождение цен в день экспирации и заметил различие графиков цены фьючерса от Quik и от MOEX ( создал тему   https://forum.quik.ru/messages/forum1/message66158/topic7676/#message66158  )  Вот эти графики:
еще раз,
цена в момент экспирации фиксируется для сделок по фьючерсам. А на бирже в этот момент цена биржевая
это две разные цены.  
------------------
Можно выделить следующие этапы экспирации:
1. Экспирация поставочного фьючерса. Проходит в вечерний клиринг (18:45–19:00 МСК).
2. Покупка (продажа) базового актива. Происходит на следующий рабочий день после экспирации.
3. Зачисление (списание) базового актива. По облигациям происходит на следующий рабочий день после сделки, а по акциям — на второй.
----------------
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
и еще...
При этом никакой продажи или покупки на бирже не происходит. акции переписываются с одного брокера на другого.
Поэтому цена никуда не двигается.
Если цены фьючерса и акции не сойдутся к моменту исполнения фьючерса
 
Цитата
k4rkpin написал:
Если  цены фьючерса и акции не сойдутся к моменту исполнения фьючерса ...

Для исполнения  поставочных  фьючерсов , количество активов  для продажи, равно количеству активов  для покупки. И если бы все клиенты, открывшие позиции по фьючерсам, имели достаточное количество активов для встречного удовлетоврения обязательств,  биржа смогла бы списать их активы по взаимозачету.
В противном случае,  для исполнения фьючерсов, потребуются дополнительные покупки (продажи),  а они могут сильно изменить цены актива.
Цена исполнения поставочного фьючерса определяется на 1 сессию раньше, чем его исполнение.  
    Скрытый текст            Скрытый текст       условия от Мосбиржи
Исполнение:  Поставка ценных бумаг путем заключения сделки в Секции фондового рынка в  порядке, предусмотренном Правилами проведения торгов на фондовом рынке  ПАО Московская Биржа, по цене,  равной результату деления РЦ  Контракта, определенной по итогам вечернего Расчетного периода   последнего дня заключения Контракта, на лот Контракта.
Однако, цена актива от момента определения расчетной цены  до  исполнения фьючерсов, может  измениться.

Вопрос: если цена актива на следующей сессии не сойдется с ценой исполнения фьючерса, за чей счет будет оплачена разница в цене и в каких таблицах Quik я смогу увидеть мои потери от разницы?
цена не просто сойдется, а цена исполнения фьючерса будет приравнена цене акции.
По постановочному фьючерсу брокер потребует от Вас наличие на счете нужного количества акций до экспирации.
Либо наличие соответствующего счета depo для зачисления акций, которые будут автоматом списаны у продавца, у которого они будут заблокированы на счете.  
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
и еще...
Если надо вызвать функцию QLUA в своей DLL,
то для отладки делаю заглушку с имитацией передачи данных.
Отладка своей dll подключенной к Quik ?, Quik вылетает !
 
Цитата
BVladimir написал:
Приветствую, All !

Есть своя dll к Quik, написанная год назад, Quik 9.7.1.10 и VS 2019. Помнится, в том году, для отладки подключался к процессу info.exe из VS 2019 спокойно и все видел. Сейчас пробую - не важно запущен ли с скрипт с подключением dll или нет, Quik выходит с кодом 0 (без ошибок) вообще без слов. Что то сломалось не пойму куда копать то ?
Я отлаживаю DLL для QUIK так же как и для любой другой VMLua ( например для встраиваемых микропроцессорных систем).
В DLL на C ставлю вывод prirntf.
Как правило большинство писателей для QUIK не используют библиотеку QLUA в DLL так как DLL обычно пишем для ускорения скриптов
а QLUA уже написана на СИ.
-----------------
Пишу тест на луа в Scite.
При запуске теста сообщения из dll по printf выводятся в окно редактора SCITE вместе с сообщениями теста Lua.
--------------------
Так как отладка для QUIK ничем не отличается от любой другой, то можно использовать любые любимые отладчики.
----------------
После отладки добавляю свою dll в скрипт QUIK и без проблем.  
Как надлежаще уведомить брокера через Quik ?
 
Цитата
k4rkpin написал:
При наличии у меня открытой позиции - проданных поставочных фьючерсов на акции, хочу просить  брокера, чтобы во исполнение фьючерса списал с моего счета  имеющихся в наличии одноименные акции, те произвел взаимозачет, а не покупал дополнительные.

Вопрос 1 Достаточно написать письмо брокеру через "Неторговые поручения, свободная форма", за сколько дней до экспирации это сделать ?  
Вопрос 2 Указывать цену акций, по которой хочу продать, или будет автоматически использована последняя расчетная цена фьючерса?
Вопрос 3 Нужно письменное подтверждение от брокера, оно придет через Quik или другими каналами?
Вопрос 4 Насколько хорошо документируются такие переговоры в Quik, можно их использовать как доказательство в случае конфликта ?
Рекомендую сделать следующее:
-------------------------------
1) прочитать регламент брокера на предмет решения Вашего вопроса

2) если в регламенте ответа нет,
то написать брокеру письменно брокеру просьбу
добавить в Ваш с ним договор сформулированное Вами пожелание услуги брокера по данному вопросу
------------------------
Брокер либо включит Ваше пожелания как доп соглашение либо отклонит его, так как это его право.
-------------------
В любом случае, лишь письменный ответ брокера  будет реальным ответом на ваш вопрос.
Получение цены инструмента
 
и еще..
если торгуете неликвидом, то в качестве признака торговой сессии можно использовать опять же время и наличие заявок.
Но я роботов на неликвид не делаю.  
Получение цены инструмента
 
Цитата
Kolossi написал:
В принципе с подпиской получилось нормально. Всем спасибо.

Задумался вот, а почему статус торговой сессии нужно получать по определенному инструменту а не в общим параметром?
Я определяю статус торговой сессии по времени и наличию сделок.
время компа синхронизирую по серверу точного времени.  время торгов на бирже тоже синхронизировано по такому же серверу.
в результате дополнительные затраты ресурсов относительно ресурсов для торговли инструментом полностью отсутствуют.
Страницы: Пред. 1 ... 30 31 32 33 34 35 36 37 38 39 40 ... 80 След.
Наверх