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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 74 След.
Удаление не используемых счетов и перенос настроек, Удаление не используемых счетов и перенос настроек
 
пардон, опечатка
"Кухарка должна не управлять Государством, а сначала УЧИТЬСЯ управлять им"  В.И.Ленин
Удаление не используемых счетов и перенос настроек, Удаление не используемых счетов и перенос настроек
 
Цитата
major написал:
Два вопроса.
Подскажите как удалить из системы не используемы счета.
В настройках есть выбранные и доступные, но удалить от туда не рабочие не получается

И второй вопрос, есть ли возможность из разных систем переносить не все настройки а только отдельных вкладок или таблиц?
Сначала пример,
У меня краш- тесте, результаты я приводил на форуме, в таблице заявок в конечном счете было 250 тысяч строк по 200 инструментам.
При этом для каждого инструмента там было не более одной активной (но можно сделать и несколько активных, если надо)
При этом скорость обработки не зависит от числа не активных заявок.
Суть решения проблемы сводится алгоритмическому исключению из обработки не активных заявок.
Могу посоветовать лишь изучать технологию разработки алгоритмов.
-----------------------------------------
"Кухарка должна не управлять Государством, а сначала УЧИТСЯ управлять им"  В.И.Ленин
Ускоряем скрипт и выкидываем sleep
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
могу лишь рассказать как я решил эту проблему.
К сожалению, в этом ответе не сказано о решении этой проблемы...
А именно: как в main (которая сидит в dll) обработать таблицу alltrade, если при завершении работы OnAllTrade (которая тоже сидит в dll) стек её вызова (в котором сидит ссылка на табл. alltrade) должен очиститься?
Я вижу такие костыли:
- запретить сборку мусора (до 18:45).
- dll из OnAllTrade как-то связывается с Lua и Lua дублирует ссылки на alltrade в массив локальных переменных области видимости этого файла lua. Потом dll как-то даёт знать, что каким-то из этих переменных можно присвоить nil. Как это сделать, пока не знаю. М.б. это делается через (light)userdata, но я с этим не связывался.

Как из Си заставить Lua продублировать ссылку на таблицу, если эта ссылка сидит в стеке? Как из Си вызвать скрипт Lua, чтобы он получил этот стек вызова OnAllTrade? Иначе придётся коллбэки делать на Lua и только main на Си, а этого не хочется из-за какой-то потери скорости.
Попробую объяснить.
------------------
Не важно, что и где сидит.   dll - это код программы.  Для кода не нужна синхронизация потоков.
Синхронизация потоков нужна при обращении к данным.
----------------
Попробую снова объяснить как Ваша проблема решается на моей программе.
ОЧЕРЕДЬ и EVENT - эти элементы и решают проблему.
------------------
Поясняю на примере:
1) Терминал вызывает OnAllTrade и передает в стеке указатель на таблицу, которая является новой строкой таблицы alltrade.
--------------------
2) В OnAllTrade указатель на полученную таблицу новой строки записывается в очередь  
Cохраняется в другой таблице КАРЛ ! !
-----------------------
3) OnAlltrade заканчивает работу.
Если очередь при этом содержит лишь один элемент, то устанавливается флаг EVENT.
----------------------------------
4)  Если функция main была в состоянии WAIT, то она начинает обрабатывать элемент очереди
И о чудо, Карл!!!  там есть указатель на таблицу  новой строки alltrade,
при этом  onAllTrade давно уже завершилась или может быть даже снова вызвана с новой таблицей новой строки.  
Ты понимаешь, Карл? Снова хоть тысячу раз!!!
--------------------------
Если функция main обрабатывала очередь, то она и продолжает это делать,
а новые вызовы onAllTrade подкидывают новые таблицы  новых строк alltrade  в очередь.
--------------------------
И это все.
Нет никаких проблем в работе моей программы,
Осталась лишь тебе понять то, что я написал Карл!!!
 
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
«Дурак думает, что он мудр, но мудрец знает, что он дурак»  
- Шекспир, пьеса «Как вам это понравится».  
Ускоряем скрипт и выкидываем sleep
 
