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

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

Страницы: Пред. 1 2 3 4 5 6 7
Чьё время даёт OnTransReply в таблице date_time?
 
Цитата
paluke написал:
Если вы хотите считать миллисекунды, quik абсолютно бесполезен.
Утром мне удаётся считать сотые доли секунды, и некоторое время назад я часто видел, что становился первым в очередь. А сейчас вечером мало того, что в очередь набивается огромное количество всякой сволочи, так ещё и мосбиржа меняет время начала торгов: было, как положено, 19:00:01, а теперь может быть и > 19:00:04...
Примеры dll на GCC 64 для работы со скриптом
 
Не могу откомпилировать длл на си в gcc.
Есть простая длл на си, все файлы есть.
Gcc выдаёт ошибки:

A:\luac>dll_compile.bat

A:\luac>C:\TDM-GCC-64\bin\gcc.exe luacdll.c -o luacdll.dll -mdll -O2 -s -m64 -std=c17
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x14): undefined reference to `luaL_checknumber'
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x25): undefined reference to `luaL_checknumber'
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x35): undefined reference to `lua_pushnumber'
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x68): undefined reference to `luaL_checkversion_'
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x78): undefined reference to `lua_createtable'
C:/TDM-GCC-64/bin/. ./lib/gcc/x86_64-w64-mingw32/9.2.0/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: a:\temp\ccMCaYnQ.o:luacdll.c:(.text+0x8a): undefined reference to `luaL_setfuncs'
collect2.exe: error: ld returned 1 exit status

Не пойму, почему не находятся эти файлы... Этим бат-файлом я делал длл файлы на си.
Хм, не могу сюда приаттачить зип-файл...
Вот си-программка:

***
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

static int forLua_MultTwoNumbers(lua_State *L) {
// получаем первый и второй параметры вызова функции из стека с проверкой каждого на число
   double d1 = luaL_checknumber(L, 1);
   double d2 = luaL_checknumber(L, 2);

// помещаем в стек результат умножения
   lua_pushnumber(L, d1 * d2);

   return(1);  // эта функция возвращает одно значение
}

// список реализованных в dll пользовательских функций
static struct luaL_Reg ls_lib[] = {
   {"MultTwoNumbers", forLua_MultTwoNumbers},
   {NULL, NULL}
};

int __declspec(dllexport) luaopen_mylib_funcs(lua_State *L)
{
   luaL_newlib(L, ls_lib);
   return 1;
}
***

Вот бат-файл для компиляции:
gcc.exe luacdll.c -o luacdll.dll -mdll -O2 -s -m64 -std=c17

Все .h файлы есть в наличии в том же каталоге...
Чьё время даёт OnTransReply в таблице date_time?
 
NTP сервер ntp1.stratum2.ru говорит: ICMP: 100ms задержка. Это и есть задержка пакета TCP/IP от меня до Москвы?
Чьё время даёт OnTransReply в таблице date_time?
 
Например, если мы получаем trans_reply.status == 3 (заявка выполнена), то какое время мы получаем в OTR:
- время сервера биржи в момент выполнения заявки?
- время сервера брокера, когда он получил ответ от сервера биржи?
- что-то ещё?
Аналогичный вопрос, если заявка не выполнена.
В описаниях этой функции об этом ни слова...

Я сейчас перед вечерней сессией делал заявку на покупку и в OnTransReply получил ответ "не выполнена", время при этом такое:
19:00:04.224811.
Но я эту заявку повторял несколько раз и в следующий раз получил ответ "выполнена", время при этом такое:
19:00:04.377904.

А это я получал содержимое стаканов и отмечал время на моём ПК, которое я перед этим синхронизировал с NTP сервером:
19:00:04.621937
19:00:04.746745
19:00:04.932090
19:00:05.319159

И только в 4-й раз, т.е., когда время было 19:00:05.319159, моя заявка появилась в стакане. Как можно понять такую задержку? Может ли кто-то задерживать мои заявки намеренно?
Не обновляются данные в стакане и в табл. заявок
 
