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

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

Страницы: Пред. 1 2 3 След.
Нашел баги, если вы будете каждые 10 мск пересчитывать число строк в таблице
 
А можете код привести, который подтверждает это?

А то уже 5 минут жду, не могу ошибки дождаться.

Или не так считаю количество "строк"?
Скрытый текст
Вид бумаги в OnTrade, получить вид бумаги, по которой произошел трейд
 
Список param_name для getParamEx:
Скрытый текст
Вид бумаги в OnTrade, получить вид бумаги, по которой произошел трейд
 
Цитата
Suntor написал:
sectypestatic — откуда такой тип выцепили? не вижу в документации... только SECTYPE вижу

ARQA не добавила все параметры ТТП в документацию.
Нашел его, сделав по рекомандации АРКИ DDE-экспорт ТТП в Excel с формальными заголовками по всем классам.
Вид бумаги в OnTrade, получить вид бумаги, по которой произошел трейд
 
Берите из колбэка class_code и sec_code инструмента и проверяйте его тип:

Код
local pi = getParamEx(class_code,sec_code ,"sectypestatic")
local sectype = pi and pi.param_image
if sectype == "Ценные бумаги" then
elseif sectype == "Фьючерсы" then
elseif sectype == "Облигации" then
elseif sectype == "Опционы" then
elseif sectype == "Спреды" then
elseif sectype == "Валюта" then
elseif sectype == "Свопы" then
end
дважды or
 
Цитата

Lua 5.1 Logical Operators

Это, кстати, одна из фишек, за которые мы любим Lua !  :smile:
дважды or
 
Цитата
Let_it_go написал:
что в вашем примере означает  and ?

Проверка на то, что getPortfolioInfoEx возвращает таблицу, а не nil. Иначе будет ошибка attempt to index 'p' ( a nil value ).

Lua 5.1 Logical Operators
дважды or
 
Код
local p = getPortfolioInfoEx (firm, client_code,  2 )
profit_loss =  1  * ( p and p.profit_loss  or  profit_loss  or   0 )  
Как сократить условие if 'string' then print() end
 
Или можно так, чтобы без string.find:
Код
local function orEquals(tofind,...)
    for _,v in ipairs{...} do
        if v == tofind then return true end
    end
    return false
end

-- usage
local digit = "one"
print( orEquals(digit,"two","three","one") ) -- true
digit = 4
print( orEquals(digit,2,3,1) ) -- false
Прочесть таблицу новости через LUA
 
Никак
string.gmatch
 
Цитата
Let_it_go написал:
А как перебирать тикер лист, если там есть фьючерсы? У них в конце цифра:
ticker_list="SBER,GAZP,SiU8"

Стоит попробовать перебирать по группам символов, которые явно не являются разделителями:
for sec in string.gmatch(ticker_list,"[^,]+") do --группа символов, но не запятая
end
Связь двух виртуалок
 
И пароль к учетке, под которой Квик с роботом крутится и для которой расшарите папку с papam.txt и разрешите ей только чтение, посильнее сделайте.
Пользователи Telegram-Bot! Как организовать работу через proxy?
 
Цитата
Александр Волфовиц написал:Ого! А есть библиотеки LUA, которые позволяют осуществить подобное?
Вы что, с луны  ( кстати, Lua, с португальского — «луна» ) свалились?  :smile:   Для чего же иначе нужен бот, если не для обратной связи!
https://forum.quik.ru/forum10/topic561/
https://github.com/gihar/quik-telegram-bot/blob/master/telegram.lua
https://github.com/cosmonawt/lua-telegram-bot
Добрый вечер. Как определить в ЛУА существование файла?
 
Цитата
Igor Golovin написал:
зачем выбран такой язык??

• Нестрогая типизация,
• Таблицы ключ-значение,
• if от чего бы то ни было, кроме nil и false, есть true

Огонь язык! ))
Добрый вечер. Как определить в ЛУА существование файла?
 
Ещё есть такой вариант:
Код
local path = require("pl.path")
...
if path.exists(fn) then
     ...
else
     --  "File not found!"
end