Цитата
Serge123 написал:
Тут возникла новая проблема: если обработчик OnAllTrade на Си уже не будет обрабатывать этот вызов, а будет что-то записывать в очередь и делать выход, то как гарантировать, что память под таблицу alltrade не будет освобождена до обработки этой таблицы в функции main, которая тоже находится в dll? Совсем отключить сборку мусора, или есть что-то ещё?
могу лишь рассказать как я решил эту проблему.
У меня колбеки обрабатываются не только в main, но и в других, новых потоках.
Так как все колбеки вызываются последовательно, то нет надобности делать много Event
У меня один event  (см мои скрипты на форуме)  и очередь.
Т е вызвал терминал колбек. В колбеке в очередь записывается номер колбека и входные параметры.
Если очередь пустая, то устанавливается флаг события.
В функции main  , если очередь пустая wait ждет событие, иначе проводится обработка очереди.
Если колбеки не требуют сложных вычислений, то они обрабатываются внутри main.
Для сложной обработки, например , в портфеле множество бумаг, то для принятия решения для каждой бумаги вызывается новый поток из пула потоков ОC.
В этом потоке я запускаю LuasJIT (могу запустить python, terra,julia и др)  вместо lua, что обеспечивает ускорение вычислений на порядок, по сравнению с вычислениями в main.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
nikolz,  Для того чтоб читать, нужно научиться читать.
А нести всякую "ахинею", ну Вам то уж не к лицу.
рекомендую почитать, тем кто уже научился читать:

https://habr.com/ru/companies/ruvds/articles/567880/
Ускоряем скрипт и выкидываем sleep
 
Цитата
Serge123 написал:
Насколько я понял, надо использовать параметр lpName в CreateEventA: коллбэки создают события со своими именами. Осталось уточнить: что будет, если оба коллбэка успеют создать события, а main ещё не запустилась для их обработки. Не будет ли потеряно второе событие?
createEvent создает не событие, а объект "событие)
упрощенно это значит, что OS выделяет для флага события ячейку и вернет его имя
Имя флага всегда уникально.
-----------------
Далее мы либо устанавливаем Set  флаг или сбрасываем  Reset.
Wait.. - это как бы аналог условного цикла проверки состояния флага c заданием времени ожидания.
Проверку делает OC а поток бездействует пока Wait
------------
Если событий много то используем wait дя нескольких событий либо более сложные функции ожидания (семафоры и т д)
=================
Если есть желание изучить механизмы синхронизации потоков рекомендую книгу:

 
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
'Математически логарифмирование заменяет умножение сложением"
--------
тогда исходя из этого правила
получается, что  2*2=2*log(2)
Круто!
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Не хватает примеров  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
nikolz,  Ни чего нового. Фрактальность, концепция, используется для описания сложных объектов (процессов), которые имеют повторяющуюся структуру на разных масштабах.
В контексте анализа временных рядов, проблема сравнения данных разных масштабов имеет значение для корректного анализа и принятия решений.
Классическая задача демонстрирующая данную проблематику, измерение длины береговой линии на разных масштабах (можно на гугл картах по экспериментировать).

TGB,  Ну очень остроумно, чтобы Вас хотя бы начали понимать окружающие, научитесь мысли формировать понятно, а предложений я жду от Вас, или страна напрасно Вас учила?.  
Понятно,
но  повторяемость картинки на рынках в различных масштабах есть у Эллиотта (почти 100 лет тому назад)..
а термин «фрактал» введён Бенуа Мандельбротом в 1975 году т е примерно через пол века,
Причем этот термин к рынкам никто не применяет.
Полагаю, что Вы зря притянули Мандельброта и понятие фрактальность.
Так как похожесть рынков это не тоже самое что подобие самому себе в фрактальности.
---------------
Но если Вам нравится это слово  применяйте.
Важно то, как Вы его реально используете в форме алгоритмов
и чем ваши алгоритмы отличаются от описанных в популярных книжках?
Можете пояснить?  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
фрактальность
дайте определение, что вы под этим понимаете?
================
"необходимо найти их отношения и сравнить изменения для принятия решений"
напоминает классический арбитраж,  
-------------------
можете пояснить Вы о чем говорите?
Индикаторы, документация
 
