Вопросы к спецам по Lua и Lua C API

Страницы: 1
RSS
Вопросы к спецам по Lua и Lua C API
 
1. Будет ли утечка памяти, если C dll при работе со стеком Lua не будет вызывать lua_pop? Ведь сказано, что Lua при каждом вызове подпрограммы из C dll создаёт этот стек заново.

2. Решит ли проблему с возможной утечкой памяти, если не вызывать lua_pop, а в конце работы со стеком вызвать lua_settop(0)? Я думаю, что решит, т.к. lua_pop это макрос, который вызывает lua_settop.

3. Я попытался увидеть сборку мусора и написал такой код:
Код
function main()
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
local s1 = '' .. collectgarbage("count") .. '\n'
s = nil
s1 = s1 .. collectgarbage("count") .. '\n'
collectgarbage("collect")
sleep(10000)
s1 = s1 .. collectgarbage("count") .. '\n'
message(s1)
end
Получил такой вывод:

37.5439453125
37.619140625
36.046875

Видно, что памяти освободилось меньше, чем занимала строка s. Как это объяснить?
 
Цитата
Serge123 написал:
1. Будет ли утечка памяти, если C dll при работе со стеком Lua не будет вызывать lua_pop? Ведь сказано, что Lua при каждом вызове подпрограммы из C dll создаёт этот стек заново.

2. Решит ли проблему с возможной утечкой памяти, если не вызывать lua_pop, а в конце работы со стеком вызвать lua_settop(0)? Я думаю, что решит, т.к. lua_pop это макрос, который вызывает lua_settop.

3. Я попытался увидеть сборку мусора и написал такой код:
Код
   function   main ()
s  =   'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 
 local  s1  =   ''   ..  collectgarbage( "count" )  ..   '\n' 
s  =   nil 
s1  =  s1  ..  collectgarbage( "count" )  ..   '\n' 
collectgarbage( "collect" )
 sleep ( 10000 )
s1  =  s1  ..  collectgarbage( "count" )  ..   '\n' 
 message (s1)
 end 
  
Получил такой вывод:

37.5439453125
37.619140625
36.046875

Видно, что памяти освободилось меньше, чем занимала строка s. Как это объяснить?
утечки памяти не будет, но возможно переполнение стека. pop возвращает стек на начало.
Без него размер стека меньше на число параметров в нем.
 
В данном случае речь о стеке луа, а не о стеке функций С. Поэтому утечка памяти вообще не причем.
Утечка памяти связана с функциями malloc calloc realloc.
 
Под утечкой памяти  обычно понимают неконтролируемое ОС сокращения объема оперативной памяти.
Т е приложение занимает память, а когда завершается, то возвращает меньше, чем занимало.
В итоге память в системе безвозвратно сокращается.
 
Ещё возник такой вопрос о выделении памяти под массив в таблицах Луа. Я смотрел исходники на бразильском, но с налёту так и не смог выяснить: по-бразильски я ещё не очень понимаю, да и буковки там мелкие, плохо видать...

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

Я пытался поискать мнения тех, кто разобрался в этом, нашёл вот это замечание Бориса Нагаева:
https://qna.habr.com/q/117781
Но из него так до конца и не понял ответа на мой вопрос...
 
Цитата
Serge123 написал:
Я смотрел исходники на бразильском, но с налёту так и не смог выяснить: по-бразильски я ещё не очень понимаю, да и буковки там мелкие, плохо видать...
По-бразильски я ещё не очень понимаю... Ха-ха. Повеселили. :smile:  
 
Цитата
Serge123 написал:
Ещё возник такой вопрос о выделении памяти под массив в таблицах Луа. Я смотрел исходники на бразильском, но с налёту так и не смог выяснить: по-бразильски я ещё не очень понимаю, да и буковки там мелкие, плохо видать...

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

Я пытался поискать мнения тех, кто разобрался в этом, нашёл вот это замечание Бориса Нагаева:
https://qna.habr.com/q/117781
Но из него так до конца и не понял ответа на мой вопрос...
В луа память под массивы расширяется динамически.  
 