но pl тянет LuaFileSystem зависимостью и, возможно, придётся делать luarocks install luafilesystem
Можно ли из Квика на lua запустить внешний ехе файл?, mail.
 
Код
os.execute("C:\\Path\\to\\your\\ConsoleApplication1.exe")
Кто как решил вопрос уведомления о сделках?
 
Цитата
Алексей написал:
Пользователи Telegram-Bot!

Поделитесь соображениями, как обойти предстоящую блокировку.

http://forum.quik.ru/messages/forum10/message30523/topic3589/

Планирую использовать vpn на машине с ботом, а не прокси в api.
Пользователи Telegram-Bot! Как организовать работу через proxy?
 
Планирую использовать vpn на машине с ботом, а не прокси в api.
Идентификация индикаторов
 
Я бы предложил через socket или ещё как-то с некоторой периодичностью слать пакет, содержащий key и настройки, туда, где внешнее ПО будет слушать эти пакеты. Но если индикатор без новых тиков не умеет что-либо делать после создания ( с индикаторами не работаю ), то это не осуществимо.
Идентификация индикаторов
 
Добрый день!

Как Вам вариант с генерацией файла типа pid индикатором?
Имя файла - уникальный key.
Внутри можно или просто датавремя последнего тика писать. Тогда настройки в отдельный файл при перезапуске индикатора сохранять.
Либо датавремя+настройки дампить прямо в key-файл.
Ошибка getDepoEx, Ошибка getDepoEx
 
сначачал проверьте, что даёт  getDepoEx, а потом уже
обращайтесь к полям:

local depo = getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
if depo then
   local currentbal = depo.currentbal
   --
end
Робот на АО ошибка: attempt to compare number with function, Ошибка attempt to compare number with function
 
AO - это function ?
Покажите для начала, что такое AO и строчку с ошибкой.
Текст по центру
 
Попробуйте string.format( "%"..N.."s | %s", sec1, sec2 ), где N больше любого sec1:len(), напр. N=10, но, возможно, обычные пробелы не помогут.
Lua for Windows, luarocks, модули
 
Цитата
Арсений
Если запускать скрипт оттуда из SciTe, то библиотека работает. Если из квиковой папки, то предсказуемо нет

Попробуйте в скрипте заранее указыавть пути к вашей установленной луе:

Код

local lua51path = "C:\Lua\5.1" -- путь, куда установлен дистрибутив Lua 5.1 for Windows

package.cpath = "./?.dll;./?51.dll;"
        .. lua51path .. "?.dll;"
        .. lua51path .. "?51.dll;"
        .. lua51path .. "clibs/?.dll;"
        .. lua51path .. "clibs/?51.dll;"
        .. lua51path .. "loadall.dll;"
        .. lua51path .. "clibs/loadall.dll;"
        .. package.cpath
package.path = package.path
        .. ";./?.lua;"
        .. lua51path .. "lua/?.lua;"
        .. lua51path .. "lua/?/init.lua;"
        .. lua51path .. "?.lua;"
        .. lua51path .. "?/init.lua;"
        .. lua51path .. "lua/?.luac;"


Цитата
Арсений
Первый вариант не получился от слова совсем

Лёгкими путями не идёте. Будем посмотреть, как у вас получиться.
Ошибка при чтении стакана
 
Может так?

if value and value.tbl and value.tbl.bid and value.tbl.bid[indexBid] then
    bidPrice = tonumber(value.tbl.bid[indexBid].price)
end

После этого bidPrice будет либо числом либо nil.
Не появляется окно с таблицей
 
Сделайте ещё
CreateWindow(id)
SetWindowCaption(id, "Ваш заголовок")
Как получить текущую чистую позицию quik
 
Код
for _,table in pairs{ "depo_limits", "futures_client_holding", } do
    local n = getNumberOf(table)
    for i = 0, n-1 do
        local limit = getItem(table,i)
        local s = ""
        for param,value in pairs(limit) do
            s = s..param.."="..tostring(value)..", "
        end
        message( s, 1 )
    end
end