Это было однократно, сообщил об этом техподдержке брокера.
Примеры dll на GCC 64 для работы со скриптом
 
Где можно посмотреть примеры создания длл на GCC 64?
Или хотя бы на FPC 64/Delphi 7...
Не обновляются данные в стакане и в табл. заявок
 
Похоже, это тормоза на стороне брокера или мосбиржи...
Не обновляются данные в стакане и в табл. заявок
 
Сейчас сталкивался с тем, что выставляю в Квике 11.0.0.92 заявку, она принимается, но не отображается в стаканах и в табл. заявок. При этом в андроид приложении она отображается в активных заявках. Перезагрузил Квик - не помогло. Помог перезаказ данных...

Потом в стаканах вдруг вместо 40 строк стало отображаться только 4 (2 на покупку, 2 на продажу), а в  андроид приложении отображались все 40 строк. Через несколько секунд стали отображаться все 40 строк. Пока писал, это повторилось (отображались 2 строки). Брокер ВТБ. Не знаю, что думать...
Неактуальная информация в документации?
 
В файле "Интерпретатор языка Lua.pdf" в разделе "3.12.3 Особенности получения значений Таблицы текущих торгов" написано:
===
• Автоматически из скрипта Lua с помощью функций ParamRequest или CreateDataSource,
при включенной настройке Рабочего места QUIK «Исходя из настроек открытых
пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел
«Программа» / «Получение данных»).

Терминал QUIK автоматически заказывает параметры, необходимые для
корректного расчета лимитов, при включенной настройке Рабочего места
QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система /
Настройки / Основные настройки..., раздел «Программа» / «Получение
данных»).
===

Но фразы «Исходя из настроек открытых пользователем таблиц» в меню
Система / Настройки / Основные настройки / Программа / Получение данных
не видать...
Как сервер биржи определяет направление сделки?
 
Т.е. сервер определяет B или S с точки зрения рыночной заявки? А, к примеру, в начале торгов мне может встретится встречная лимитная заявка, тогда как сервер выставляет букву? В зависимости от того, чья заявка поступила раньше? В остальном заявки равны.
Как сервер биржи определяет направление сделки?
 
Когда приходит инфо, напр., по OnAllTrade, там присутствует направление сделки: B - покупка и S - продажа. Я заметил, что, когда я продаю, то в этой сделке стоит B, когда покупаю, - S. А как сервер биржи определяет напр. сделки?
А если моя заявка будет по текущей цене, а не лимитная, то тогда направление будет другое?
От вида встречной ко мне заявки (лимитная или по маркету) это направление зависит?
Хочется в биржевом стакане видеть объёмы заявок
 
Ещё, как я писал, в этом сером прямоугольничке шрифт должен быть меньше, чем в клетке, и если в клетке, в которой есть заявка, у юзера выбран жирный шрифт, то это не должно влиять на шрифт внутри серого прямоугольничка. Серый фон прямоугольничка должен быть достаточно тёмный, чтобы белый цвет цифр в нём хорошо был виден.

И эти прямоугольнички и числа в них должны быть выровнены по правому краю клетки (столбца), в котором они стоят,  как сделано у ВТБ.
Хочется в биржевом стакане видеть объёмы заявок
 
Точнее: этот серый прямоугольничек, так же, как и клетка, в которой он находится, кликабельный. По щелчку левой кнопкой при быстром режиме ввода будет выставлена заявка на покупку, если это столбец с покупкой, и заявка на продажу, если щелчок был в столбце "Продажи".
Хочется в биржевом стакане видеть объёмы заявок
 
Разница только в том, что в Квике будет 3 столбца: отдельно для покупки и для продажи.
Хочется в биржевом стакане видеть объёмы заявок
 
Сфотографировал экран для нагладности. В сером прямоугольничке (чтобы было понятно, что он некликабельный) показан объём.  
Хочется в биржевом стакане видеть объёмы заявок
 
