Юрий С (Все сообщения пользователя)

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

Страницы: 1
запуск из работающего скрипта другого скрипта или скриптов
 
Цитата
Артем написал:
QUIK в этом плане ничем не отличается от обычного программирования - изо всех модулей и файлов допустимо иметь ровно один бесконечный цикл, тот который в main(). Все остальные модули должны работать по вызову и должны возвращать управление обратно в main. В Lua можно имитировать многопоточность с помощью сопрограмм ("coroutine").
Антон, НО в квике же это реализовано!!! Мы же вручную можем запустить несколько файлов(скриптов), и они могут работать параллельно!! Я только это имею ввиду, мне не надо распараллеливать задачи по процессорам, только лишь обратиться к ответственному за запуск модулю квика из своего скрипта передав ему путь и имя файла со скриптом, который я хотел бы запустить, точно так же как я это делаю через таблицу доступных скриптов. И запускай хоть с main,хоть с бесконечным циклом. Вот в чем задача.
запуск из работающего скрипта другого скрипта или скриптов
 
Владимир, ваш диалог в другой ветке:
Вы пишите:
"Денис, Ну, флаг в руки. а не поделитесь, ЗАЧЕМ нужны 20 скриптов? Просто для общего развития. "
Вам отвечают :
"Владимир, есть автозапуск, есть роботы под разные фьючерсы, есть скрипты для дополнительной аналитики и сигнализации особых случаев, есть вспомогательные скрипты для обфускаций и оптимизаций. Lua удобный инструмент, только удобного интерфейса не хватает.
PS Всё пихать в один скрипт считаю ошибочным подходом. Но, если этого ВСЕГО мало, то можно ))
PPS Просьба ветку не захламлять отвлеченными вопросами и советами. Давайте дождемся ответа техподдержки. Спасибо."
Аналогичная просьба к Вам.  Если есть что сказать по существу - скажите. А что у вас всего один скрипт, я так понял, уже весь форум знает.  
запуск из работающего скрипта другого скрипта или скриптов
 
