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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Программирование скриптов
 
Кстати, я как-то заметил, что если Квику задать сформировать отчёт по всем сделкам клиента (а их немного), то, пока он их 10 сек. формирует (Квик в это время слегка заблуривает окно), наблюдается потеря в получении скриптом обезличенных сделок и изменений в стакане (тоже на 10 сек.)

Необработанные сделки можно было бы ставить в очередь, чтобы потом отдать их скрипту?
Такое впечатление, что мой скрипт получения сделок и формирование отчёта Квиком не могут работать одновременно?
Квик не может использовать больше 2-х потоков? (Один для терминала и коллбэков, а другой для функции main)?
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
nikolz написал:
покажите Ваш пример на C с ошибкой, исправлю.
Не понял: этот луа скрипт из предыдущего моего сообщения использует известную оболочку от swerg w32.dll, а работающий пример луа+длл на си, который транслируется gcc, на основе примера swerg, который собирался в VS, я получил ещё вчера.

Теперь меня интересует, как получать в длл таблицы от луа и разбирать их, напр., таблицу заявок и обезличенных сделок. Я несколько лет назад перешёл с Дельфи 7 на си под 64 бит и gcc, теперь неохота сидеть на 2-х стульях.

Кстати, если кто не знает, я автор книжки "Delphi и Turbo Pascal на занимательных примерах" (выходила в Питер-БХВ), а также нескольких других книжек, хотя, я программировал, как любитель, для развлечения, в основном писал для продажи англоязычные шареварные игры по своим идеям. А лет 15 назад я был монстром Perl regexp и написал о них лекции на intuit.ru и головоломную книжку, которая выносит мозги ногами вперёд (в связи с рекурсивными шаблонами и вообще). Понаходил в них и в Перле грубых ошибок, сообщал о них письмами Перл майнтайнерам, они их исправляли. К сожалению, эта узкая тема не приносит денег...
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
 
И "Обновить таблицу" (F5) тоже не помогало...
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
 
У меня только что тоже было долгое время аналогичное, CalcBuySell и getBuySellInfo тоже показывали нули, при этом приложение "ВТБ инвестиции" показывало, сколько денег и акций на счёте. Перезагружал Квик, не помогало. Минут 20 назад таблица "Состояние счёта" в Квике наконец-то заполнилась...
Примеры dll на GCC 64 для работы со скриптом
 
Спасибо, тов. swerg, за наше счастливое детство, меня сейчас интересует обмен данными между луа скриптом и длл на си.
Кстати, вчера я запустил в квике ваш пример луа скрипта из 1-го поста: https://quik2dde.ru/viewtopic.php?id=329 Получил сообщение "C stack overflow". Может быть, с 2020 г. что-то поменялось в квике?
Примеры dll на GCC 64 для работы со скриптом
 
Там, оказывается, дело было в имени: не  luaopen_mylib_funcs, что я вбрал из другого примера, а luaopen_luacdll, поэтому первоначальную сишную функцию можно оставить, поменяв у неё имя:

int __declspec(dllexport) luaopen_luacdll(lua_State *L)
{
   luaL_newlib(L, ls_lib);
   return 1;
}
Примеры dll на GCC 64 для работы со скриптом
 
И вместо
int __declspec(dllexport) luaopen_mylib_funcs(lua_State *L)
{
   luaL_newlib(L, ls_lib);
   return 1;
}

надо вставить из исходника swerg

LUALIB_API int luaopen_luacdll(lua_State *L) {
// эта функция выполнится в момент вызова require() в Lua-коде
// регистрируем реализованные в dll функции, чтобы они стали дуступны для Lua
// в Lua 5.1 и Lua 5.3 для этого предназначены разные функции
#if LUA_VERSION_NUM >= 502
luaL_newlib(L, ls_lib);
#else
luaL_openlib(L, "luacdll", ls_lib, 0);
#endif

return 1;
}
Примеры dll на GCC 64 для работы со скриптом
 
Наконец-то заработало: я не заметил совета тов. swerg вставить
#define LUA_LIB
#define LUA_BUILD_AS_DLL
до подключения заголовочных файлов для Lua.
Примеры dll на GCC 64 для работы со скриптом
 
Пока при попытке выполнения в Квике выдаётся ошибка
error loading module 'luacdll' from file 'C:\QUIK\luacdll.dll':
Не найдена указанная процедура.

Осталось ещё немного исправить, но что?..
Примеры dll на GCC 64 для работы со скриптом
 
Опять начал искать и наткнулся на стр. qna.habr.com/q/475056
Добавил по примеру оттуда в бат файл ключи -L. и -llua54 и получил наконец-то dll... Чертовщина...
Как правильно удалить элемент из массива со "сдвигом влево"
 
Я наткнулся на интересный сайт
https://www.gammon.com.au/scripts/doc.php
В частности, вот оно:
https://www.gammon.com.au/scripts/doc.php?lua=table.remove
Для qlua есть аналогичные потоконезависимые функции с s вначале: sremove, sinsert, ...
Примеры dll на GCC 64 для работы со скриптом
 
Цитата
paluke написал:
Библиотеку lua нужно указывать: ключики -L, -l
Я разместил в каталоге со всеми файлами файл lua54.lib, который взял из 1-го поста quik2dde.ru/viewtopic.php?id=18 и добавил опцию -Llua54.lib, сообщения с ошибками остались точно теми же, что и выше. Если, скажем, этот формат биб-ки понимает только микрософт и не понимает gcc, то почему линковщик ничего не говорит насчёт этого либ-файла?
Чьё время даёт 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: Ввод заявки" и можно редактировать её параметры. Это работает нормально. Но если это окно вызвать щелчком правой кнопки по строке с заявкой и выбрать из контекстного меню "Заменить заявку", то ещё до появления этого окна заявка отменяется. Если юзер передумает редактировать заявку, то ему придётся воссоздать эту заявку и он потеряет очередь в биржевом стакане.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Наверх