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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?, Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?
 
возможно счет для валюты не выбрали в фильтре портфеля
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
Виталий написал:
1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает "положить сверху NULL". Для чего мы это делаем?
2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!
3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.
4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.

Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.
1. Не NULL а nil.  Чтобы выбрать  первый элемент таблицы.
------------------------
2.  -1,1 - выбор с разных концов стека.  
---------------------------
3. см документацию:  int lua_next (lua_State *L, int index);  Снимает ключ со стека, ложит пару ключ-значение из таблицы
Т е ключ функция сама убирает из стека, а значение убираем сами.
------------------------------
4. qLua - это библиотека функций. У нее нет стека.
Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.
-------------------
Не надо ничего предполагать или гадать, лучше прочитать:
https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html
https://jevico.github.io/
https://eligovision.ru/media/upload/lua.pdf
Получить всю таблицу целиком, Получить всю таблицу целиком без цикла
 
Цитата
Сергей написал:
Подскажите, почему следующий скрипт не хочет выводить текущий портфель ЦБ?
Покажите, что у Вас в портфеле со сроком расчета T2. Возможно, что там пусто.
Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
если надо с каким-то дробным хвостиком то надо делать так:
Код
local bid=150.123456;
local step=0.1; price=bid- bid % step;  print("price="..price)  -- десятые доли
local step=0.01; price=bid- bid % step;  print("price="..price)  --сотые доли

результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150.1
price=150.12
>Exit code: 0

Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
Цитата
Lankaster написал:
Профи, подскажите пожалуйста как правильно получить цены "BID" и "OFFER"
делаю так
Код
  bid  =  tonumber( getParamEx (classcod, ticker,  "BID" ).param_value)
  
 выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется
если добавляю так bid = math.floor(bid) тогда все нормально bid = 150
Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код
   
Код
   function   countDecimalPlaces (number)     local  _, decimal  =  tostring(number):match"([^.] * ).(. * )"     return   # decimalend       -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)   
 и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1
каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы.
можно делать так:
Цитата
Lankaster написал:
Профи, подскажите пожалуйста как правильно получить цены "BID" и "OFFER"
делаю так
Код
  bid  =  tonumber( getParamEx (classcod, ticker,  "BID" ).param_value)
  
 выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется
если добавляю так bid = math.floor(bid) тогда все нормально bid = 150
Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код
   
Код
   function   countDecimalPlaces (number)     local  _, decimal  =  tostring(number):match"([^.] * ).(. * )"     return   # decimalend       -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)   
 и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1
каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы.
если надо целое, то можно делать так:
Код
local bid=150.123456; local price=bid//1>>0; print("price="..price)

результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150
>Exit code: 0
способ звукового сигнала в луа
 
Рассказываю как просто сделать функцию для воспроизведения  звука в различных форматах.
Надо сделать на СИ dll для луа вот с такой функцией.  
Код
static int mciSS(lua_State*L){  mciSendString((char*)lua_tostring(L,1),0,0,0); }
если кто-то не сможет ,пишите - выложу готовую dll.
Далее у меня такая dll называется nks. Вызов функции в скрипте записан как nks.mciss
=================
Поясняю как ее применять:
===========
Чтобы воспроизвести файл  в формате WAV  
надо открыть устройство с этим файлом так:
Код
local file="C:/Windows/Media/Alarm10.wav" -- звуковой файл
nks.mciss("open "..file.."  alias MediaFile wait"); -- открыть устройство
Для воспроизведения содержимого файла  пишем там , где хочется:
Код
nks.mciss("play MediaFile FROM 0 wait");
========================
Чтобы воспроизвести файл  в формате MP3
надо сделать все тоже самое, но для этого файла
Например у меня это файл "D:/nks/test.mp3"
Код
local file="D:/nks/test.mp3" -- звуковой файл
nks.mciss("open "..file.."  alias MediaFile wait"); -- открыть устройство
Для воспроизведения содержимого файла  пишем там, где хочется:
Код
nks.mciss("play MediaFile FROM 0 wait");
Опции :
----------------------------
Если Вам хочется запустить звук и не ждать, когда закончится, то уберите в последней команде "wait"
----------------------------
Если Вам хочется воспроизводить много различных звуков в разных местах скрипта,
то в начале скрипта откройте все звуковые файлы  и  для каждого из них сделайте уникальное имя устройства.
Его надо написать вместо "MediaFile"
Для воспроизведения конкретного файла надо указать имя его устройства в команде воспроизведения вместо  "MediaFile"
==============
Желаю успешного прослушивания звуковых файлов.
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Вернее, дело не в звуковом устройстве: в упрощённом варианте команд файлы с пробелами не играются, а в той форме, что была у w32, как помню, они игрались.
Выкладываю исходник на варианте mciSendString
Код
static int mciSS(lua_State*L){
    mciSendString((char*)lua_tostring(L,1),0,0,0); 
   if (lua_gettop(L)>1)SleepEx(lua_tointeger(L,2),1); 
    return 0; }