Цитата
Georgii написал:
Всем привет.
Посмотрел код индикаторов и конечно много вопросов возникает.
Пример MACD:
Код
   function   Init ()
   func  =  MACD()
    return   # Settings.line
 end   
Вот в этой реализации вообще не понятно что такое func? То есть при инифиализации индикатора эта переменная заполняется функцией. Но что это за переменная и как она используется? В документации нет пояснений. Может где-то есть более подробная информация или кто-то поясняет?
https://eligovision.ru/media/upload/lua.pdf
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Цитата
Georgii написал:
Всем привет.
В продолжении вопроса ветки еще раз хочу уточнить: выполняю операцию создания источника данных, пытаюсь получить значение функции size и мне выдает ошибку
Текст модуля:
Код
   function   main ()
    if   isConnected ()  then 
      DataSource  =   CreateDataSource  ( "TQBR" ,  "FLOT" , INTERVAL_H1)
      dssize  =  DataSource:size()
       message (tostring(dssize))
    end       
 end 
  
Текст ошибки: " attempt to call a nil value (method 'size') "

Добавлял ожидание в 10 секунду перед обращением к размеру, результат тот же.
CreateDataSource  надо делать один раз, а у вас на каждый чих.
Вы сервер просто за...ли .
Напишите с проверкой и ожиданием.
На форуме когда выкладывал.
Сложный индикатор с сохранением его данных для каждой свечи
 
Цитата
VelikiyTrader написал:
Цитата
nikolz написал:
может не писать индикатор куда-то, а читать индикатор с графика , когда надо. либо записать формулу и вычислять, когда надо.
Для этого нужно указывать id линии на графике?
открываете редактировать и пишите Идентификатор
Сложный индикатор с сохранением его данных для каждой свечи
 
Цитата
VelikiyTrader написал:
Добрый день.

Хочу написать индикатор, для которого нужно сохранять данные предыдущих значений индикатора в контейнер.
Как при инициализации индикатора пройтись по всем предыдущим свечкам  и записать значения индикатора для каждой из них в контейнер?
может не писать индикатор куда-то, а читать индикатор с графика , когда надо.
либо записать формулу и вычислять, когда надо.
Зависание приёма данных в QUIK
 
Цитата
Дмитрий написал:
Цитата
nikolz написал:
т е два квака запущены на одном компе?Два брокера?
Да. Один брокер ВТБ. И на одном сервере даже. Просто 2 UID. Версии одинаковые.
предположу, что проблема на стороне сервера.
Колбек на остановку Скрипта, Колбек на остановку Скрипта
 
OnStop

Функция вызывается терминалом QUIK при остановке скрипта из диалога  управления и при закрытии терминала QUIK.  

Формат вызова:  

[NUMBER time_out] OnStop(NUMBER flag)

Функция возвращает количество миллисекунд, которое дается скрипту на  завершение работы. Если функция не возвращает число, то таймаут завершения  работы скрипта остается равным 5 секундам.  

По истечении интервала времени, данного скрипту на завершение работы,
функция main() завершается принудительно. При этом возможна
потеря системных ресурсов.

При остановке или удалении работающего скрипта Lua из диалога управления  «Доступные скрипты» параметр вызова flag принимает значение «1». При закрытии  терминала QUIK – значение «2».  

Пример:

function OnStop(flag)
stopped = true
return 3000 -- задается таймаут в 3 секунды
end
function OnStop(flag)
stopped = true
return '3000' -- возвращаемое значение - не число, таймаут остается равным 5 секундам
end

Зависание приёма данных в QUIK
 
версии квиков одинаковые?
Зависание приёма данных в QUIK
 