Не беспокойтесь, такой проблемы нет.
 
  • Мы реализуем массивы в Lua просто путем индексации таблиц целыми числами. Следовательно, массивы не имеют фиксированного размера, а увеличиваются по мере необходимости. lua.org/pil/11.1.htmlРоберт Харви
    28 апреля 2015 в 19:40
 
Мне известно, что они увеличиваются и имеют размером степень двойки. Меня интересует, может ли внешняя длл сделать цикл по массиву и остановиться, если встретит nil, не выйдет ли она за пределы отведённой для массива памяти? Я с месяц назад писал о чтении массива напрямую без rawgeti, открою секретик: я разобрался в исходниках и структурах и умею из длл читать массив. Работает, как часы. Кстати, зависания Квика и были в результате отладки этой длл. Всвязи с этим и вопрос.
 
Ошибка в грамматике: в связи с этим и вопрос...
 
Не понятен ваш вопрос.
Вы разобрались - но вроде как и не разобрались, судя по вопросу.
 
Цитата
Serge123 написал:
Мне известно, что они увеличиваются и имеют размером степень двойки. Меня интересует, может ли внешняя длл сделать цикл по массиву и остановиться, если встретит nil, не выйдет ли она за пределы отведённой для массива памяти? Я с месяц назад писал о чтении массива напрямую без rawgeti, открою секретик: я разобрался в исходниках и структурах и умею из длл читать массив. Работает, как часы. Кстати, зависания Квика и были в результате отладки этой длл. Всвязи с этим и вопрос.
может.
nil - это тип=0.
Если разобрались, то знаете, что в структуре table есть поле
 unsigned int sizearray;   -- размер массива
-------------------
Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
 
Цитата
swerg написал:
Не понятен ваш вопрос.
Вы разобрались - но вроде как и не разобрались, судя по вопросу.
В чём-то, что легче понять, разобрался, а по поводу, можно ли выйти за пределы массива, не разобрался: там программный код надо понять. Поэтому и хотел найти того, кто в этом разобрался, чтобы не тратить зря время, но такого не нашёл. Прямого ответа обычно не дают, а как-то ходят вокруг да около этого вопроса...

Цитата
nikolz написал:
может.
nil - это тип=0.Если разобрались, то знаете, что в структуре table есть поле   unsigned int sizearray;   -- размер массива-------------------Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
Если можно выйти за пределы массива (т.е. в конце массива может не быть элемента типа nil), то это плохие новости. Тогда перебирать массив надо, зная, сколько в нём элементов.
А какой Win API можно узнать, сколько байтов выделено, зная адрес этого блока памяти?
 
Цитата
Serge123 написал:
Прямого ответа обычно не дают, а как-то ходят вокруг да около этого вопроса...
  На форуме много сообщений о том, что не надо писать сложно. Надо писать модульно, стараясь не создавать "зоопарк" программных средств , чтобы потом не было больших проблем с неизбежными изменениями.
  Практически любого робота для QUIK можно написать используя только Qlua (Lua). В сети есть много описаний (достаточно коротких) о том, что собой представляют таблицы Lua и как с ними можно работать (например, на сайте https://forum.quik.ru/ выложена краткая справка по Lua).  Зачем вы мучаетесь с C API Lua? Что вы не можете сделать в Qlua (Lua)?
 
Ошибка в ссылке на справку по Lua. Правильно: https://quikluacsharp.ru/
 
Цитата
TGB написал:
 На форуме много сообщений о том, что не надо писать сложно.
На форуме также есть сообщение от человека - автора поистине удивительной и при этом крохотной  торговой программы (судя по его постам), которая использует только ТТТ и торгует безо всяких там индикаторов, ИИ и нечёткой логики лучше него, и этот человек вдобавок - соавтор сильной шахм. программы и был лично знаком с Д. Бронштейном. И мне запомнилась его фраза, что простые алгоритмы (торг. программы) не приносят прибыли. А есть ещё нар. мудрость "простота хуже воровства". :-)
Цитата
TGB написал:
 Практически любого робота для QUIK можно написать используя только Qlua (Lua).