позволяет воспроизводить файлы wav, MP3, повторять, делать паузу
способ звукового сигнала в луа
 
размером в 28 КБайт
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
могу выложить dll
Программеров интересуют исходники, чтобы не грузить зоопарк посторонних длл (по одной для каждого случая)...
Она одна на все случаи
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Ещё для смешивания звуков на форумах советовали использовать сторонние звуковые биб-ки или ДиректХ (ДиректСаунд).
могу выложить dll
которая может воспроизводить WAV файлы асинхронно и синхронно из памяти и из файлов.
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
Nikolay написал:
Можно даже параллельно проигрывать звуки, если использовать правильную команду.
Спасибо, а правильная это какая? У меня создалось впечатление, что mci это не умеет.
вариант воспроизведения mp3 файлов
скачайте из интернета прогу mpg123.exe
Код
local x="D:/nks/test.mp3" -- звуковой файл
os.execute("D:/mpg123/mpg123.exe "..x)
Звук из файла и из памяти на Lua
 
Ранее в теме
https://forum.quik.ru/messages/forum10/message74775/topic8544/#message74775

Показал как воспроизвести звуковой файл на Lua из командной строки.
----------------
Недостаток такого способа - затраты времени на загрузку приложения плеера.
Достоинство - ничего не надо писать на СИ.
===============
В данной теме, по просьбе трудящихся, показываю как воспроизводить звуковой файл  сохранить его в памяти для
многократного воспроизведения.
--------------
Решить эту проблему невозможно без написания функции на СИ.
===============
По данной ссылке
https://cloud.mail.ru/public/PYXu/YrjyXLvcP
можно загрузить zip файл  nks.dll  c такой функцией,
там же есть пример, который напишу ниже,
и библиотека Lua53.dll
--------------------------
Пример :
Код
--функция для Lua 5.3 выводит на динамики звуковой файл
--при первом вызове записывает файл в буфер
--при последующих  вызовах воспроизводит содержимое буфера
--автор nikolz 2024
--распакуйте файл на диск  желательно D
--пример вызова функции для вывода на динамики системного звука

path = "D:/nks/"  --путь где находится файл nks.dll
package.cpath =path.."?.dll;"..package.cpath
require"nks"

local x="C:/Windows/Media/Alarm10.wav" -- звуковой файл
nks.run(x);        -- первый вызов с указанием файла
for x=1,5 do
   nks.run();     -- вызов воспроизведение из буфера памяти
end
nks.stop();        -- завершение работы и удаление буфера памяти
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Кроме музыки, в модуле можно синтезировать предложения .
Круть. На след. этапе можно сделать виртуальную дикторшу.
А для простых смертных у mciSendString предусмотрено проигрывание звука с заданного смещения и заданной длительности.
Так Вы ничего и не поняли.
Поясняю.
В начале темы написана одна строчка как воспроизвести звуковой файл.  
--------------------
Тоже самое что и ваша dll на основе  устаревшей функции  mciSendString.
--------------
Т е не надо никаких dll  для этого , понятно?
Схема торговой программы
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
на сайте института Эллиотта  англ. был такой сайт
Дюже умнО, и глаза не железные...
Тогда рекомендую,
«Золото́й клю́чик, и́ли Приключе́ния Бурати́но» — повесть-сказка советского писателя Алексея Толстого,
представляющая собой литературную обработку сказки Карло Коллоди «Приключения Пиноккио. История деревянной куклы».
в которой описана очень простая схема торговой программы.
способ звукового сигнала в луа
 