Текущие чистые позиции по фьючам или Текущий остаток по бумагам сможете найти, если откроете QLUA.chm в каталоге Квика.
Как запустить колбек не сразу?
 
Если Вам охота "не потерять" колбэки, которые возникнут, пока переменные ещё не инициализированы, то стоит их "сложить" в очередь функций, которую разгрести, когда инициализация завершится.
Сетевая папка
 
Может, конечно. И запускаться из сетевой папки и писать туда.
А у Вас какую-то ошибку выдаёт?
Дата произвольной свечи, Дата произвольной свечи
 
Или через график с тэгом:
local candles, n = getCandlesByIndex(tag,line,first_candle,count)
local datetime = candles and candles[ n - 1 ].datetime

Или через DataSource:
local datetime = datasource:T(candle_index)
Удаление элементов таблицы
 
Добавьте print(i,#s) в цикл удаления и увидите:
Скрытый текст
В мануале к table.remove написано, что он удаляет нужный, сдвигая остальные, или последний элемент.
В вашем случае надо делать или table.remove(s) или table.remove(s,1), чтобы удалять или с начала, или с конца, или следить, чтобы индекс был меньше размера таблицы.

ПС. Возможно, Вам будет профитнее использовать таблицу, индексированную не по-умолчанию i=1..N, а ключами - номерами заявок. Т.е.:
s = { }
s[order.order_num] = 1 or order or true
Тогда не будет головняков с удалением, за исключением того, что надо точно знать номер удаляемой заявки, чтобы её удалить с помощью s[order_num] = nil
Помогите с математикой
 
Цитата
Let_it_go написал:
Зачем?
Код в моей версии понятный, элегантный и не громоздкий (всего 3 строчки).
Если использовать else, он был бы намного объёмнее.

if sd[sec]>200 then otklonenie=5
elseif sd[sec]>50 then otklonenie=4
elseif sd[sec]>0 then otklonenie=3 end

Вроде тоже 3 строчки

Цитата
Let_it_go написал:
Нет смысла такое оптимизировать.

Да как так-то?! )))
На горизонте простор для мемов )))
Запись в текстовый файл, Нужно дописать данные в определенное место файла.
 
Цитата
Иван Ру написал:
Затем я его читаю в эксель.

А если писать напрямую в excel?
Сам не пробовал, но вроде можно так или так.
Запись в текстовый файл, Нужно дописать данные в определенное место файла.
 
Насколько понял, событий не ооочень много и частота дописываний тоже не hft.
Может стоит пересмотреть процесс создания/записи файла?
Например периодически полностью пересоздавать его ( данные в памяти ).
Если не охота данные в памяти всё время держать, можно сохранять в не очень наглядном lua-формате, загружать с помощью dofile, дополнять и снова сливать в файл.
Запись в текстовый файл, Нужно дописать данные в определенное место файла.
 
Верно, после дозаписи получается не красиво.
Выходит, проще, читая исходный файл, писать с дополнениями новый.
Запись в текстовый файл, Нужно дописать данные в определенное место файла.
 
Если требуется именно дописать, а не изменить, то для случая дописывания в конец строки самым простым представляется прочитать из файла, открытого как io.open( filename, "r+" ), N (=79) строк. Затем шагнуть назад file:seek( "cur", -EOL ), где EOL = "\n":len() - длина перевода на новую строку. А потом дописать с помощью file:write то, что Вам требуется.
Для случая дописывания не в конец строки придётся искать позицию иначе.

Если файл создаётся периодически из того же кода, можно отдельно запоминать offset для file:seek нужного для дозаписи места.
объявить несколько локальных переменных
 
local a,b = 1,2
Интерфейс на LUA, какая библиотека?
 
iUP - идёт вместе с LuaForWindows_v5.1.4-46.exe
Документация в %LUA_DEV%\docs\iup, примеры в %LUA_DEV%\examples\iup
Переключение таймфреймов по хоткею
 
• А также для Lua-скриптов повесьте Ctrl+F9 хотя бы, коль Ctrl+F11 занимает QPILE.

• А ещё при активном окне Доступных Lua-скриптов горячие клавиши Квика не работают.
С учётом отсутствуя горячей клавиши для вызова/скрытия Lua-скриптов, это обращает на себя внимание.