Но мне хочется не только написать этого робота, а чтобы он ещё и торговал в плюсе...
Цитата
TGB написал:
Зачем вы мучаетесь с C API Lua?
Скорее, знакомлюсь с инструментарием, который можно использовать для сравнительно честного отъёма денег для пополнения своего отн. скромного бюджета.

Я в другой ветке приводил загадочную цитату из старого сообщения о том, что подобная информация ускорила программу автора сообщения в 30 раз, и это было для него критично. Даже в самом Lua можно с пом. замера времени с удивлением узнать, что, к примеру, string.sub(str, i, j) работает раза в два быстрее, чем str:sub(i, j), хотя интуитивно так не кажется (во 2-м случае у функции меньше параметров). Что же тогда сказать о применении dll, в которых, как мне кажется, можно ускорять вычисление индикаторов, создавая для этого потоки?

Я пока немного туманно представляю алгоритм работы хорошей торг. программы, как будто смотрю сквозь волнистое стекло в женскую баню, но думаю, что программа должна мониторить много тикеров и считать для каждого на разных таймфреймах пару надёжных индикаторов (кстати, каких? RSI и скользящие средние, Keltner Channel?), и если они оба говорят, что надо покупать, то покупать. А тут мощь dll, которая оттранслирована с оптимизацией и поддержкой наборов вплоть до AVX2, будет кстати. А сама-то (Q)Lua, написанная в стандарте C99, небось, даже не знает о том, что существует SSE и всякие там out of order execution?

Поэтому хочется сразу сделать выбор в пользу dll, чтобы потом не переписывать код. Что-то я сомневаюсь, что всяким там ММ финансовые инженеры пишут дорогие жульнические программы на QLua...
 
Цитата
Serge123 написал:
Цитата

Цитата
nikolz написал:
может.
nil - это тип=0.Если разобрались, то знаете, что в структуре table есть поле   unsigned int sizearray;   -- размер массива-------------------Кроме того, размер любого блока , выделенного из кучи средствами malloc,realloc , можно прочитать функциями ОС.
Если можно выйти за пределы массива (т.е. в конце массива может не быть элемента типа nil), то это плохие новости. Тогда перебирать массив надо, зная, сколько в нём элементов.
А какой Win API можно узнать, сколько байтов выделено, зная адрес этого блока памяти?
Я уже написал Вам, что у вас есть размер массива
поле Table  sizearray;
Если Вы пишите напрямую  по указателю array, то почему не проверяете sizearray?
В  исходниках есть пример проверки.  
 
Цитата
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 мкс позже меня, но тут хз, как получилось, видимо бывают исключения из правил.
===
 
Здесь не дают править свои сообщения...

зачем так стараться не писать на чистом QLua:

Интересно было бы узнать, что у него за алгоритм покупки акций, при котором имеют значения миллисекунды...
 
Цитата
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,
т е наоборот, чем Вы написали.
 
Цитата
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_share от Тохи написана на Дельфи (видимо что-то типа Rad Studio). Выходит, зря я переходил с неё на гну си. :-)
 
Serge123,
Вы меньше верьте надписям на заборах.
--------------------------
Си является эталоном при тесте языков на скорость исполнения.
Читайте техн.  статьи а не форумы.  
 
nikolz, проверял скорость str:sub и без двоеточия сам с пом. цикла и os.clock(), написал по памяти. Возможно, скорость для разных вариантов зависит от ЦП. И я проверял это в Квике.

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

Про то, что я зря перешёл с Дельфи на си, это, разумеется, шутка. Тут на форуме с ч/ю есть проблемы... Хотя, на Дельфи можно было натаскиванием компонентов на форму быстро сделать навороченную программу. Но мне сейчас не требуется писать программы с GUI.
 