Есть еще они способ о котором  возможно мало кто знает.
Я использую такое решение в своих умных устройствах и для отладки звуковых команд для них на луа.
---------------------------
Берем модуль  внешнего плеера (цена вопроса 1 доллар) подключаем его к USB и загружаем на него свои звуковые файлы .
На выход модуля можно подключить динамики.
Есть вариант модуля с памятью на чипе флеш  либо с внешней флеш.
Число таких файлов может быть тысячи
В луа  используется функция вывода на виртуальнуй UART.
Выводим код любого файла и модуль его играет, а скрипт работает дальше.
Время  вывода команды на модуль  несколько мкс.
Кроме музыки, в модуле можно синтезировать предложения .
способ звукового сигнала в луа
 
есть решение
https://quik2dde.ru/viewtopic.php?id=79
Код
function PlaySoundFile(file_name)
  w32.mciSendString("CLOSE QUIK_MP3") 
  w32.mciSendString("OPEN \"" .. file_name .. "\" TYPE MpegVideo ALIAS QUIK_MP3")
  w32.mciSendString("PLAY QUIK_MP3")
end

Но оно делает тоже самое что и мой вариант, но для этого делается спец функция на СИ
т е в этом решении  вызова из командной строки, но через СИ.  
способ звукового сигнала в луа
 
Пардон, ошибся
В данной теме написан вариант запуска приложения плеера из командной строки
----------------------------
Т е загрузка файла звука делается приложением плеера.
Т е сначала грузится приложение плеер а оно грузит исполняемый   файл.
---------------------
Основное время затрачивается на загрузку приложения плеер.
Но плюсом такого решения является то, что плеер работает в своем потоке.
----------------------
Вариант
Код
local x="C:/Windows/Media/Alarm10.wav"
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
for j=1,10 do  os.execute(s); end

Лишь упрощает написание командной строки но не исключает многократную загрузку
=================
Чтобы загрузка была однократной надо использовать функцию на СИ и вызывать ее на исполнения.
-----------------------
При этом если файл длинный, то воспроизведение звука будет тормозить скрипт.
-------------------
Либо надо делать или брать готовую функцию исполняющую в отдельном потоке.
-----------------
В инете есть монго решений.  
способ звукового сигнала в луа
 
Код
local x="C:/Windows/Media/Alarm10.wav"
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
for j=1,10 do  os.execute(s); end
способ звукового сигнала в луа
 
вот вариант многократного проигрывания звука  с однократной загрузкой файла с диска
Код
local x="C:/Windows/Media/Alarm10.wav"
for j=1,10 do
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
os.execute(s);
end

играет 10 раз файл  "C:/Windows/Media/Alarm10.wav"
способ звукового сигнала в луа
 
Цитата
funduk написал:
А знаете ли Вы способ, который не загружает с диска этот файл всякий раз при проигрывании? А делает это один раз в начале работы скрипта
Знаю, но написал специально эту тему с целью дать вариант простого решения без написания каких-либо вспомогательных функций.
-------------------  
Какой смысл усложнять решение ,
если загрузка этого файла займет микросекунды,
а возможно ОС не будет грузить ее каждый раз снова.  
Схема торговой программы
 
Serge123,
Вспомнил, что после кризиса 2008 года написал книжку Сорос  "Новая парадигма финансовых рынков"
Читал ее когда-то.  
Интересный взгляд на законы рынка достаточно авторитетного спекулянта.
Схема торговой программы
 
пардон, опечатка,
на сайте института Эллиотта  англ. был такой сайт , сейчас не знаю есть ли.
Схема торговой программы
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
после кризиса всегда появляются новые Гуру, так как у старых слился депозит.
А это разве может помешать старым гурам базара, у которых "слился депозит", продолжать ими оставаться? Толпа-то этого не знает...

