Serge123 написал: nikolz, проверял скорость str:sub и без двоеточия сам с пом. цикла и os.clock(), написал по памяти. Возможно, скорость для разных вариантов зависит от ЦП. И я проверял это в Квике.
Что значит фейк по-русски? Не стоит разбираться с lua_share?
Про то, что я зря перешёл с Дельфи на си, это, разумеется, шутка. Тут на форуме с ч/ю есть проблемы... Хотя, на Дельфи можно было натаскиванием компонентов на форму быстро сделать навороченную программу. Но мне сейчас не требуется писать программы с GUI.
Фейк по многим причинам. ----------------- Автор пишет: " позволяет мне опережать конкурентов на 2+ мс." ---------------------------- Каким образом он измерил опережение конкурентов? -------------------------- Если работает на QUIK , то время отправки заявки составит примерно 0.1 мс. Поэтому невозможно опережать на 2 ms -------------------------- Если работает на винде, то квант винды 10 мс и возможны моменты когда его задача будет ждать эти 10 мс ---------------------------- Если комп не в дата центре, то запаздывание получения данных через интернет уже порядка 10 ms и он никогда не обгонит компы в датацентре. -------------------------------- Если сидит в датацентре, то там задержка менее 1 мс и обгонять на 2мс - это значит отставать ото всех. ------------------------- Далее автор пишет: " Был случай, единичный, когда ближайший конкурент купил акции всего лишь на 780 мкс позже меня," ------------------------- Эту информацию можно получить лишь по данным с сервера биржи, а их даже брокер не получает. ================== Ну и последнее. ------------------------ Важно не то когда Вы купили, а то , c какой прибылью Вы вышли из позиции, т е, когда продали. ----------------------- Можно раньше всех такого говна накупить... ================ Вывод: Не читайте до обеда фейки на форумах и думайте над тем, что читаете, прежде, чем перепостить такой бред.
Serge123, Вы меньше верьте надписям на заборах. -------------------------- Си является эталоном при тесте языков на скорость исполнения. Читайте техн. статьи а не форумы.
Сейчас на этом сайте посмотрел вашу статью и ваш спор с явно опытным человеком со странной кличкой kalikazandr: https://quikluacsharp.ru/stati-uchastnikov/modul-realizatsii-interfejsa-obrabotki-sobytij-quik-s-isp... (Мне даже показалось, что вы имеете отношение к этому сайту. Кстати, домен пора уже продлять.) А этого человека что-то давно не видно. Его советы по написанию роботов я видел также на сайте https://quik2dde.ru/ Такое впечатление, что его метод с dll предпочтительнее. (Хотя, я с некоторым подозрением отношусь к тем, кто вместо "не знаю" пишет "хз"...) А вот и ответ на ваше замечание о том, зачем так стараться не писать не на чистом QLua: === Привет! 1. К сожалению, я не могу представить свое решение (не Fifo), оно уже реализовано на с++ и позволяет мне опережать конкурентов на 2+ мс. Был случай, единичный, когда ближайший конкурент купил акции всего лишь на 780 мкс позже меня, но тут хз, как получилось, видимо бывают исключения из правил. ===
От слова Привет и далее фейк или по-русски - вранье.
Serge123 написал: string.sub(str, i, j) работает раза в два быстрее, чем str:sub(i, j),
Вы это сами проверяли или опять на форуме у того кто видел кого-то прочитали? ---------------- вот вам тест:
Код
local str="iqreporoerp[tp[]yprtlh;lh[yyjpy[[y]j;g][j;][[p[lf;d,;,n;hm';hm";
local N=10000
local t1;
local s;
local k=os.clock(); for k=1,N do s=string.sub(str,5,20) end t1=os.clock()-k
k=os.clock(); for k=1,N do s=str:sub(5,20) end t2=os.clock()-k
print(t1/N,t2/N,t1/t2)
nikolz написал: может. nil - это тип=0.Если разобрались, то знаете, что в структуре table есть поле unsigned int sizearray; -- размер массива-------------------Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
Если можно выйти за пределы массива (т.е. в конце массива может не быть элемента типа nil), то это плохие новости. Тогда перебирать массив надо, зная, сколько в нём элементов. А какой Win API можно узнать, сколько байтов выделено, зная адрес этого блока памяти?
Я уже написал Вам, что у вас есть размер массива поле Table sizearray; Если Вы пишите напрямую по указателю array, то почему не проверяете sizearray? В исходниках есть пример проверки.
Serge123 написал: Мне известно, что они увеличиваются и имеют размером степень двойки. Меня интересует, может ли внешняя длл сделать цикл по массиву и остановиться, если встретит nil, не выйдет ли она за пределы отведённой для массива памяти? Я с месяц назад писал о чтении массива напрямую без rawgeti, открою секретик: я разобрался в исходниках и структурах и умею из длл читать массив. Работает, как часы. Кстати, зависания Квика и были в результате отладки этой длл. Всвязи с этим и вопрос.
может. nil - это тип=0. Если разобрались, то знаете, что в структуре table есть поле unsigned int sizearray; -- размер массива ------------------- Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
а для 64-разрядных целых чисел определены специальные новые типы данных.
--------------------------------
Linux: размер long становится 64-разрядным, в то время как размер int остается 32-разрядным в 64-разрядных версиях Linux.
=========================== Распространенные проблемы с 64-разрядной миграцией Visual C ++
При использовании компилятора Microsoft C ++ (MSVC) для создания приложений для запуска в 64-разрядной операционной системе Windows вам следует знать о следующих проблемах:
int и a long являются 32-разрядными значениями в 64-разрядных операционных системах Windows.
Для программ, которые вы планируете компилировать для 64-разрядных платформ, следует соблюдать осторожность и не назначать указатели на 32-разрядные переменные.
Указатели являются 64-разрядными на 64-разрядных платформах, и вы усечете значение указателя, если присвоите его 32-разрядной переменной.
size_t, time_t и ptrdiff_t являются 64-разрядными значениями в 64-разрядных операционных системах Windows.
time_t это 32-разрядное значение в 32-разрядных операционных системах Windows в Visual Studio 2005 и более ранних версиях. time_t теперь по умолчанию это 64-разрядное целое число.
Вы должны знать, где ваш код принимает int значение и обрабатывает его как size_t или time_t значение. Возможно, что число может вырасти до 32-разрядного числа, и данные будут усечены при их передаче обратно в int хранилище.
Модификатор %x (шестнадцатеричный int формат) printf не будет работать должным образом в 64-разрядной операционной системе Windows. Он будет работать только с первыми 32 битами передаваемого ему значения.
Используйте %I32x для отображения 32-разрядного интегрального типа в шестнадцатеричном формате.
Используйте %I64x для отображения 64-разрядного интегрального типа в шестнадцатеричном формате.
%p (шестнадцатеричный формат указателя) будет работать должным образом в 64-разрядной операционной системе Windows.
nikolz написал: Луа хранит числа в двух форматах double(8 байт ) и long (4 байта)
Насколько я понимаю, у Луа, скомпилированного под 32-разрядную Виндовс, будут форматы float и long (по 4 байта), а если Луа скомпилирован под 64-разрядную Виндовс, то числовые форматы будут только double и int64 (по 8 байтов).
не возражаю , так как в луа это одна и та же структура.
nikolz написал: Луа хранит числа в двух форматах double(8 байт ) и long (4 байта)
Насколько я понимаю, у Луа, скомпилированного под 32-разрядную Виндовс, будут форматы float и long (по 4 байта), а если Луа скомпилирован под 64-разрядную Виндовс, то числовые форматы будут только double и int64 (по 8 байтов).
уже нет квиков под 32 разрядную версию, так как для хранения номеров сделок надо 64 бита.
snurhel написал: Доброго времени суток. В Lua, я совсем новенький, так что просьба не ругаться за банальные вопросы. Я собираюсь записывать историю историю изменения отрытого интереса в бинарный файл, для дальнейшего анализа в другой программе. В формате: Дата Время Цена Last Значение интереса 12.02.2024 16.42.01.074:074244 12.298 20000 Время тика хочу записывать в posix формате(unix время, long 64 бита), но обнаружил что в Lua это время с точностью до секунд, и не микросекунд. Поиск решения внятного ответа не дал, видел что на форуме поднимался этот вопрос, но так ни к чему вроде как и не пришли. Можно ли только средствами языка Lua решить этот вопрос, или надо писать костыли?
Для цены хотел использовать double(64 бита), а для открытого интереса integer(32 бита). И вроде как в Lua 5.3 появился целочисленный тип, но я так понял Lua c динамической типизацией, сам присваивает как ему кажется правильней тип, и напрямую это ему не указать. Но в других источниках я читал, что number всегда занимает место 64 бита в формате double, даже если записано целочисленное значение. Так как все-таки Lua записывает числа?
И если все-таки размер number меняется, то может ли userdata послужить решением в этом вопросе? Возможно если сам не разберусь, отдам задачу более квалифицированному человеку, но хотелось бы все равно понять, как будет действовать Lua в квике, при записи бинарного файла. Знаю что можно просто все писать в csv, но не хочу тратить время на преобразование строк в числа, хоть и не претендую на HFT, но хотелось бы меньше лишних движений.
У Вас много вопросов и не понятно, на какой отвечать, но попробую. ---------------------- Луа хранит числа в двух форматах double(8 байт ) и long (4 байта) ------------------------ Хранятся эти числа в структуре . В этой же структуре хранятся и указатели. ------------------------ Поэтому размер не зависит от типа данных. ------------------------- Писать бинарный файл можно как запись строк. Луа пишет в файл все байты вне зависимости от значения байта . ----------------------- Время с дискретом 0.1 мкс можно получить используя API C for lua. Т е написав или взяв в интернете функцию высокоточного чтения времени. ================ Но я бы рекомендовал Вам сначала разобраться с реальными задержками данных поступающими в терминал и скоростью реакции вашей программы на их изменение. Потом решать, какие точности измерений Вам необходимы.
Serge123 написал: Вот пара новых примеров, которые случились подряд, радиатор у ПК почти холодный. Если сбоит память, то почему ни разу не было ошибок в работе программы, не говоря уже о вылетах по защите памяти? Исключительно то лишние свои, то посторонние иконки...
Предположу что ошибки могут быть связаны с ошибками памяти. Если вы разгоняли память то надо вернуть в биосе дефолтные установки. -------------------------- Надо бы ее проверить
Мы реализуем массивы в Lua просто путем индексации таблиц целыми числами. Следовательно, массивы не имеют фиксированного размера, а увеличиваются по мере необходимости. lua.org/pil/11.1.html –Роберт Харви 28 апреля 2015 в 19:40
Serge123 написал: Ещё возник такой вопрос о выделении памяти под массив в таблицах Луа. Я смотрел исходники на бразильском, но с налёту так и не смог выяснить: по-бразильски я ещё не очень понимаю, да и буковки там мелкие, плохо видать...
Вопрос такой: может ли быть случай: когда вся память, выделенная под массив, занята элементами этого массива? Напр., выделена память под 8 элементов массива и в нём сидит 8 элементов?
Я пытался поискать мнения тех, кто разобрался в этом, нашёл вот это замечание Бориса Нагаева: https://qna.habr.com/q/117781 Но из него так до конца и не понял ответа на мой вопрос...
Serge123 написал: Под конец работы опять показалась та же картинка, но большего размера и в другом пункте того же меню.
Предположу, что у Вас проблема с железом. Очень похоже на перегрев. На КВИКЕ Вы это видите, потому что это приложение у Вас активно. Посмотрите нагрев процессора. Если давно не чистили комп, то почистите вентилятор процессора.
Serge123 написал: Я USB-хабом не пользовался... Это, видимо, расширитель для USB, чтобы подключать больше USB устройств? Не хватало мне ещё что-то докупать в связи с этой проблемой. Насколько я понял, она возникает по причине того, что при попытке загрузиться с флэшки BIOS не загружает (не знаю откуда) драйвер для работы с флэшкой. Максимум, что я видел при многочисленных попытках загрузить Акронис с флэшки, - это первоначальная заставка программы, которая как-то всё-таки читается с флэшки, и потом всё мертво.
А вот на моём рабочем маломощном мини ПК BIOS с разблокированными доп. функциями: можно, напр., запретить какой-то порт SATA. Это очень удобно, если есть два загрузочных диска и хочется, чтобы при загрузке с одного из них другого не было видно.
Помню, я как-то нарвался на неприятную особенность вин10: стоял на ПК загрузочный диск с вин7, я к нему подключил ещё один диск и установил на него вин10. И эта вин10 без спросу полезла на диск с вин7 и сделала так, что с него уже нельзя было загрузиться, а можно было загрузить с него вин7 только через меню выбора ОСдля загрузки при загрузке с диска с вин10. Если убрать диск с вин10, то загрузка с диска с вин7 стала невозможна. Причём, никаким ковырянием настроек вин10 нельзя было это отменить и вернуть загрузку с диска с вин7!!!
Я хотел найти в Интернете ответ на вопрос: что будет, если на ПК стоит загрузочный диск с вин10 и я подкючу к нему ещё загрузочный диск с вин10: не получится та же история, как и с вин7? Ответа я не нашёл. Может, здесь кто-то знает ответ?
Я сколько-то лет назад делал такой фокус: ретранслировал и исправлял mbr загрузчик в 1-м секторе диска и добавлял к нему маленькое меню: с какого диска грузиться, с 1-го или со 2-го? Мой фрагмент кода обрабатывал нажатие клавиши через BIOS и в mbr секторе на диске, с которого не грузимся, исправлял байт в таблице разделов, чтобы он выглядел, как неразмеченная область диска, чтобы виндовс туда не лезла. Но не хочется вспоминать всё это дело, да и у этого Topton диск размечен как GPT, а с GPT я не умею делать такой фокус...
Возможно знаете, но сейчас win10 можно ставить без проблем с сайта майкрософт. --------------------------------- Я не встречался с проблемой невозможности загрузки с флешки. -------------------- Ставил не мало, но такой проблемы не было. ---------------- Можно подключить второй комп к первому и сбросить загрузочный файл винды --------------------------- В крайнем случае можно через UART порт перебросить. Если нет физического можно через виртуальный. ------------------------ Можно повесить второй винт. ------------------------------------- Как говорят, хочешь решить проблему - делаешь, не хочешь - придумываешь причину почему.
по вашей ссылке чел пишет: S200 - из замеченного - при подключении USB-хаба (любого) и втыкании в него флэшки переставала работать беспроводная мышь с адаптером воткнутым в корпусной USB. Пришлось воспользоваться USB-хабом подключаемым к порту USB-C. В таком виде - полет нормальный.
Serge123 написал: Да, я уже подумывал так сделать... У меня тут за дисплеем валяется ещё один китайский мини ПК, но уже 6-ядерный, я хотел на него установить Квик, но тогда придётся переключать туда-сюда эзернет провод от модема и от дисплея... Я не смог сделать так, чтобы он получал Интернет от модема через вайфай и не смог загрузиться на нём с флэшки, чтобы снять копию диска, из-за ущербности/урезанности его BIOS (при загрузке возникает надпись Evaluation version). Это TopTon Computer, и это известная проблема: https://4pda.to/forum/index.php?showtopic=994767&st=160 Если бы не этот дурацкий BIOS, то это был бы замечательный мини-ПК...
Видимо, придётся опять установить Квик на этот же маломощный мини-ПК, на котором работаю сейчас, и опять с нуля делать конфигурацию для wnd файлов...
Квиков на один комп можете поставить сколько угодно. И поработайте 1 день на чистом квике без ваших скриптов. Если есть другой брокер то можете на одном компе подключить два квика к разным брокерам. ------------------------ Второму компу можно по ehernet (кабелю) дать интернет от этого компа.
Serge123 написал: МенЯ продолжают преследовать эти иконки... Сегодня я не запускал этот скрипт с длл, сейчас только захотел закрыть Квик и в некоторых выпадающих меню обнаружил подобную картинку, как в аттаче. Это повторилось раза 3-4 подряд, но я не могу через клавишу PrtScr запиасть несколько копий экранов... В этих меню Квика слева от каждого пункта встречалась также иконка в виде барашка от SoftPerfect RAM Disk, который сидит в трее.
И это в недавно скачанной версии Квика... У меня только одно предположение: возможно, как-то подпорчен wnd файл, который сегодня был загружен в Квик. Но я с этим файлом сегодня торговал...
Рекомендую все ваше выкинуть из квика и понаблюдать за появлением чего-то где-то. Потом расскажите результат.
VPM, Вы уже утомили своими сказками про действия ММ. ================= еще раз Вам пояcняю: Задача маркет-мейкера не двигать рынок а наоборот сжимать спред и уменьшить волатильность. ================== Более того нет одного ММ. На московской бирже маркет-мейкеров 3154 штуки, а не один.
и еще.. Когда на рынок приходит крупный игрок, т е рынок начинает мощно двигаться, то маркет-мейкер перестает играть свою роль, а присоединяется к этому игроку т к на этом он заработает больше бабла чем если будет сдерживать рынок. Вот тогда рынок буквально улетает так как его никто не держит.
Serge123 написал: Хм, может быть, тут дело в gcc.exe? Кому не нравится имя mydll.dll??
В сообщение же сказано, что переполняется стек функции. Можно лишь гадать почему. Но как правило, либо Вы передаете функции очень большой объем параметров, либо утечка памяти, т е некорректный выход из стека какой-то функции. ------------------ Если пишите на си, то используйте функции библиотеки СИ, а не w32.dll (это самопальная dll верно?) возможно ошибка исчезнет. В любом случае это ошибка а сишных самопальных dll
Добавлю к предыдущему ликбезу. Маркет-мейкер (у него контракт с биржей на эту должность) никогда не наращивает позиции, так как это не его цель и за это ему не платят. Его задача как майкет-мейкера как раз обратная, чтобы рынок не двигался . Т е чтобы была малая волатильность и малый спред. ================== Позиции наращивают игроки и они двигают рынок.
Так как маркет-мейкер как правило крупный игрок, то он может быть и в роли такого игрока. -------------------- Не все крупные игроки являются маркет-мейкерами. =============== Т е если маркет-мейкер это такой игрок, которому за покупки-продажи акций платит биржа.
VPM написал: Ну что тут скажешь, быстро не получилось, а медленно и нам не нужно. Вернулся в тему, нечеткая логика, на мой взгляд может пригодиться нам, в определении стратегии, т.е. пытаемся определить каким методом предпочтительней в данный момент на данном инструменте торговать. Речь идет о краткосрочной торговле, торговле по тренду и флете, И вообще возможно ли алгоритмически условно делить рынок на сегменты?
Полагаю, Вы немного не поняли эту логику. Она фактически определяет вариант булевой алгебры, когда вместо 1 используется значение от 0 до 1. ------------------ Я например использую бинарные нейронные сети, но и в них затык с оптимизацией (это булева алгебра). ----------------------------- Пока не встречал, чтобы кто-то реализовал бинарную сеть с нечеткими бинарными правилами. --------------------- Есть хорошо известная и давно успешно применяемая альтернатива нечеткой логике - это Байесовский метод принятия решений. --------------- Полагаю Вы о нем слышали. Можно начать с него. Это проще.
От функции активации ничего практически не зависит. Зависит лишь от объема статистики на входе. Если в интернете набралось миллиарды фото и текста , то и удалось обучить GPT.
VPM написал: Nikolay, А что неужели нет методов улучшения обучения? Этих персептронов на писано на разных языках, и все годами ждут обучения? Ну если даже нет ошибки в luann2, то и решением это точно ни назовёшь, ответ через год это ни кому ненужный ответ, ну по крайней мере в нашей сфере.
luann1 меня конечно смущает, более привлекательно выглядит базовый пример с чего все началось (но сайт нынче не открывается, а Вы говорите ссылки, нужно у себя поискать, что имеем то храним)
нейросеть подобна мясорубке. Если железо мощное как у гугла то и мясорубка мощная. На выходе всегда фарш, но из чего он ,зависит от продукта на входе. Если мясо -то мясной, говно, то и на выходе оно же.
Quik собственность разработчиков. Право использования софта определяется лицензией. ------------------------ Немного не точно написал. Речь не про протокол DDE а про формат данных таблиц Excel. ------------------- Но в мой офисе его никто не реализовал. В Квике передача в Excel сделана еще в прошлом веке. ------------------
Serge123 написал: Случайно так получилось, что в начале торгов я быстро всё продал по хорошей цене, а она после этого быстро опустилась на 3 пункта и, похоже, на этом устаканилась. Хотя, вчера поздно вечером покупатели поддавливали. Да, не совсем оправдалось предположение автора канала "Профита нет"...
Для тех, кто не понял , поясняю. Пишите вместо драйвера ddе в мой офисе макрос (скрипт на луа), который получает данные из скрипта квика и помещает их в таблицы мой офис. Но можете взяться за написание драйвера DDE для мой офиса, если осилите.
Для справки. DDE это собственность майкрософ. ----------------------------- В Мой Оффисе для макросов используется Lua. Поэтому можно реализовать экспорт таблиц из QUIK через Lua вместо DDE
дополню ответ: Если процесс выполняется дольше, значение, возвращаемое функций clock, всегда равно (clock_t)(-1) в соответствии со стандартами ISO C99 (7.23.2.1) и ISO C11 (7.27.2.1).
По-поводу "дебильного" замечу: ---------------------------- Вообще-то опционов 26 тысяч штук и у каждого 52 параметра. Если фильтр не поставить то будете получать все 52 параметра по всем 26 тысячам .
--------------------------------- Зеркало не виновато.
VPM написал: nikolz, Ползает робот - пылесос и меня это совсем не смущает, стиральная машина стирает и меня это не смущает. В быту куда не ткнись наткнешься на Fuzzy Logic, и это ни кого не смущает. Срок говорит о проверке временем, и подтверждает тот факт, что решать задачи управления лучше простыми методами. Хотя при проектировании Fuzzy System легко наделать ошибок.
Вы ошибаетесь. В этих устройствах нет нечетких множеств. Но Вы можете верить, что там оно есть. Блажен, кто верует,...
Почему не дают доступ к папке arqatech.com/upload/Public/ ? Может быть, оттуда можно ещё что-то полезное накачать? Тут говорилось о примерах торговых программ "от арки", как их можно бесплатно скачать?
To All: и вообще, где можно надыбать нормальные примеры торговых программ, а не всякий хлам? На сайте брокера БКС я видел статьи о создании таких программ, но ссылки на тексты этих программ не работают. Может быть, кто-то скачивал эти тексты или знает, как их найти в архиве Интернета?
VPM написал: Kolossi, Прежде чем, что - то куда - то вставлять, неплохо бы вначале, разработать лингвистические переменные для входящих данных, для выхода, создать правила, разработать алгоритм использования ответов. И это задача далеко не простая. Ну прежде чем встраивать в реал, нужно от тестировать. (Алгоритм создания есть в примере).
А Вас не смущает, что теория нечетких множеств разработана 50 лет назад. И кроме пиара компаний продающих софт для принятия решений , вы никаких достижений в этой области не найдете. ---------------- Для полноты понимания вы еще посмотрите скрытую марковскую модель. Это уж точно применяется уже давно в подобных задачах.
Айдар написал: Где почитать подробое руководство по этой версии? Какие ошибки могут возникнуть, и особенно интересует поддерживает ли комментарии, имена переменных и т.д. на русском языке?
Виталий написал: Вопрос просто: как в индикаторе получить данные из таблицы обезличенных сделок? OnAllTrade, как я понимаю, в индикаторах недоступен. Переключить график на тики - НЕ подходит. Хочу именно программно в индикаторе получить доступ к данным.
надо читать из таблицы обезличенных сделок этим функциями:
Функции для обращения к строкам произвольных таблиц QUIK
Функции из этой группы предназначены для доступа к данным, содержащимся в таблицах Рабочего места QUIK.