Цитата
Дмитрий написал:
Цитата
nikolz написал:
Правильно я понимаю, что у Вас два компа в одной сети
не 2 компа, а 2 квика
т е два квака запущены на одном компе?
Два брокера?
Зависание приёма данных в QUIK
 
Цитата
Дмитрий написал:
Цитата
Andrey Golik написал:
Дмитрий , как уже подметили ранее: рекомендуем обновить рабочее место QUIK. Если обновиться нет возможности, то просьба увеличить интервал обновления данных.
Поставил 3 сек. Но опять произошло зависание приёма данных на 60 секунд. При этом в файл curr_data.log ничего не записалось. Так что дело не в нём. Так же дело и не в интервале обновления, потому что в другом терминале стоит 1 сек и существенно больший объём данных принимается и он не зависал. Может это брокер блокирует?
Правильно я понимаю, что у Вас два компа в одной сети. На одном все ок, на другом виснет?
Если так, то я бы сравнил в диспетчере задач  параметры CPU ,памяти и сети.  
Глобальные переменные индикатора, не работает код индикатора на lua при попытке обратится к переменной объявленной в функции Init()
 
Цитата
zveno013 написал:
К сожалению я так и не избавился от многократного расчёта индикатора,
Это глюк КВИКА. Существует давно и избавиться от него сложно.
Можно сделать костыль, но он не удобный. Делал но потом отказался.
---------------------
Вы очевидно не правильно понимаете работу функции Init
Она вызывается один раз при загрузки скрипта.
------------------------
Надо делать как у меня написано.
т е все глобальные переменные надо устанавливать внутри onCalculate
в условии равенства индекса 1.
Глобальные переменные индикатора, не работает код индикатора на lua при попытке обратится к переменной объявленной в функции Init()
 
Цитата
zveno013 написал:

Добавлю в вопросу глобальных переменных еще один:
Возможен ли доступ к глобальной переменной индикатора из скрипта lua  и какими методами? (подразумевается обращение по индификатору)
Предлагаю уточнить терминологию.
----------------
глобальные переменные есть в языке Луа, но не в индикаторе.
В индикаторе есть настраиваемые параметры, которые задаются в массиве settings
и которые можно изменять на графике через функцию окна редактирования.
------------------
Значения самого индикатора можно читать в других индикаторах с графика, если присвоить индикатору метку (см. док на библиотеку QLua)
================  
Поясните свой вопрос подробнее, можно с примером.
Глобальные переменные индикатора, не работает код индикатора на lua при попытке обратится к переменной объявленной в функции Init()
 
попробуйте так ( переписал Ваш скрипт, но не проверял.)
Код
name="KEZ_Casper"
Settings={Name =name,period = 28,period2 = 28}


function OnCalculate(i)
   if i==1 then
     VuEma,Vu,Pu,Pd,F = 1,0,0,0,0
      message("VuEma = " .. VuEma)
   end
   local d=C(i)-O(i);
   Pu=H(i)-L(i); pd=Pu-d;
   if 0>d then  d=Pu; Pu=Pd;  Pd=d end     -- отрицательная свеча
    Vd=(Pd*V(i))/(Pu + Pd)
    Vu= V(i)-Vd
    F=2/(Settings.period + 1)
    VuEma = Vu * F + VuEma * (1 - F)
    return Vu, -Vd, VuEma
end