Я не обращал внимания на дату. Если найдёте что-то современное и полезное, дайте ссылку.
Много современного и полезного есть в платном торговом терминале Amibroker и на их форуме ,
а также на сайте и форуме метатрейдера,
на сайте института .
-------------------
Много статей и исследований есть  на сайтах недружественных стран.
---------------
Но сейчас как-то отошел от этого, поэтому дать ссылки не могу.
способ звукового сигнала в луа
 
Добрый день,
Можно воспроизводить звуковые сигналы Windows в скриптах луа так:
звук  из каталога C:/Windows/Media/:
Код
os.execute("powershell -c (New-Object Media.SoundPlayer 'C:/Windows/Media/Alarm10.wav').PlaySync();");
Код
os.execute("powershell -c (New-Object Media.SoundPlayer 'C:/Windows/Media/Ring10.wav').PlaySync();");
Схема торговой программы
 
Цитата
Constantin написал:
Мне вот интересно - каждый пишет свою обвязку для роботов? Это не рационально. Нет общей?
Вы правы.
Но бесплатных торговых систем для бирж не существует в мире.
---------------
КВИК это не торговая система, а программа для подачи заявок брокеру (так  определено изначально)
----------------
Сначала был язык QPILE для некоторой автоматизации подачи заявок
Потом встроили луа для этого.
---------------
Но КВИК это не торговая платформа, а так и остался терминалом для подачи заявок брокеру.
Что не так?
Схема торговой программы
 
Цитата
Serge123 написал:
Constantin, вот какие-то интересные блоги попались:
https://smfanton.ru/interesno/torgovye-roboty-na-birzhe.html
и по ссылке оттуда
http://www.quantalgos.ru/
а не смущает, что этим заметкам  7 лет?
И что случилось  с публичным портфелем этого авторами, как полагаете?
---------------
Кстати, он пишет что ведет свой сайт 10 лет
Т е после кризиса 2008 что-то купил быстрее кого-то и после этого не стал продавать, а стал учить других торговать.
после кризиса всегда появляются новые Гуру, так как у старых слился депозит.
------------------
Сейчас после 2022 - период новых Гуру до следующего кризиса
Вопросы к спецам по Lua и Lua C API
 
пардон, ошибся.
Выкладывал арбитражного советника, а не спредового.
Но спредовый еще проще.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Тогда вообще не понятно заявление, что он купил раньше кого-то.
Могу предположить, что по обезличенным сделкам можно было увидеть, что он успел купить по одной цене, а через очень короткое время пришла чья-то крупная покупка (видимо, по рынку) уже по др. цене.

Отн. kalikazandr, которого что-то давно не видно, могу сказать, что выглядел он довольно опытным роботостроителем, не хуже других: насколько я помню, году 20-21-м присутствующий здесь опытный тов. swerg (Да благословит его аллах и приветствует) на форуме quik2dde.ru опубликовал пример своего спредового робота (видимо, тов. swerg  (Мир ему и благословение аллаха) в то время ещё только учился), а этот kalikazandr раскритиковал этого робота и сказал, что это пример, как не надо его писать). При этом тов. swerg (Да вознаградит его аллах добром) ничуть не обиделся, зашла речь о том, как надо писать, и советы этого kalikazandr по написанию роботов и возможные подводные камни я ещё в прошлом году даже скопировал в свой текстовый файлик, который, надеюсь, и сейчас лежит на твердотельном накопителе.
Цитата
nikolz написал:
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.
Так этот алгоритм сидит в винде? Хм, мне здесь кто-то уже отвечал, что это алгоритм по фамилии одного мужика, который сидит на роутерах и по вечерам склеивает пакеты для экономии траффика. А если он в винде, то можно его попробовать как-то отменить?
относительно спредового робота.
На форуме выкладывал скрипт такого советника на луа.
Добавьте туда блок торговли по его сигналам и будет вам робот.
dll на C: удивительная ошибка...
 
Опять кто-то сказки рассказывает
М-6000, М-7000, СМ-1, СМ-2 - это HP(система команд с HP2000),
M6000 - это советский вариант американской HP2000
--------------------------------------
CM3, 4, 1420, - это   DEC(система команд PDP).
DBK - вариант на микропроцессоре 1801.
===================
и система команд у DBK и CM2 совершенно разная. Даже байты перевернуты в числах.