На этих картинках вместо 3-х столбцов уже 5... А я вначале сказал, как надо сделать (как сделали в приложении ВТБ Инвестиции). Там по-прежнему остаётся 3 столбца, не надо другого дизайна и непонятных действий по щелчкам, которые приводят к потере денег...
Хочется в биржевом стакане видеть объёмы заявок
 
У меня, естественно, быстрый ввод/снятие заявок.
Поэтому моё предложение сделать показ объёмов в моём родном дизайне стакана остаётся в силе: тут сохраняются все плюсы и нет минусов.Как я уже писАл, для этого в столбцах "Покупка" и "Продажа" имеются пустые места...
Хочется в биржевом стакане видеть объёмы заявок
 
Не пойму, закрыт вопрос или нет... У меня на экране теперь 2 дизайна стаканов: который был раньше и который Вы посоветовали. Я не пойму, как в подменю "Установка операции заявки" что-то можно выбирать, если для разных дизайнов стаканов щелчок по строке с ценой покупки (на зелёном фоне) действует противоположно... Интуитивно кажется, что щелчок по клетке с лучшей ценой покупки должен выставлять заявку на покупку, а не на продажу... Как я с помощью этого подменю могу сделать так, чтобы в новом дизайне стакана щелчок по цене покупки выставлял заявку на покупку, а щелчок в этой строке по цене - заявку на продажу (т.е. наоборот, чем сейчас) непонятно. Да ещё и чтобы это не повлияло на стаканы с прежним дизайном.

Похоже, новый дизайн стакана лучше использовать только для того, чтобы увидеть свои объёмы заявок, а не для торговли, от греха подальше... Но тогда экран загромождается лишним стаканом.
Хочется в биржевом стакане видеть объёмы заявок
 
Оказалось, что по щелчку по цене в зелёном поле (покупок) выставляется заявка на покупку, а при щелчке на столбце цены выставляется заявка на продажу! Это совсем не так, как в том виде стакана, который был у меня раньше, и это очень неожиданно. Там в столбце покупок не выставлялась заявка на продажу. Так можно щёлкнуть и много чего потерять...
Хочется в биржевом стакане видеть объёмы заявок
 
Выбрал вид стакана по снимку, стакан стал Уже, но я заметил неожиданное поведение: если щёлкнуть по клетке в столбце с ценой, то Квик пытается выставить заявку. В моём прежнем дизайне стакана такой щелчок только устанавливал подсветку на строке. Это неожиданное поведение, которое может привести к потере денег, ай-яй-яй...
Хочется в биржевом стакане видеть объёмы заявок
 
Нету у меня своего объёма... Мне что, особую версию программы подсунули? У меня вер. 10.3.1.13.
Хочется в биржевом стакане видеть объёмы заявок
 
Спасибо, только у меня это почему-то называется не "Свой объём", а отдельно: "Своя покупка" и "Своя продажа". В результате, ширина стакана сильно выросла, а это не очень хорошо, т.к. у меня экран не резиновый. Если бы вы сделали, как я выше советовал, то ширина стакана не увеличилась бы.
Хочется в биржевом стакане видеть объёмы заявок
 
На Рис_1.PNG в столбце "Свой объём" вижу 1 акцию по цене 2.91. Если эта 1 акция является суммой всех заявок по цене 2.91, то это то, что мне нужно. Это можно настроить в Квике?
Хочется в биржевом стакане видеть объёмы заявок
 
Да, отображать всего акций по каждой цене (в её строке), по которой есть мои заявки.
По заявкам на продажу для этого есть место в правой половине стакана, а по заявкам на покупку - в левой.
Узнать точное время скриптом
 
По идее, сервер брокера должен быть готов до начала приёма предварительных заявок...
В связи с этим такой вопрос: в таблице заявок orders что означают поля

activation_time NUMBER Время активации
datetime TABLE Дата и время

datetime это какое время и чьё оно? Оно приходит с сервера биржи, брокера или это Квик даёт время на моём ПК? Это время принятия заявки Квиком, сервером биржи?.. Не смог найти разъяснения.