function Init()
   local t={}   Settings.line=t;
    t[#t+1]={ Name = "Casper", Color = RGB(255, 0, 0), Type = TYPE_LINE, Width = 1}
    t[#t+1]={ Name = "A",     Color = RGB(0, 100, 100), Type = TYPE_LINE, Width = 1}
    t[#t+1]={ Name = "B",  Color = RGB(100, 100, 0),  Type = TYPE_LINE,  Width = 1}
   return #t
end

 
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
 
Цитата
Serge123 написал:
Цитата
swerg написал:
А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика!
По-моему, это нормально, у меня вчера подряд много раз так было в dll на C.
И только, когда я попытался записать в неоткрытый файл, Квик не устоял. ::
dll проще и быстрее отлаживать не в КВИКЕ, а в SCITE
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
 
Цитата
Кот написал:
Обращаюсь к форуму, потому что уже сам не понимаю где ловить ошибку.

История :

Quik 8.13
Боевой робот, достаточно масштабный, но стабильно работающий более года.
Внешняя библиотека DLL на Cpp.

После совершенно незначительных обновлений библиотеки (тип переменных) и управляющего библиотекой скрипта Lua (тип переменных)  скрипт регулярно падает с двумя видами ошибок -
1. Access Violation at adress XXX
2. Unknown Exception at adress XXX

При этом сам Quik остается рабочим, просто завершает скрипт.

Помогите сузить круг поиска, правильно ли я понимаю, что проблема исключительно в DLL или, возможно, во внутренних функциях, например GetParamEx() и подобных?

Спасибо.
1) Вы случаем при небольших изменениях не сменили версию Lua c 5.3   на 5.4?
-----------------------
2) Проверьте свои библиотеки на предмет границ массивов в циклах .
Ошибка Access Violation at adress  намекает на то, что где-то программа пытается выйти за границы массива.
---------------------
3) Unknown Exception at adress  -система сообщает, что она не может обработать данную ошибку,
так как для нее нет обработчика.
===================  
Поставьте вывод в лог файл, чтобы локализовать функцию, в которой возникает ошибка.
Формат вывода double без правых нулей
 
до кучи:
https://github.com/miloyip/dtoa-benchmark/tree/master
SciTE
 
Цитата
VPM написал:
nikolz,  Спасибо, только не понятно где переключаете, и где и как подключается путь к исполняемому файлу луа разных версий?
версия  луа определяется моими dll.  
У меня сейчас dll собраны под 5.3, то работаю с 5.3
Поэтому для  lua версии переключаю редко и руками, переставляя #.
-----------------------
Для других языков, а также Luajit переключаю расширением.
Можно и версии луа переключать расширением.
Как узнать, какому инструменту принадлежит метка на графике?
 
Как вариант возможно, что КВИК записывает теги меткам по имени инструмента.
Когда отключаем перемещение, то метка пустая
Quik ОЧЕНЬ долго загружается на виртуальной машине.
 
Цитата
Кирилл написал:
Точно - нет, но раза в три. При старте с сетевого диска и лог-файлом тормоза такие, что неоднократно видно строку "сервер принудительно разорвал соединение". Похоже, даже брокер терпеть не может тормоза этой программы. Причем, по операциям диска, не такие уж там и объемы.  
предположу, что на виртуальной иначе реализована работа с экраном. Вот графический драйвер и тормозит по сравнению с ноутом.
Попробуйте перед выходом из квика сворачивать графики , а после загрузки - разворачивать.
Как узнать, какому инструменту принадлежит метка на графике?
 
Провел тест.
Как и говорил ранее, КВИК никак не связывает метку с инструментом.
Но метка связывается с ценой, временем и номером отсчета.
---------------------
Как говорят фокусники - следите за руками:
---------------------------
График инструмента ГАЗПРОМ c меткой

Меняем инструмент на SOLF и выставляем новую метку. Старой метки не видно.

теперь возвращаем первый инструмент и видим старую метку.
и редактируем метку, отключаем ее перемещение со шкалой времени и со шкалой цены

Теперь устанавливаем второй инструмент обратно. И  видим обе метки



 
Как узнать, какому инструменту принадлежит метка на графике?
 
метки выводите скриптом?
Как узнать, какому инструменту принадлежит метка на графике?
 
вариантов нет. попробую так сделать  
Как узнать, какому инструменту принадлежит метка на графике?
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:
Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Выше картинку привёл. Там два инструмента в одном ценовом диапазоне, а метки скрыты.
тогда сравните дату меток
Как узнать, какому инструменту принадлежит метка на графике?
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:

непонятно,
у Вас на графике есть какие-то индикаторы и на них метки.
Кидаете на этот график индикатор.
В нем в функции init  удаляете все метки
и далее в onCalc рисуются новые.
что не так?
Индикаторов нет. Есть всего один график.

Последовательность моих действий:
1. Открыл на графике SBER.
2. Поставил метки для SBER
3. Заменил SBER на ROSN на этом же графике. Метки SBER-а теперь не отображаются.
4. Поставил метки для ROSN
5. Переключился снова на SBER. Отобразились метки SBER-а, а метки ROSN теперь скрыты.

Как терминал понимает, какие метки надо отображать, а какие скрывать? Можно как-то программно это распознать, без записи в HINTы или массивы?
Полагаю, что ответ -никак.
На разных графиках инструментов у Вас разные значения цены.
Метки другого инструмента вне поля картинки.
Попробуйте сжать масштаб по Y так чтобы он покрывал диапазон цен двух инструментов.
Как узнать, какому инструменту принадлежит метка на графике?
 
Цитата
Андрей_тлт написал:
Цитата
Игорь М написал:
 
Цитата
Нет, метка привязывается к графику (идентификатор графика привязан к графику, а не к инструменту). Варианты, типа как   nikolz   предложил, я не писал, так как там сложно: если руками метку удалили, то все идентификаторы при перезагрузке терминала сдвигаются). Перебором и проверкой всех существующих меток проще.
Это я понимаю, что метки в одной куче лежат. Но если я метку вручную поставил через меню, и не указал инструмент в HINT, то мне уже никак не понять, на каком инструменте я ее поставил? Сам торговый терминал распознает как-то.
непонятно,
у Вас на графике есть какие-то индикаторы и на них метки.
Кидаете на этот график индикатор.
В нем в функции init  удаляете все метки
и далее в onCalc рисуются новые.
что не так?
Как узнать, какому инструменту принадлежит метка на графике?
 
Если хотите удалять избирательно при новом старте, то тогда пишите в файл.
Как узнать, какому инструменту принадлежит метка на графике?
 
Цитата
Андрей_тлт написал:
Цитата
nikolz написал:
еще вариант.
Записывайте номера меток каждого инструмента sec в отдельный массив      
А после завершения скрипта стек переменных не очищается?
Покажите скрипт и уточните, когда Вы хотите удалять метки.
Как узнать, какому инструменту принадлежит метка на графике?
 