Цитата
Serge123 написал:
nikolz, проверял скорость str:sub и без двоеточия сам с пом. цикла и os.clock(), написал по памяти. Возможно, скорость для разных вариантов зависит от ЦП. И я проверял это в Квике.

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

Про то, что я зря перешёл с Дельфи на си, это, разумеется, шутка. Тут на форуме с ч/ю есть проблемы... Хотя, на Дельфи можно было натаскиванием компонентов на форму быстро сделать навороченную программу. Но мне сейчас не требуется писать программы с GUI.
Фейк по многим причинам.
-----------------
Автор пишет: "  позволяет мне опережать конкурентов на 2+ мс."  
----------------------------
Каким образом он измерил опережение конкурентов?  
--------------------------
Если работает на QUIK , то время отправки заявки составит примерно 0.1 мс.  Поэтому невозможно опережать на 2 ms
--------------------------
Если работает на винде, то квант винды 10 мс и возможны моменты когда его задача будет ждать эти 10 мс
----------------------------
Если  комп не в дата центре, то запаздывание получения данных через интернет уже порядка 10 ms и он никогда не обгонит компы в датацентре.
--------------------------------
Если сидит в датацентре, то там задержка менее 1 мс и обгонять на 2мс - это значит отставать ото всех.
-------------------------
Далее автор пишет:   " Был случай, единичный, когда ближайший конкурент купил акции всего лишь на 780 мкс позже меня,"
-------------------------
Эту информацию можно получить лишь по данным с сервера биржи, а их даже брокер не получает.
==================
Ну и последнее.
------------------------
Важно не то когда Вы купили, а то , c какой прибылью Вы вышли из позиции, т е, когда продали.
-----------------------
Можно раньше всех такого говна накупить...
================
Вывод:  Не читайте до обеда фейки на форумах  
и думайте над тем, что читаете,
прежде, чем перепостить такой бред.  
 
Цитата
nikolz написал:
Каким образом он измерил опережение конкурентов?
Это же видно по alltrades. Свои сделки там можно узнать, а время сделки даётся с точностью до мкс.
Эти вопросы лучше было бы ему задать на той самой странице, где он об этом написал.

И если смотреть на всё это со стороны, то бред одного анонима, который хочет пустить пыль в глаза и при этом не подтверждает своих доходов выпиской по счёту от брокера, ничем не лучше бреда других анонимов, которые тоже не подтверждают своих прибылей. Поэтому сторонним наблюдателям, как я, невозможно кого-то предпочесть.
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Каким образом он измерил опережение конкурентов?
Это же видно по alltrades. Свои сделки там можно узнать, а время сделки даётся с точностью до мкс.
Эти вопросы лучше было бы ему задать на той самой странице, где он об этом написал.

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

Отн. kalikazandr, которого что-то давно не видно, могу сказать, что выглядел он довольно опытным роботостроителем, не хуже других: насколько я помню, году 20-21-м присутствующий здесь опытный тов. swerg (Да благословит его аллах и приветствует) на форуме quik2dde.ru опубликовал пример своего спредового робота (видимо, тов. swerg  (Мир ему и благословение аллаха) в то время ещё только учился), а этот kalikazandr раскритиковал этого робота и сказал, что это пример, как не надо его писать). При этом тов. swerg (Да вознаградит его аллах добром) ничуть не обиделся, зашла речь о том, как надо писать, и советы этого kalikazandr по написанию роботов и возможные подводные камни я ещё в прошлом году даже скопировал в свой текстовый файлик, который, надеюсь, и сейчас лежит на твердотельном накопителе.
Цитата
nikolz написал:
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.
Так этот алгоритм сидит в винде? Хм, мне здесь кто-то уже отвечал, что это алгоритм по фамилии одного мужика, который сидит на роутерах и по вечерам склеивает пакеты для экономии траффика. А если он в винде, то можно его попробовать как-то отменить?
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Тогда вообще не понятно заявление, что он купил раньше кого-то.
Могу предположить, что по обезличенным сделкам можно было увидеть, что он успел купить по одной цене, а через очень короткое время пришла чья-то крупная покупка (видимо, по рынку) уже по др. цене.