============================
БЭСМ-6 (аналог CDC 6200)  так и осталась самой мощной ЭВМ до 90-х.
-------------------
Но сказочникам все едино.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Вам о чем-нибудь говорит название "обезличенные сделки"?Свои вы как-нибудь опознаете, но не конкретного конкурента.
А он разве писал о ком-то конкретном? В этом благородном деле все - конкуренты.
Цитата
nikolz написал:
От терминала квика у вас на компе до очереди на сервере биржи путь не близкий.
Да, я понимаю... Если я захочу дойти до Москвы, то пару  лаптей  ботинок точно сношу.
Особенно вечером тяжело выставлять заявки (в 19:00:01): посылаю первые 4 раза заявку через 5 мс., а они приходят почти одновременно. А в последнее время два раза вечером видел, что на все 14 заявок не приходил отклик OnTransReply. Более того, я в файле, куда пишет свои действия скрипт, 2 раза не видел сообщения об отправке 1-й заявки, при этом она исполнялась. Кто-то может пояснить причину такого явления? (Ошибки в моём скромном скрипте не предлагать, я в нём кода не менял).
Тогда вообще не понятно заявление, что он купил раньше кого-то.
------------------------------------------
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.  
Вопросы к спецам по Lua и Lua C API
 
От терминала квика у вас на компе до очереди на сервере биржи путь не близкий.  
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Каким образом он измерил опережение конкурентов?
Это же видно по alltrades. Свои сделки там можно узнать, а время сделки даётся с точностью до мкс.
Эти вопросы лучше было бы ему задать на той самой странице, где он об этом написал.

И если смотреть на всё это со стороны, то бред одного анонима, который хочет пустить пыль в глаза и при этом не подтверждает своих доходов выпиской по счёту от брокера, ничем не лучше бреда других анонимов, которые тоже не подтверждают своих прибылей. Поэтому сторонним наблюдателям, как я, невозможно кого-то предпочесть.
Вам о чем-нибудь говорит название "обезличенные сделки"?
Свои вы как-нибудь опознаете, но не конкретного конкурента.
-------------------
Если Он что-то купил а потом кто-то еще это же купил , то по этому факту Вы не узнаете,
кто из вас раньше подал заявку, а кто позже.  
dll на C: удивительная ошибка...
 
Цитата
Serge123 написал:
Я ещё заметил, что эти граф. эффекты начали проявляться недавно, а с тёмной темой я работаю давно. Причём, раньше я после обеда, когда интенсивность торгов меньше, выбирал режим экономии энергии, когда у ЦП тактовая частота ставится 800 МГц вместо 2-х ГГц. И при этом мой скрипт обрабатывал в OnAllTrade и OnQuote сообщения по нескольким тикерам. Сейчас, если снизить частоту ЦП, не только вылазят левые иконки, но и фон на пустых местах окошек может вдруг стать белым вместо тёмного (и таким остаться) даже без работающего скрипта. Такое впечатление, что с какой-то версии Квик начал перерисовавать красивые иконки в тёмной теме 60 раз в сек. При этом диспетчер задач показывает нагрузку на ЦП 3%, а нагрузку на GPU 0-1%.
проблема в железе.
Можно попробовать следующее.
1) Выгрузить браузер
2) Выгрузить все приложения кроме Квика
3) Установить более низкое разрешение монитора.  
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
nikolz, проверял скорость str:sub и без двоеточия сам с пом. цикла и os.clock(), написал по памяти. Возможно, скорость для разных вариантов зависит от ЦП. И я проверял это в Квике.

Что значит фейк по-русски? Не стоит разбираться с lua_share?