А activation_time это что? Я посмотрел для одной заявки, оно равно 0. И какой формат у этого времени?
Узнать точное время скриптом
 
Чтобы при приёме заявок раньше встать в очередь, я синхронизирую часы Виндовс по атомным часам и проверяю это в сервисах типа time100.ru. Но всё равно возникают погрешности. Напр., утром эти сервисы, как правило, говорят (да ещё и каждый по-своему), что у меня точное время, а в 19 часов, что мои часы спешат на 0.3 сек... Можно ли как-то узнавать время точнее, напр., с точностью 5-10 мсек? Например, получая его с сервера брокера? Или более точно установить его в Виндовс? Регион - Ставропольский край (не сам Ставрополь).
Хочется в биржевом стакане видеть объёмы заявок
 
К примеру, в приложении ВТБ Инвестиции для Андроида сделали показ объёмов заявок в биржевом стакане более мелким шрифтом внутри серого прямоугольничка со скруглёнными краями. Для этого в Квике есть свободное место в столбцах, соответственно, "Продажа" и "Покупка". Это бывает нужно, если хочешь отменить или перенести все заявки по данной цене. Сейчас для этого я заглядываю в Андроид приложение.
Мой опыт написания скриптов в формате Дзен-канала, На Дзене завел канал, в котором делюсь своим опытом написания скриптов
 
Я зашёл, подписался и вижу только пустые ссылки по ключевой фразе "код торгового робота", а сами коды никто давать не собирался...
Получение скриптом инфо по OnAllTrade
 
Спасибо за внимание, мне нужно время, чтобы проверить, по всем ли сделкам приходит инфо по OnAllTrade. Посмотрю, что у меня задано в Основные_настройки/Получение_данных/Обезличенные_сделки и в файле конфигурации .wnd.

Скажите, для чего эта информация из основных настроек может дублироваться в файле конфигурации .wnd? Чтобы скрипт получал только часть из того, на что я подписался в основных настройках, чтобы зря не грузить сервер брокера?
Получение скриптом инфо по OnAllTrade
 
Спасибо, я в этом окне ничего не настраивал, но вижу, что там выбрано по максимуму всё, что я выбирал, создавая таблицы обезличенных сделок в разных конфигурационных файлах.
Интересные баги квика
 
Т.к. эти явления происходят редко, то мне придётся для этого вместо торговли заниматься ловлей багов и записью видео. Для этого существует профессия тестера с соотв. зарплатой.  
Получение скриптом инфо по OnAllTrade
 
Почему-то скрипт получает инфо по каким-то акциям по OnAllTrade, даже если этих акций нет в табл. обезл. сделок, а по каким-то акциям, которых также нет в этой таблице, скрипт не получает такой информации.
Получение скриптом инфо по OnAllTrade
 
Если хочется получать скриптом информацию по каждой сделке с выбранными акциями, обязательно ли в загруженном конфигурационном файле иметь таблицу обезличенных сделок по всем этим акциям? Почему для этого недостаточно в скрипте подписаться через Subscribe_Level_II_Quotes на получение этой информации? Если не создавать табл. обезл. сделок, то скрипт получает только инфо по OnQuote...
Увеличьте таблицу текущих торгов
 
Очень не удобно быбирать компании в подокошечке "Доступные инструменты". Оно такое маленькое, что потянешь за бегунок, и проскакиваешь неизвестно куда. И поиск в этом окошечке работает очень странно. То ли виснет, то ли неправильно ищет...
Интересные баги квика
 
Иногда запускаю квик, выбираю Система/Загрузить настройки из файла..., и квик зачем-то  открывает каталог Виндовс Изображения. Закрываю окно с этим каталогом, повторяю предыдущую операцию, и открыватся правильный каталог QUIK_VTB. Загадка природы!

Также иногда отсутствует звук при завершении заявки (слышен только звук сделки).
Массовое удаление заявок
 