Почините, пожалуйста.
Спасибо!
Феерическое
 
Михаил Понамаренко, смешно)

s_mike@rambler.ru, были давно иногда такие проблемы, преимущественно на ФОРТС. Решались манипуляциями АРКИ с сервером Квика, если успевали заметить, перед или в начале торгов.
Закрывает 2 раза позицию, в итоге открывает
 
kvazar1988, оформаляйте код и логи в спойлеры ( кнопка [SP] ). Невозможно смотреть на такие посты.
вопрос по Notepad++
 
Как понял, это просто запуск скрипта, как из cmd.exe.
К примеру, введите туда
"C:\Program Files\Lua\5.1\lua.exe" "C:\Documents and Settings\%username%\Рабочий стол\new 1.lua"
Запуститься интерпретатор lua, который выведет  в Вашем случае ничего и исчезнет.

ПС А как Вам IntelliJ IDEA Community с Lua-плагином?
Несколько QUIK путают файлы настроек.
 
green_X5,
В случае работы нескольких терминалов Квика получилось победить описанную Вами проблему только таким способом:

1. Создаём отдельный каталог. Например, D:\wnd
2. Для каждого Квика прописываем в настройках уникальное название файла настроек и сохраняем в D:\wnd. В Вашем случае, например, так:
   D:\wnd\info_SMS.wnd
   D:\wnd\info_VTB24.wnd
   D:\wnd\info_PSB.wnd

1ым пунктом решаем пробему глобальности текущего каталога в Квиках, 2ой пункт - чтобы не перепутать настройки.
С учётом того, что у Вас включена опция "Сохранять настройки при выходе", можно предположить, что Квики перезатирали чужие настройки из-за проблемы глобальности. Эту опцию вообще лучше отключать, имхо, и сохраняться только вручную.
Не срабатывает колбек OnTrade
 
Цитата
Дмитрий Косолапов написал:
Код
 -- выводим сообщение 
 function   OnTrade (trade_data)
     message ( 'da' )
 end 
  
Нет сообщение при тике.
message( 'da', 1 or 2 or 3 )
lдата свечи и время, есть данные номера свечи. даты нет.
 
local candle = t1[0]
???? =  os.date("%d.%m.%Y",os.time(candle.datetime))
Кому-нибудь удалось скомпилировать luasec?, Кому-нибудь удалось скомпилировать luasec?
 
Отпишите, если всё-таки удастся скомпилировать luasec на Windows из исходников! ))
Кому-нибудь удалось скомпилировать luasec?, Кому-нибудь удалось скомпилировать luasec?
 
Кстати, здесьуже упоминал про собранный luasec для sendmail, например.
Кому-нибудь удалось скомпилировать luasec?, Кому-нибудь удалось скомпилировать luasec?
 
Нет, но для win32 я использую готовые сборки

PS Может вот это поможет.
Dangerous Date, Падение интерпретатора lua и зависание Quik'а вместе с ним при ошибке в os.date(format).
 
Провел ряд тестов.
WinXP SP3 :oops:, Quik 7.10

Код скрипта и Результаты тестов:
Скрытый текст


Выводы:
  1. В WinXP в Quik подобная ошибка вне main приводит к зависанию, а в pcall/xpcall не отлавливается и блокирует остальной скрипт
  2. Ужесточить требования, удалив WinXP из списка поддерживаемых  :lol:

PS Как удалить сообщение #9 ?
Dangerous Date, Падение интерпретатора lua и зависание Quik'а вместе с ним при ошибке в os.date(format).
 
Цитата
Sergey Gorokhov написал:
vgi  ,
Касаемо обновления Lua, в данный момент у нас таких планов нет и в обозримом будущем не планируется.
Dangerous Date, Падение интерпретатора lua и зависание Quik'а вместе с ним при ошибке в os.date(format).
 
А может всё-таки Lua в Quik на 5.2-5.3 переведём?
Там xpcall с параметрами можно вызывать!  :smile: :wink:
Страницы: Пред. 1 2 3 След.
Наверх