Про то, что я зря перешёл с Дельфи на си, это, разумеется, шутка. Тут на форуме с ч/ю есть проблемы... Хотя, на Дельфи можно было натаскиванием компонентов на форму быстро сделать навороченную программу. Но мне сейчас не требуется писать программы с GUI.
Фейк по многим причинам.
-----------------
Автор пишет: "  позволяет мне опережать конкурентов на 2+ мс."  
----------------------------
Каким образом он измерил опережение конкурентов?  
--------------------------
Если работает на QUIK , то время отправки заявки составит примерно 0.1 мс.  Поэтому невозможно опережать на 2 ms
--------------------------
Если работает на винде, то квант винды 10 мс и возможны моменты когда его задача будет ждать эти 10 мс
----------------------------
Если  комп не в дата центре, то запаздывание получения данных через интернет уже порядка 10 ms и он никогда не обгонит компы в датацентре.
--------------------------------
Если сидит в датацентре, то там задержка менее 1 мс и обгонять на 2мс - это значит отставать ото всех.
-------------------------
Далее автор пишет:   " Был случай, единичный, когда ближайший конкурент купил акции всего лишь на 780 мкс позже меня,"
-------------------------
Эту информацию можно получить лишь по данным с сервера биржи, а их даже брокер не получает.
==================
Ну и последнее.
------------------------
Важно не то когда Вы купили, а то , c какой прибылью Вы вышли из позиции, т е, когда продали.
-----------------------
Можно раньше всех такого говна накупить...
================
Вывод:  Не читайте до обеда фейки на форумах  
и думайте над тем, что читаете,
прежде, чем перепостить такой бред.  
Вопросы к спецам по Lua и Lua C API
 
Serge123,
Вы меньше верьте надписям на заборах.
--------------------------
Си является эталоном при тесте языков на скорость исполнения.
Читайте техн.  статьи а не форумы.  
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
TGB написал:
Ошибка в ссылке на справку по Lua. Правильно:   https://quikluacsharp.ru/  
Сейчас на этом сайте посмотрел вашу статью и ваш спор с явно опытным человеком со странной кличкой kalikazandr:  https://quikluacsharp.ru/stati-uchastnikov/modul-realizatsii-interfejsa-obrabotki-sobytij-quik-s-isp...  (Мне даже показалось, что вы имеете отношение к этому сайту. Кстати, домен пора уже продлять.) А этого человека что-то давно не видно. Его советы по написанию роботов я видел также на сайте  https://quik2dde.ru/  Такое впечатление, что его метод с dll предпочтительнее. (Хотя, я с некоторым подозрением отношусь к тем, кто вместо "не знаю" пишет "хз"...) А вот и ответ на ваше замечание о том, зачем так стараться не писать не на чистом QLua:
===
Привет!
1. К сожалению, я не могу представить свое решение (не Fifo), оно уже реализовано на с++ и позволяет мне опережать конкурентов на 2+ мс. Был случай, единичный, когда ближайший конкурент купил акции всего лишь на 780 мкс позже меня, но тут хз, как получилось, видимо бывают исключения из правил.
===
От слова Привет  и далее фейк или по-русски - вранье.
 
Вопросы к спецам по Lua и Lua C API
 
Цитата
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)

а вот результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "test_edflib.lua" 
8.2e-08   8e-08   1.025
>Exit code: 0

разница составляет 2%, в пользу str:sub,
т е наоборот, чем Вы написали.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата

Цитата
nikolz написал:
может.
nil - это тип=0.Если разобрались, то знаете, что в структуре table есть поле   unsigned int sizearray;   -- размер массива-------------------Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
Если можно выйти за пределы массива (т.е. в конце массива может не быть элемента типа nil), то это плохие новости. Тогда перебирать массив надо, зная, сколько в нём элементов.
А какой Win API можно узнать, сколько байтов выделено, зная адрес этого блока памяти?
Я уже написал Вам, что у вас есть размер массива
поле Table  sizearray;
Если Вы пишите напрямую  по указателю array, то почему не проверяете sizearray?
В  исходниках есть пример проверки.  
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Мне известно, что они увеличиваются и имеют размером степень двойки. Меня интересует, может ли внешняя длл сделать цикл по массиву и остановиться, если встретит nil, не выйдет ли она за пределы отведённой для массива памяти? Я с месяц назад писал о чтении массива напрямую без rawgeti, открою секретик: я разобрался в исходниках и структурах и умею из длл читать массив. Работает, как часы. Кстати, зависания Квика и были в результате отладки этой длл. Всвязи с этим и вопрос.
может.
nil - это тип=0.
Если разобрались, то знаете, что в структуре table есть поле
 unsigned int sizearray;   -- размер массива