Цитата
s_mike@rambler.ru написал:
Делайте все ваши скрипты всегда запущенными, которые крутят холостой цикл.
Но для этого их все изначально надо запустить вручную !!, а некоторые из них в ходе выполнения основного скрипта могут и вовсе не понадобиться ! При этом нет никакой динамичности.
Смысл тот, что в ходе основного скрипта, который получает те или иные данные с запущенных им же  скриптов ( в зависимости от поставленной задачи) он мог бы стартовать какие то дополнительные скрипты .Можно было бы динамично изменять алгоритм, да много еще чего. Т.е. в ходе выполения основного алгоритма, запускаются те или иные скрипты (блоки), по мере надобности. И это правильно  Основной блок (скрипт) не загромаждается кодом, а по мере надобности запускаются уже давно написанные скрипты ( блоки). Ну как то так, может немного сумбурно. Но если бы была такая возможность было бы все удобно и красиво.
Владимир  "Я искренне не понимаю за каким хреном может понадобиться даже второй скрипт"
Ну если Ваш робот торгует только по МА, то наверное тут за глаза хватит и одного скрипта((.
Я не собираюсь писать 86 роботов. Но даже в одном роботе гораздо рациональнее различные задачи разбить на блоки.
Масса преимуществ, которые даже не хочется перечислять, за их очевидностью.
запуск из работающего скрипта другого скрипта или скриптов
 
TGP, Да, возможно это решает данную задачу. Но хотелось бы не внедрять новую ОС, а использовать имеющиеся возможности КВИКА, в Квике же это реализовано, из таблицы доступных скриптов мы можем вручную запустить сколь угодно много скриптов, которые работают параллельно без всяких конфликтов, даже, несколько экземпляров одного и того же скрипта. Остается понять как сделать это же из запущенного в ручную собственного скрипта. Я пытался искать по форуму решение этой задачи, но внятного ничего не нашел. Неужели задача не выполнима ? . Может быть как то возможно из своего скрипта инициировать работу Квиковского модуля, ответственного за запуски скриптов, и передавать ему в качестве параметра адрес скрипта, это же делается в таблице доступных скриптов. Корифеи программирования, отзовитесь.
запуск из работающего скрипта другого скрипта или скриптов
 
Подскажите, кто знает, возможно ли запустить из работающего скрипта другие скрипты , чтобы они (другие скрипты) работали параллельно, через модули не получается, если в одном из скриптов есть бесконечный цикл, то другие модули не запускаются, пока этот модуль не закончит свою работу. Если скрипты запускаешь вручную, то их можно запустить, условно говоря, сколько угодно и они будут работать параллельно, возможно ли такое реализовать из основного(запущенного вручную) скрипта и если возможно небольшой практический пример.  
автоматический запуск скрипта, автозапуск
 
Цитата
Sergey Gorokhov написал:
Юрий С,
Возможно речь о том что было зарегистрировано пожелание на доработку.
рекомендуем ознакомиться с регламентом рассмотрения пожеланий:
https://forum.quik.ru/forum8/topic13/
Тем более, что реализация данного пожелания достаточно элементарна и не затрагивает ни коим образом ни функциональность Квика, ни его быстродействие и вообще не несет ни какой дополнительной нагрузки на систему .
автоматический запуск скрипта, автозапуск
 
Цитата
Sergey Gorokhov написал:
Юрий С,
Возможно речь о том что было зарегистрировано пожелание на доработку.
рекомендуем ознакомиться с регламентом рассмотрения пожеланий:
https://forum.quik.ru/forum8/topic13/
Sergey Denegin 24.06.2016 12:19:33
"А идея проста, и то, что реализовано в других терминалах:
при добавлении скрипта в список скриптов, сделать дополнительный параметр "автозапуск".
Он и будет определять, запускать ли скрипты при входе Квика или нет."
Ваш ответ (кстати именно Ваш) :
Sergey Gorokhov  24.06.2016 12:41:27
"Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО"

С регламентом рассмотрения пожеланий - ознакомился. Судя по нему данное пожелание ни чему не противоречит.
Так каков результат анализа ? Сообщите пожалуйста.
В чем причина не реализации данного пожелания аж с 2016 года ?
автоматический запуск скрипта, автозапуск
 
Цитата
Sergey Gorokhov написал:
Юрий С,
В  текущей реализации такой возможности не предусмотрено.
Сергей, вы же обещали (не вы лично), еще в 2016 году реализовать такую возможность, если не трудно объясните пожалуйста в чем причина, и стоит ли надеяться на реализацию, или это как то противоречит концепции вашего развития?
автоматический запуск скрипта, автозапуск
 
Подскажите пожалуйста появилась ли возможность автоматического запуска скрипта при старте Квика, имеется ввиду не  то что скрипт стартует при запуске квика, если он(скрипт) был запущен в предыдущем сеансе и тот сеанс был закрыт корректно, а то что я принудительно закрыл скрипт в предыдущем сеансе( например он отработал нужное мне время ) и квик был закрыт спустя некоторое время после этого т.е. на момент закрытия квика скрипт уже не работал.  Теперь в следуещем сеансе хотелось бы чтобы скрипт стартовал автоматически при старте квика , что то подобное виндовской автозагрузки,  Вроде бы 2016 году возникал такой вопрос, разработчики даже приняли его к рассмотрению, сдвинулось с места решение этого вопроса ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
Цитата
Юрий С написал:
К сожалению столкнулся сразу же со следующей проблемой :
при незначительных изменениях в исходном тексте программы:
сделал ошибку, исправил, заново скрипт не запустился, выдал ошибку:
Unknown error. Possible unhandled exeption
Вернулся к исходному тексту вашей программы. скрипт запускаться так же не желает ошибка та же :
Unknown error. Possible unhandled exeption
И только после перезагрузки Квика , скрипты запускаться стали.
Почему так происходит ?

Понять, почему так получается, не удалось, впрочем, сильно не разбирался. Лечится только перезапуском Квика.
Спрашивать у АРКИ об этой проблеме бесполезно, т.к. она возникает из-за сторонней библиотеки.
Стоит сделать так: отладить скрипт, максимально исключив возможное появление подобной ошибки.
Далее работает вполне стабильно, немного утомляя из-за однопоточности и  sleep  после  iup.LoopStep()  .
Понятно, Спасибо.
Интерфейс в Lua, Диалог из Lua
 
К сожалению столкнулся сразу же со следующей проблемой :
при незначительных изменениях в исходном тексте программы:
Цитата
vgi написал:
Попробуйте так:
сделал ошибку, исправил, заново скрипт не запустился, выдал ошибку:
Unknown error. Possible unhandled exeption
Вернулся к исходному тексту вашей программы. скрипт запускаться так же не желает ошибка та же :
Unknown error. Possible unhandled exeption
И только после перезагрузки Квика , скрипты запускаться стали.
Почему так происходит ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
На русском языке документации iup нет. Пусть это Вас не смущает, вставши на путь программирования.

Если что-то будет не понятно про iup, можете открыть новую тему с пометкой  iUP  , попробуем разобраться.
Обнадежили, спасибо.  
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
Цитата
документация очень хорошая, исчерпывающая, будет лежать в каталоге установленной LuaForWindows.

Документация действительно есть, но она к сожалению на английском, не подскажите, где то можно скачать документацию к iup  на русском языке или ее не существует в природе ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
Попробуйте так:
Спасибо, заработало, но правда пока непонятно как кнопки работают и работают ли они, ну буду разбираться, Спасибо.
Интерфейс в Lua, Диалог из Lua
 
Цитата
s_mike@rambler.ru написал:
Устанавливайте package.cpath а не package.path
К сожалению, то же самое :
-- Begin programm
--------------------------------------------------------------------------------------
package.cpath = package.cpath .. ";C:/Program Files/Lua/5.1/lua/?.lua"
package.preload["iuplua"]
--------------------------------------------------------------------------------------
require("iuplua")
require("iupluacontrols")
local iup = iup

local function initializeDialog()

выдает ту же ошибку:

Syntax error while compiling D:\Program_Lua\Events_iup_1.lua: D:\Program_Lua\Events_iup_1.lua:6: '=' expected near 'require'
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
Цитата
Юрий С написал:
 
Цитата
vgi  написал:
iup  входит в стандартную LuaForWindows 5.1.4.0
Подскажите, плиз, где скачать LuaForWindows 5.1.4.0 и как установить его в квике, насколько я понял луа в квике встроенный , у меня установлен  квик версии 7.18.1.20, но он на iup ругается не видит модули ?

Скачиваете, устанавливаете. В скрипте не забудьте добавить путь к LuaForWindows в package.path.
Захочется добавить в окошки что-то поинтереснее - документация очень хорошая, исчерпывающая, будет лежать в каталоге установленной LuaForWindows.

https://forum.quik.ru/messages/forum10/message19255/topic2166/#message19255
https://forum.quik.ru/messages/forum10/message25804/topic2954/#message25804
Скачал, установил:

-- Begin programm
--------------------------------------------------------------------------------------
package.path = package.path .. ";C:/Program Files/Lua/5.1/lua/?.lua"
package.preload["iuplua"]
--------------------------------------------------------------------------------------
require("iuplua")
require("iupluacontrols")
local iup = iup

local function initializeDialog()
..............................
выдает ошибку:
Syntax error while compiling D:\Program_Lua\Events_iup_1.lua: D:\Program_Lua\Events_iup_1.lua:6: '=' expected near 'require'

Помогите пжлст, в чем дело ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
vgi написал:
iup  входит в стандартную LuaForWindows 5.1.4.0
Подскажите, плиз, где скачать LuaForWindows 5.1.4.0 и как установить его в квике, насколько я понял луа в квике встроенный , у меня установлен  квик версии 7.18.1.20, но он на iup ругается не видит модули ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
s_mike@rambler.ru написал:
Обработчики событий пользовательских таблиц работают не в потоке main. В общем случае так делать не стоит.
Спасибо, попробую разобраться.
Т.е. если я правильно понял средствами QLua  невозможно вывести окно, как например в Java, в котором будут например две кнопки "Да" и "Нет" и проанализировать какая из них нажата ?
Интерфейс в Lua, Диалог из Lua
 
Цитата
_sk_ написал:

Ещё можно использовать обычные таблицы терминала совместно с событиями нажатия на кнопки мыши. Костыльный вариант, но иногда подходит.

Если можно хотя бы приблизительный пример, что именно подразумевается под "использовать обычные таблицы терминала совместно с событиями нажатия на кнопки мыши "  какие именно "обычные таблицы" и можно ли использовать клавишу ввод , а не мышь ?
Интерфейс в Lua, Диалог из Lua
 
Подскажите, пожалуйста, как можно организовать диалог из  программы Lua, например организовать запрос с выводом в окно на экран и ожидать ответа  из соответствующего поля в этом же окне и в зависимости от ответа продолжить выполнение программы, вообще в Lua возможно организовать чтение вводимых данных с консоли ?
вопрос по индикаторам, движение индикатора
 
Николай, большое спасибо, что хоть Вы откликнулись, вот тот незамысловатый график который я хочу заставить двигаться, что бы уже дальше двигаться самому

Settings = { Name= "WMA_0_1", period=5}
        function Init ()
        return 1
        end
-- ============================================================­=============
       local price_move="price_5m"
       price_close=0

  function OnCalculate(index)
     num_price = getNumCandles (price_move)

     if index < num_price then
        price_close= getCandlesByIndex(price_move,0,index -1,1)[0].close
     end
     if index<=0 or price_close==0 or index>=num_price  then
       return nil
       else  
         pr= price_close
          return pr  
    end

--message(' Метка- 2',2)      
-- ============================================================­==============
 function main()
 
 end
-- ============================================================­==============
end
   
Помогите пжлст !
вопрос по индикаторам, движение индикатора
 
Подскажите пожалуйста , написал для пробы что то типа индикатора, в таблице индикаторов он виден, запускается, но отрабатывает один раз а двигаться так как например МА или price не двигается или может я неправильно выразился - не обновляется, прочертил один раз и все, может хотя бы схематично подскажите как его зациклить или что нужно сделать чтобы он обновлялся(двигался) ? Заранее спасибо
getDepoEx, не работает getDepoEx
 
Цитата
Sergey Gorokhov пишет:
Цитата
juriy163 S пишет:
Может причина какая то в самой табл. лимитов ?
Боюсь что если бы это было действительно так, было бы гораздо больше обращений по данной проблеме.
Проблема именно в Вашем коде, и пробел это только доказывает.
Выложите копию куска кода в котором Вы работаете с функцией getDepoEx
--пример использования getMoneyEx и getDepoEx

function main(  )
   
 --tbl_depo=getDepo("21455","NC0007900000","GAZP","L01+00000F00")
 --tbl_money=getMoney("21455","NC0007900000","EQTV","SUR")

 tbl_depo=getDepoEx("NC0007900000","21455","GAZP","L01+00000F00",2)  
 tbl_money=getMoneyEx("NC0007900000","21455","EQTV","SUR",2)        -- 2 это Т2 ( 1 - Т1, 0 - Т0)

--============================================================­==================
--function table.val_to_str ( v )
 
--------------------------------------------------------------------------------------------------------
--function table.key_to_str ( k )

------------------------------------------------------------------------------------------------------
-- Преобразование таблицы или массива в текстовое представление в соответствии с синтаксисом языка lua

--function table.tostring( tbl )
 
------------------------------------------------------------------------------------------------------
-- Сохранение таблицы или массива в файл

--function table.save(tbl,filename)
 
--============================================================­==================
   filename="Get_Money.txt"  --81

      table.save(tbl_money,filename)
       
   filename="Get_Depo.txt"

      table.save(tbl_depo,filename)

   message (tostring(tbl_money["currentbal"]),2)
   
        sleep(3000)

   message (tostring(tbl_depo["currentbal"]),2)

end  

Закоментированные функции - работающие, не обращайте на них внимания
getDepoEx, не работает getDepoEx
 
Цитата
Sergey Gorokhov пишет:
Цитата
Юрий Самсуни пишет:
tbl_depo=getDepoEx ("NC0007900000" , "21455" , "GAZP" , " L01+00000F00", 2)
У Вас лишний пробел перед счетом " L01+00000F00"
Исправьте так:
Код
 tbl_depo=getDepoEx ("NC0007900000" , "21455" , "GAZP" , "L01+00000F00", 2) 
К сожалению, это возможно пробел в сообщении, в программе его нет.
Может причина какая то в самой табл. лимитов ?  
getDepoEx, не работает getDepoEx
 
Цитата
Egor Zaytsev пишет:
Добрый день.

Юрий, можете полный код программы выложить.
Не хотелось бы заграмаждать ветку , но если в кратце этот код выдает ошибку в основной программе, я его переписал в простейшую - только он и вывод полученной табл. в файл и там и там одна и та же ошибка  выдает nil причем повторяю рядом выполняется getMoneyEx он выдает все верно ?
getDepoEx, не работает getDepoEx
 
Подскажите пожалуйста не работает getDepoEx, выдает nil,  хотя в табл. лимитов по бумагам, бумаги есть, правда почему то указаны в количестве акций, а не в количестве лотов.
getMoneyEx - работает нормально все верно выдает.
Попробовал  getDepo и getMoney, в этом случае  getMoney опять же выдает все верно, а getDepo в полях указывает нули (depo_current_balance=0, depo_limit_available=0 и т. д. ).
Таблицы лимитов созданы и открыты.
tbl_depo=getDepoEx ("фирма" , "код клиента" , "код бумаги" , " счет депо", 2)
tbl_depo=getDepoEx ("NC0007900000" , "21455" , "GAZP" , " L01+00000F00", 2)
Версия quik 6.17.0.58
Страницы: 1
Наверх