еще вариант.
Записывайте номера меток каждого инструмента sec в отдельный массив:
например так:
Код
local t1=t[sec]  if t1==nil then t1={};t[sec]=t1; end
t1[#t1+1]=AddLabel(tag, label_params);

Удаляете в цикле все метки из соответствующего массива
например так:
Код
local t1=t[sec]; for j=1,#t1 do  DelLabel(tag,t1[j] ) end
SciTE
 
Цитата
VPM написал:
nikolz,  Я не совсем корректно выразился  
Цитата
VPM написал:
nikolz ,  А код scite полностью покажите.  
Имеется в виду строки, где вызываются разные версии Lua, в моем варианте это
command.go.*.lua;*.macro=dofile $(FilePath)
command.go.subsystem.*.lua;*.macro=3
файл    lua.properties
фрагмент из него
запишите в конец файла:
Код
# Lua 5.4
command.go.*.lua=D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "$(FileNameExt)"
command.compile.*.lua=D:/lua54/luac54.exe -o "$(FileName).luac" "$(FileNameExt)"
# Lua 5.3
#command.go.*.lua=D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "$(FileNameExt)"
#command.compile.*.lua=D:/lua53/luac53.exe -o "$(FileName).luac" "$(FileNameExt)"

SciTE
 
Цитата
VPM написал:
nikolz,  А код scite полностью покажите.  
так я его не писал. Есть на официальном сайте.
Работаю в основном на этой :
SciTE
Version 1.75
   Apr 25 2009 11:30:59
by Neil Hodgson.
December 1998-November 2007.
http://www.scintilla.org
Lua scripting language by TeCGraf, PUC-Rio
   http://www.lua.org
--------------------
но есть эта:
SciTE
Version 3.7.5
   Jan 16 2023 18:01:44
by Neil Hodgson.
December 1998-May 2017.
http://www.scintilla.org
Lua scripting language by TeCGraf, PUC-Rio
   http://www.lua.org
SciTE
 
Цитата
VPM написал:
print(_VERSION)
это "тест24.lua"
Код
print(_VERSION)
исполнение 5.4:
Код
>D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "tes24.lua" 
Lua 5.4
>Exit code: 0
исполнение 5.3
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "tes24.lua" 
Lua 5.3
>Exit code: 0
исполнение Luajit( это 5.1)
Код
>D:/LuaJIT210/luajit.exe -e "io.stdout:setvbuf 'no'" "tes24.lua" 
Lua 5.1
>Exit code: 0
SciTE
 
Код
>D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "test2020.lua" 
>Exit code: 0
>D:/lua54/luac54.exe -o "test2020.luac" "test2020.lua"
>Exit code: 0

>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "test2020.lua" 
>Exit code: 0
>D:/lua53/luac53.exe -o "test2020.luac" "test2020.lua"
>Exit code: 0
SciTE
 
Код
>D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "test2020.lua" 
>Exit code: 0
>D:/lua54/luac54.exe -o "test2020.luac" "test2020.lua"
>Exit code: 0
SciTE
 
[QUOTE]VPM написал:
В SciTE, ну по крайней мере до версии указанной выше, в качестве внутреннего интерпретатора, используется Lua 5.1, и ее нельзя просто заменить на версию Lua 5.4. В статье выше был предложен вариант использования внешнего интерпретатора  в моем случае это Lua 5.4, для этого был скачен
Код
[/CODE] [URL=/user/62/]nikolz[/URL], Тут видимо дело в версиях, в Lua 5.3 есть поддержка Lua 5.1, а Lua 5.4 уже нет такой поддержки, да и изменения есть серьезные, которые не поддерживаются в ранних версиях.
[URL=/user/3132/]Nikolay[/URL],  Так ведь просто удобно, нажал кнопочку и привет. Потом просто привычка, быстрая проверка кода, не отходя от "кассы". [QUOTE]
[/QUOTE]
[/QUOTE]
вот запускаю скрипт в lua5.4  Он работает и в lua 5.3 и и lua5.1[CODE]>D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "test2020.lua" 
>Exit code: 0
Код
>D:/lua54/luac54.exe -o "test2020.luac" "test2020.lua"
>Exit code: 0
можете выложить Ваш скрипт я его проверю в 5.3 и 5.4
SciTE
 
Цитата
VPM написал:
Скорее всего на прямую и нельзя, один и тот же код, выводит:

использую лишь компилировать и выполнить(Lua 5.3. )
это исполнение теста(получение данных с биржи):
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "Moex.lua" 
engines

id;name;title
1;stock;Фондовый рынок и рынок депозитов
2;state;Рынок ГЦБ (размещение)
3;currency;Валютный рынок
4;futures;Срочный рынок
5;commodity;Товарный рынок
6;interventions;Товарные интервенции
7;offboard;ОТС-система
9;agro;Агро
1012;otc;ОТС с ЦК
1282;quotes;Квоты

markets

id;trade_engine_id;trade_engine_name;trade_engine_title;market_name;market_title;market_id;marketplace;is_otc;has_history_files;has_history_trades_files;has_trades;has_history;has_candles;has_orderbook;has_tradingsession;has_extra_yields;has_delay
5;1;stock;Фондовый рынок и рынок депозитов;index;Индексы фондового рынка;5;INDICES;0;1;0;1;1;1;0;1;0;0
1;1;stock;Фондовый рынок и рынок депозитов;shares;Рынок акций;1;MXSE;0;1;1;1;1;1;1;1;0;1
2;1;stock;Фондовый рынок и рынок депозитов;bonds;Рынок облигаций;2;MXSE;0;1;1;1;1;1;1;1;1;1

это компиляция:
Код
>D:/lua53/luac53.exe -o "Moex.luac" "Moex.lua"
>Exit code: 0

Не понял, что у Вас не получается.
-----------------
Я так же запускаю и компилирую скрипты на LuaJit,  terra, julia, ravi
SciTE
 
Код
# Lua 5.4
command.go.*.lua=D:/lua54/lua54.exe -e "io.stdout:setvbuf 'no'" "$(FileNameExt)"
command.compile.*.lua=D:/lua54/luac54.exe -o "$(FileName).luac" "$(FileNameExt)"
Ускоряем скрипт и выкидываем sleep
 
Добрый день, Всем
С момента появления VMLua в КВИКЕ неоднократно рассказывал о том, что применение event вместо sleep
не только экономит ресурсы процессора, но и позволяет не пропускать события в колбеках и максимально бысто на них реагировать.
говорил об этом например здесь:
https://forum.quik.ru/forum17/topic8426/
---------------------
К сожалению, кроме бессмысленного хамства некоторых посетителей форума, ничего конкретного никто не написал.
---------------
Но вот наконец-то появился вменяемый чел paluke .
и после моей попытки в очередной раз объяснить преимущество event
https://forum.quik.ru/messages/forum10/message75435/topic8600/#message75435






он все же решил проверить это и убедился, что это так действительно:  

Код
Просто проверка концепции:
Кодw32 = require("w32")

run = true
evt = false

function OnInit()
  evt = w32.CreateEvent(nil, 0, 0, nil)
end

function OnStop()
 run = false
 w32.SetEvent(evt)
end

function main()
  while run do
     w32.WaitForSingleObject(evt, 1000000)
  end
  w32.CloseHandle(evt)
end

В колбеках вызываете SetEvent - main сразу просыпается.
С чем Всех и поздравляю.
Таблица CreateDataSorce в Lua стеке и изменение положение в стеке, Таблица CreateDataSorce в Lua стеке и изменение положение в стеке
 
Цитата
Ramy написал:
Или CreateDataSource обращается к таблице помещенной в Луа-стек по указателю и изменение положения в Луа-стеке не меняет адрес таблицы ?
CreateDataSource  создает эту таблицу и при выходе помещает ее на вершину стека.
Ей пофиг, что Вы удаляли или нет из стека из стека.
Что будет, если внешняя dll изменит содержимое строки Lua?
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
как вы предполагаете изменить значение локальной переменной.  Она не передается как таблицы по указателю, поэтому Вы не получите к ней доступ в функции, а получите ее копию.
Странное рассуждение... Адрес структуры для локальной строки передаётся в виде указателя в параметре при вызове из Lua скрипта моей dll.

А вдруг кто-то знает, но не хочет сказать... Вот TGB, по-моему, глубоко копает.
Вы на ходу придумываете?
Вы хотя бы  смотрели что написали. Где в вашем примере структура?
Код
local str = 'abc'
---------------------------
"Один дурак может задать столько вопросов,что сто мудрецов не смогут ответить"
Ошибки использование функции 'unpack')
 
Цитата
Роман написал:
Подскажите, почему при использовании в скриптах функции  'unpack' может возникать такая ошибка "LuaIndicators\SO.lua:61: attempt to call a nil value (global 'unpack')"?  Хотя индикатор от разработчиков и без скрипта в терминале он таких ошибок не вызывает.
LuaIndicators\SO.lua:61: attempt to call a nil value (global 'unpack')"?   -- попытка вызвать nil значение. в строке 61
----------------
Это старая версия индикаторов для Lua 5.1
в которой unpack был глобальной функцией
--------------
сейчас в квике используется версия 5.3 .и 5 .4
в них функция unpack перенесена в библиотеку  table.
-----------------
Надо в скрипте вместо unpack  записать table.unpack
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 74 След.
Наверх