-------------------
Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
Запись открытого интереса в файл.
 
/*@@ LUA_INT_TYPE определяет тип для целых чисел Lua.

/* предопределенные параметры для LUA_INT_TYPE */
#определить LUA_INT_INT 1
#определить LUA_INT_LONG 2
#определить LUA_INT_LONGLONG 3

/** конфигурация по умолчанию для 64-разрядного Lua ('long long' и 'double')

#if !определено(LUA_INT_TYPE)
#определить LUA_INT_TYPE    LUA_INT_LONGLONG
#конечный код
Запись открытого интереса в файл.
 
  • Для справки:
  • Windows: long и int остаются 32-разрядными,
  • а для 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.

Запись открытого интереса в файл.
 
форматы чисел в версиях 5.4,5.3
Цитата
Serge123 написал:
Цитата
nikolz написал:
Луа хранит числа в двух форматах double(8 байт ) и long (4 байта)
Насколько я понимаю, у Луа, скомпилированного под 32-разрядную Виндовс, будут форматы float и long (по 4 байта), а если Луа скомпилирован под 64-разрядную Виндовс, то числовые форматы будут только double и int64 (по 8 байтов).
не возражаю , так как в луа это одна и та же  структура.
Запись открытого интереса в файл.
 
Цитата
Serge123 написал:
Цитата
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. Т е написав или взяв в интернете функцию высокоточного чтения времени.
================
Но я бы рекомендовал Вам сначала разобраться с реальными задержками данных поступающими в терминал и скоростью реакции вашей программы на их изменение.
Потом решать, какие точности измерений Вам необходимы.
 
dll на C: удивительная ошибка...
 
Цитата
Serge123 написал:
Вот пара новых примеров, которые случились подряд, радиатор у ПК почти холодный.
Если сбоит память, то почему ни разу не было ошибок в работе программы, не говоря уже о вылетах по защите памяти? Исключительно то лишние свои, то посторонние иконки...
Предположу что ошибки могут быть связаны с ошибками памяти.
Если вы разгоняли память то надо вернуть в биосе дефолтные установки.
--------------------------
Надо бы ее проверить
Вопросы к спецам по Lua и Lua C API
 
  • Мы реализуем массивы в Lua просто путем индексации таблиц целыми числами. Следовательно, массивы не имеют фиксированного размера, а увеличиваются по мере необходимости. lua.org/pil/11.1.htmlРоберт Харви
    28 апреля 2015 в 19:40
Вопросы к спецам по Lua и Lua C API
 
Не беспокойтесь, такой проблемы нет.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Ещё возник такой вопрос о выделении памяти под массив в таблицах Луа. Я смотрел исходники на бразильском, но с налёту так и не смог выяснить: по-бразильски я ещё не очень понимаю, да и буковки там мелкие, плохо видать...

Вопрос такой: может ли быть случай: когда вся память, выделенная под массив, занята элементами этого массива? Напр., выделена память под 8 элементов массива и в нём сидит 8 элементов?

Я пытался поискать мнения тех, кто разобрался в этом, нашёл вот это замечание Бориса Нагаева:
https://qna.habr.com/q/117781
Но из него так до конца и не понял ответа на мой вопрос...
В луа память под массивы расширяется динамически.  
dll на C: удивительная ошибка...
 
Цитата
Serge123 написал:
Под конец работы опять показалась та же картинка, но большего размера и в другом пункте того же меню.
Предположу, что у Вас проблема с железом.
Очень похоже на перегрев.
На КВИКЕ Вы это видите, потому что это приложение у Вас активно.
Посмотрите нагрев процессора.
Если давно не чистили комп, то почистите вентилятор процессора.
dll на C: удивительная ошибка...
 
Цитата
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 порт перебросить. Если нет физического можно через виртуальный.
------------------------
Можно повесить второй винт.
-------------------------------------
Как говорят, хочешь решить проблему - делаешь, не хочешь - придумываешь причину почему.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
Наверх