Можно ли запустить торговую программу под Квиком на планшете, чтобы не напрягать настольный ПК? Если да, то что это за планшет? На сколько времени хватит аккумулятора?
paluke написал: Только следуя за кем-то, вы всегда купите дороже, чем он, а продадите дешевле.
Продам, м.б., дешевле, чем он, а не дешевле, чем я купил. Речь идёт о значительном росте цены, когда крупный игрок выбивает стопы у толпы, отчего цена летит.
Насколько я понял, lua_tonumber и lua_tointeger это одно и то же и ничего она не преобразовывает, просто переписывает с вершины стека в заданную переменную 8 байтов?
И ещё хотел спросить: неужели с рублями и копейками работают в формате double? В этом случае при расчётах может накапливаться ошибка. Как я помню, в фин. расчётах рубли и копейки хранили в виде строк, напр. "123.456000".
Поясните, почему в таблицах Квика orders, trades, ... переменная flags, хранящая битовые флаги, имеет тип NUMBER (что в переводе на C значит double), а не INTEGER? Ведь тип LUA_NUMBER это double (64 бита) LUA_INTEGER это long (64 бита) (под 64-битовой ОС) Эти флаги в C правильно получать функцией lua_tointeger или lua_tonumber? Вроде бы работает и то и это... Тот же вопрос насчёт поля qty. И почему в подтаблице datetime поля также имеют тип NUMBER, а не INTEGER? Они что, внутри Lua имеют тип double?
Если на C переменной, в которую читаю flags, присвоить тип LUA_NUMBER, то транслятор выдаёт ошибку: должен быть тип целого числа.
> Гарантированно выигрышная стратегия: купить "голубых фишек" и облигаций.
Чем гарантирована? Вспоминается закупка народом летом в прошлом году акций газпрома и пролёт с дивидендами с выходом указа о разовом НДПИ. Сейчас Китаю в связи с эпидемией не надо будет столько нефти, и рост российского рынка акций в 2024 г. прогнозируется в 5%. И потом, сейчас как-то стрёмно держать акции по нескольку дней...
У меня есть "стратегия", которая даёт прибыль раза в 2 выше облигаций, меня интересуют стратегии, которые дадут хотя бы 5-10% в день от данных торг. программе средств.
Опытные трейдеры в прошлом году писАли, что делают 50-70% годовых. А трейдер из СПб с ягодной фамилией показывал свой аккаунт за прошлый год с прибылью почти 100% на мосбирже.
> Все выигрывать не могут.
Эти общие места давно известны. И я не "все"...
> И поэтому любая публично известная стратегия, которую каждый может использовать, заведомо проигрышная.
Не каждая и не каждый: к примеру, Рабинович не смог выиграть в лотерею с пом. своего бога, т.к. не покупал лотерейный билет. А кто-то не захочет рисковать. А кто-то решит, что это обман... У БКС в приложении есть что-то типа форума по каждой бумаге, я когда-то читал, как опытные трейдеры писали, на чём они зарабатывают в настоящий момент.
> Если бы существовала выигрышная для всех стратегия, откуда взялись бы деньги?
Ошибка в подобных общих "рассуждениях", напр., в том, что "общая для всех выигрышная стратегия" не всегда останется таковой... Напр., пока цена запампленной акции ещё не достигла потолка. И не для всех стратегия может оказаться "по зубам". И вроде бы есть стратегия торговли "смарт мани", следуя за крупным игроком как рыба-прилипала. Вроде бы тоже публичная, не устаревающая и похожая на правду...
То All: недавно ютюб подсунул видео об Ильнуре Мухаметзянове (по кличке Татарин), который выиграл 6 чемпионатов по трейдингу: https://www.youtube.com/watch?v=0aEbW_d7w04 https://www.youtube.com/watch?v=Yk9vgCwKeFo Кто-то может это прокомментировать? Он, кажется, говорил там, что в 2019 г. сделал 1300% годовых, звучит, как ненаучная фантастика. При этом он говорит, что торгует только пробой, продаёт, когда цена вырастет на 1%, не ставит стопов (выходит вручную), делает сотни сделок в день (типа скальпинга). Как можно столько раз угадывать ход цены? Это противоречит учению вышеупомянутого носителя фамилии солнечной ягоды из холодного Спб... Который, кстати, говорил, что у него обучаются студенты, а также люди, пришедшие после обучения у Герчика, что он сам вначале 2 года не мог добиться прибыли, якобы покупал курсы, а потом выработал свою стратегию захода в сделки и выхода оттуда (кажется, пунктов из 8-10). На бесплатных видео он тоже кое-что рассказывает. Он снимает офис с ещё 2-мя трейдерами. Татарин тоже говорил, что много обучался у опытных трейдеров, но ему пригодилось 10% инфо от их обучения. Свою стратегию не раскрывает. Упомянул, что бывает водит цену у бумаг 3-го эшелона. Может быть, в этом секрет сверхприбыли?
Кстати, хотел найти работающий пример для разбора таблиц в длл, взял с этого сайта код quikluacsharp.ru/qlua-c-cpp-csharp/primer-realizatsii-funktsii-obratnogo-vyzova-onalltrade-vnutri-dll/ а там полная ерунда: вместо lua_pushcfunction написано lua_pushcclosure. Да и luaL_openlib уже устарела и здесь не нужен также и новый её вариант для луа 5.4. Потерял много времени...
Я освоил qlua + dll на C, теперь хочется попробовать написать торг. программку, чтобы посмотреть, на её работу. Имеются какие-то дармовые "торговые роботы" и их заготовки, которые транслятор не хочет транслировать (и есть раздутые до безобразия горы кода в районе гитхаба), не хочется тратить время, чтобы их понять, они, по-моему, делаются по принципу "на, тебе, боже, что мне негоже", а платные "роботы" - по принципу "на, тебе, платного, боже, что мне негоже". К примеру, в этой ветке кто-то опубликовал "нейросеть на луа", при этом из диалога непонятно, что это такое и стоит ли на это тратить время.
У меня пока возле головы вертятся такие возможные "стратегии" для программы: - слежение за массой всякой макулатуры и определение начала роста цены, покупка на деньги, которые не жалко, и определение, когда это лучше продать; - определение в начале торгов, что с какой-то радости начнут покупать/продавать, и воспользоваться этим, пока цена не ушла далеко; - ловля кратковременной просадки цены, когда происходит крупная продажа (напр., кто-то хочет выйти из какой-то бумаги, перевести деньги в доллары и слинять из этой страны, пока не поздно).
Кто-то может подсказать (хотя бы в приват) что-то стоящее "отцу русской демократии", чьи пенсии летят по * , коптят, и потом где-то взрываются склады террористов?..
swerg написал: Хотя, если честно, я бы рекомендовал писать и отлаживать алгоритмы на Lua. Это намного проще. И только если будут выявляться какие-то узкие места в производительности - что-то выносить в dll.
А что вы скажете об этих рассуждениях о qlua, которые я только что увидел на smart-lab.ru/blog/922044.php === Каждого, кто собирается программировать на QLua, должен сильно волновать ответ на следующий вопрос: стоит ли изучать Lua или воспользоваться некоей библиотекой (как пример QuikSharp + QuikPy) и в дальнейшем писать свои программы на другом ( скажем мягко — менее экзотическом) языке (Python, C#, С++ и т.п.). Когда разработчики Квика встраивали Луа в Квик, это был (Луа 5.1 х32) популярный язык с огромным количеством всяких разных библиотек, компилятором (LuaJIT), своим менеджером пакетов и большим комьюнити. Потом прошло некоторое количество времени, Луа в Квике изменился на Луа 5.4 х64 и все достоинства его превратились в тыкву. Оказалось, что это практически умирающий ( утопающий) язык, поддержка которого — дело рук самих утопающих. Кто-то успел ухватить тренд и быстренько переписал все на Python и остался конкурентноспособен ( хороший пример Torch -> PyTorch ), кто-то все проспал и утонул (ну или еще пока барахтается). В связи с выше сказанным, очень хотелось бы выяснить, так сказать на берегу, стоит ли свеч QLua, или можно построить такого же стабильного и быстрого робота на другом языке. === Простых алгоритмов или несколько роботов запустить, это всё будет вполне устойчиво работать. Что-то более сложное (сотни стратегий торговых, постоянная оптимизация под рынок, с оперативным управлением и ротацией роботов) действительно пишутся уже в связке или полностью на других языках. ===
> Правильно понимаем, что речь идет о полях P и Q?
Да.
> Если Вы про окно вида (См. Рис_1), то это реакция на горячие клавиши «Ctrl»+«X»- снимает все активные заявки на продажу из текущего окна котировок по данному инструменту.
На рис. 1 у Вас не окно вида, а окно сообщения. Ctrl+x вроде бы стандартно означает "вырезать": ru.wikipedia.org/wiki/Вырезать,_копировать,_вставить
Я в стакане в поле Q выделил число, нажал Ctrl+Ins, но содержимое буфера обмена не изменилось...
> Уточните, пожалуйста, для чего Вам необходимо в поле Q (Количество инструментов) вводить числовые выражения?
Бывает нужно добавить к продаже сколько-то акций, которые были куплены по более низкой цене. И ещё бывает надо рассчитать, сколько акций, купленных взаймы у брокера, надо продать, чтобы не попасть на комиссию брокера при окончании вечерней сессии. (В этом случае нужны также умножения и деления). Я для этого пользуюсь калькулятором.
Кстати, я заметил конфликт комбинаций клавиш при работе с этими полями: если выделить значение в этом поле и нажать Ctrl+x (вырезать и поместить в буфер обмена Виндовс), то возникает страшное окошко типа "Удалить все заявки?" Кроме того, желательно, чтобы работали не только комбинации Ctrl+c/Ctrl+v, но и парные к ним Ctrl+Ins/Shift+Ins. И эти поля желательно вытягивать, чтобы они занимали всю ширину стакана.
А как насчёт того, чтобы можно было вводить в поле Q числовые выражения, хотя бы бесскобочные с + и -? (Надо учесть унарные + и -).
У меня самая свежая версия Квик, а проблема была всегда, сколько я помню. А помню, минимум, с полгода. При нажатии на клавишу при редактировании, напр., цены, задержка до появления/стирания цифры длится секунды две. Рынки/классы - обычные акции, напр., фонд ВТБ Ликвидность TQTF/LQDT.
Такое впечатление, что при редактировании полей ввода цены/количества происходит какой-то тяжёлый счёт. Можно его как-то отменить, чтобы это работало так же быстро, как щелчок по быстрой заявке в стакане?
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
Кстати, я как-то заметил, что если Квику задать сформировать отчёт по всем сделкам клиента (а их немного), то, пока он их 10 сек. формирует (Квик в это время слегка заблуривает окно), наблюдается потеря в получении скриптом обезличенных сделок и изменений в стакане (тоже на 10 сек.)
Необработанные сделки можно было бы ставить в очередь, чтобы потом отдать их скрипту? Такое впечатление, что мой скрипт получения сделок и формирование отчёта Квиком не могут работать одновременно? Квик не может использовать больше 2-х потоков? (Один для терминала и коллбэков, а другой для функции main)?
nikolz написал: покажите Ваш пример на C с ошибкой, исправлю.
Не понял: этот луа скрипт из предыдущего моего сообщения использует известную оболочку от swerg w32.dll, а работающий пример луа+длл на си, который транслируется gcc, на основе примера swerg, который собирался в VS, я получил ещё вчера.
Теперь меня интересует, как получать в длл таблицы от луа и разбирать их, напр., таблицу заявок и обезличенных сделок. Я несколько лет назад перешёл с Дельфи 7 на си под 64 бит и gcc, теперь неохота сидеть на 2-х стульях.
Кстати, если кто не знает, я автор книжки "Delphi и Turbo Pascal на занимательных примерах" (выходила в Питер-БХВ), а также нескольких других книжек, хотя, я программировал, как любитель, для развлечения, в основном писал для продажи англоязычные шареварные игры по своим идеям. А лет 15 назад я был монстром Perl regexp и написал о них лекции на intuit.ru и головоломную книжку, которая выносит мозги ногами вперёд (в связи с рекурсивными шаблонами и вообще). Понаходил в них и в Перле грубых ошибок, сообщал о них письмами Перл майнтайнерам, они их исправляли. К сожалению, эта узкая тема не приносит денег...
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
Пустая таблица позция по деньгам., На балансе есть деньги, в таблицах состояния счета, ограничения по клиентским счетам есть все данные. А в таблице позиции по деньгам пустота.
У меня только что тоже было долгое время аналогичное, CalcBuySell и getBuySellInfo тоже показывали нули, при этом приложение "ВТБ инвестиции" показывало, сколько денег и акций на счёте. Перезагружал Квик, не помогало. Минут 20 назад таблица "Состояние счёта" в Квике наконец-то заполнилась...
Спасибо, тов. swerg, за наше счастливое детство, меня сейчас интересует обмен данными между луа скриптом и длл на си. Кстати, вчера я запустил в квике ваш пример луа скрипта из 1-го поста: https://quik2dde.ru/viewtopic.php?id=329 Получил сообщение "C stack overflow". Может быть, с 2020 г. что-то поменялось в квике?
Там, оказывается, дело было в имени: не luaopen_mylib_funcs, что я вбрал из другого примера, а luaopen_luacdll, поэтому первоначальную сишную функцию можно оставить, поменяв у неё имя:
int __declspec(dllexport) luaopen_luacdll(lua_State *L) { luaL_newlib(L, ls_lib); return 1; }
И вместо 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
Опять начал искать и наткнулся на стр. qna.habr.com/q/475056 Добавил по примеру оттуда в бат файл ключи -L. и -llua54 и получил наконец-то dll... Чертовщина...
paluke написал: Библиотеку lua нужно указывать: ключики -L, -l
Я разместил в каталоге со всеми файлами файл lua54.lib, который взял из 1-го поста quik2dde.ru/viewtopic.php?id=18 и добавил опцию -Llua54.lib, сообщения с ошибками остались точно теми же, что и выше. Если, скажем, этот формат биб-ки понимает только микрософт и не понимает gcc, то почему линковщик ничего не говорит насчёт этого либ-файла?
paluke написал: Если вы хотите считать миллисекунды, quik абсолютно бесполезен.
Утром мне удаётся считать сотые доли секунды, и некоторое время назад я часто видел, что становился первым в очередь. А сейчас вечером мало того, что в очередь набивается огромное количество всякой сволочи, так ещё и мосбиржа меняет время начала торгов: было, как положено, 19:00:01, а теперь может быть и > 19:00:04...
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} };
Например, если мы получаем 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, моя заявка появилась в стакане. Как можно понять такую задержку? Может ли кто-то задерживать мои заявки намеренно?
Сейчас сталкивался с тем, что выставляю в Квике 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. А как сервер биржи определяет напр. сделки? А если моя заявка будет по текущей цене, а не лимитная, то тогда направление будет другое? От вида встречной ко мне заявки (лимитная или по маркету) это направление зависит?
Ещё, как я писал, в этом сером прямоугольничке шрифт должен быть меньше, чем в клетке, и если в клетке, в которой есть заявка, у юзера выбран жирный шрифт, то это не должно влиять на шрифт внутри серого прямоугольничка. Серый фон прямоугольничка должен быть достаточно тёмный, чтобы белый цвет цифр в нём хорошо был виден.
И эти прямоугольнички и числа в них должны быть выровнены по правому краю клетки (столбца), в котором они стоят, как сделано у ВТБ.
Точнее: этот серый прямоугольничек, так же, как и клетка, в которой он находится, кликабельный. По щелчку левой кнопкой при быстром режиме ввода будет выставлена заявка на покупку, если это столбец с покупкой, и заявка на продажу, если щелчок был в столбце "Продажи".