В таблице заявок неплохо было бы сделать множественное выделение заявок согласно юзеринтерфейсу Виндовс: щёлкая левой кнопкой при нажатой клавише Ctrl для добавления к выделенному этой строки и нажатой клавише Shift для добавления к выделенному диапазонов строк.

PS: представляю сколько будет возмущённых жалоб юзеров из-за безвинно удалённых заявок в результате ошибок в программировании. :-)
Ошибка при изменении параметров заявки
 
А, пардон, я сейчас проверил: в 1-м случае не редактируется текущая заявка, а создаётся новая. Меня сбило с толку, что при выборе из контекстного меню в заголовке окна написано "Ввод заявки", тогда как должно быть "Редактирование заявки", и просто не надо заранее удалять эту заявку!
Ошибка при изменении параметров заявки
 
Если в таблице заявок по строке с активной заявкой дважды щёлкнуть, то появляется окно типа "МБ ФР: Т+ ETF: Ввод заявки" и можно редактировать её параметры. Это работает нормально. Но если это окно вызвать щелчком правой кнопки по строке с заявкой и выбрать из контекстного меню "Заменить заявку", то ещё до появления этого окна заявка отменяется. Если юзер передумает редактировать заявку, то ему придётся воссоздать эту заявку и он потеряет очередь в биржевом стакане.
Ошибочное взятие комиссии биржи при торговле фондом ВТБ "Ликвидность"
 
Не знаю, чья это ошибка, возможно, серверной версии Квик, которой пользуются брокеры. Я у брокера ВТБ торгую этим фондом с тикером LQDT. Это единственный фонд, на который нет даже комиссии биржи (если брокер ВТБ). Я давно пишу и звоню в ВТБ, чтобы исправили ошибку: иногда примерно в одной сделке из 100 берётся комиссия биржи. На следующий день эту комиссию возвращают, но всё равно из-за неё есть потеря денег. В последнее время эту комиссию не брали на дневной сессии, а брали очень редко при сделках после 21 часа. А сегодня прямо с утра её стали взимать, да ещё и довольно часто. Неужели программисту трудно вставить в код условный оператор: если тикер == LQDT, то комиссию биржи не берём?
Проверка, что заявка выполнена
 
Нет, balance == 0...
Проверка, что заявка выполнена
 
Похоже, перепутал условие: не qty == 0, а qty == balance.
Проверка, что заявка выполнена
 
Кто скажет, зачем столько условий для проверки, что заявка выполнена (qty == 0, 2 мл. бита флагов == 0)? Чем эти условия отличаются? Может быть, когда qty == 0, но флаги говорят, что заявка ещё не выполнена, деньги от продажи акций ещё не вернулись на счёт? Меня интересует, как скрипту узнать, что эти деньги от продажи акции вернулись на счёт и их можно снова использовать для покупки?
getParamEx2 выдаёт неактуальные значения
 
Нашёл решение моей проблемы от Старателя на этом форуме...
getParamEx2 выдаёт неактуальные значения
 
Кстати, накануне обновил квик до вер. 10.0.1.18, и эта программка выдаёт true true и нули, т.е. обе функции ParamRequest и getParamEx2 не работают. ParamRequest выдаёт true при неверных параметрах (неверном классе бумаги).
getParamEx2 выдаёт неактуальные значения
 

Почему-то значения BID и OFFER в моей программке не соответствуют положению дел в стакане котировок, который я смотрю в Quik и в приложении для Андроида. Такое впечатление, что в скрипт сначала передаются старючие значения и только через несколько минут эти значения совпадают с тем, что показывает терминал и приложение. Программка такая:

Код
PrintDbgStr(tostring(ParamRequest('TQTF', 'OBLG', 'BID'))..' '..tostring(ParamRequest('TQTF', 'OBLG', 'OFFER')))
PrintDbgStr(getParamEx2('TQTF', 'OBLG', 'BID').param_value..' '..getParamEx2('TQTF', 'OBLG', 'OFFER').param_value)

Почему так происходит, и как это исправить, ведь так работать невозможно...

Страницы: Пред. 1 2 3 4 5 6 7
Наверх