Отн. kalikazandr, которого что-то давно не видно, могу сказать, что выглядел он довольно опытным роботостроителем, не хуже других: насколько я помню, году 20-21-м присутствующий здесь опытный тов. swerg (Да благословит его аллах и приветствует) на форуме quik2dde.ru опубликовал пример своего спредового робота (видимо, тов. swerg  (Мир ему и благословение аллаха) в то время ещё только учился), а этот kalikazandr раскритиковал этого робота и сказал, что это пример, как не надо его писать). При этом тов. swerg (Да вознаградит его аллах добром) ничуть не обиделся, зашла речь о том, как надо писать, и советы этого kalikazandr по написанию роботов и возможные подводные камни я ещё в прошлом году даже скопировал в свой текстовый файлик, который, надеюсь, и сейчас лежит на твердотельном накопителе.
Цитата
nikolz написал:
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.
Так этот алгоритм сидит в винде? Хм, мне здесь кто-то уже отвечал, что это алгоритм по фамилии одного мужика, который сидит на роутерах и по вечерам склеивает пакеты для экономии траффика. А если он в винде, то можно его попробовать как-то отменить?
относительно спредового робота.
На форуме выкладывал скрипт такого советника на луа.
Добавьте туда блок торговли по его сигналам и будет вам робот.
 
пардон, ошибся.
Выкладывал арбитражного советника, а не спредового.
Но спредовый еще проще.
 
1.
Цитата
nikolz написал:
Мне даже показалось, что вы имеете отношение к этому сайту.
 Действительно на этом сайте я написал несколько заметок. И когда я начал в 2019 г. разбираться с QUIK, то обнаружил, что для меня это самый полезный сайт.
 Но я в своем сообщении сослался не на ту заметку, про которую вы пишите, а на "Краткую справку по Lua", в которой, кстати есть и описание C API Lua с примерами.
 На этом же сайте есть как минимум один функционально законченный пример использования C API Lua от Дмитрия.

2
Цитата
Serge123 написал:
А тут мощь dll, которая оттранслирована с оптимизацией и поддержкой наборов вплоть до AVX2, будет кстати.
 И вы знаете как использовать эту мощь для получения дохода на рынке с помощью QUIK, обеспечивающего как минимум секундную реакцию на события рынка?  Возможно я ошибаюсь, но мне представляется, что вы пытаетесь "запрягать лошадь с хвоста".
 Вообще то, существует известная и проверенная временем методология разработки программ. Суть этой методологии в том, чтобы быстро получить работающий, модульный прототип и в конкретном случае это проще сделать используя Lua (а при необходимости готовые пакеты dll). А дальше выяснять проблемы (в том числе и с производительностью) и вносить изменения. С учетом того что Lua тесно интегрирован с C/C++  проблем с переходом из Lua в C нет, но это может и не потребоваться.
 
В моем предыдущем сообщении фразу "nikolz написал:" читать: "Serge123  написал:"
 
Цитата
TGB написал:
И вы знаете как использовать эту мощь для получения дохода на рынке с помощью QUIK, обеспечивающего как минимум секундную реакцию на события рынка?
Знаю я это или нет, это уже др. вопрос... Мне достаточно знать, что, если надо будет считать индикаторы по десяткам тикеров, то С будет это делать раз в 20 быстрее Луа, поэтому, при прочих равных условиях, у меня будет преимущество по сравнению с такими, как я, которые сидят поодаль от москвы.

На эту тему есть анекдот о чукче и русском геологе:

Чукча и геолог собирают камушки на берегу океана. Вдруг видят направляющегося к ним голодного белого медведя. Ружья нет.
Чукча хватает лыжи и начинает их надевать. Геолог:
- Бесполезно. Все равно ты не сможешь бежать быстрее медведя.
- А мне и не надо бежать быстрее медведя. Мне достаточно бежать быстрее тебя.
Страницы: 1
Читают тему
Наверх