QLua. Как определить, открыта-ли таблица скрипта? Как сделать кнопки в таблице? Такое определение не работает if IsWindowClosed(t_id)==false then t = CreateWindow(t_id) end

  • обсудить на форуме:
  • Quik Lua
★1
ВНИМАНИЕ! КОММЕНТАРИИ ПЕРВОГО УРОВНЯ В ВОПРОСАХ УПОРЯДОЧИВАЮТСЯ ПО ЧИСЛУ ПЛЮСИКОВ, А НЕ ПО ВРЕМЕНИ ПУБЛИКАЦИИ.
IsWindowClosed — возвращает true только, если окно закрыто.
Используйте SetTableNotificationCallback для установки функции, в которую будут валится некоторые сообщения от таблицы. Там есть — флаг QTABLE_CLOSE – закрытие таблицы. При закрытии таблицы, можете снова открывать окно.
avatar
Александр, Спасибо. Но можно ли понять на момент запуска, создана таблица или нет? QTABLE_CLOSE как я понял, срабатывает только при закрытии таблицы.
avatar
kvazar, В момент запуска ты сам создаешь таблицу CreateWindow. Пока не создал, таблица не создалась. В функции init или main создаешь таблицу, а дальше мониторишь, не закрылась ли она. Если закрылась, опять открываешь.
avatar
Александр, спасибо. Скажите пожалуйста, а как узнать денежное состояние (размер прибыли или убытков) по инструменту(фьючерсу)? Наверно с помощью функции getFuturesLimit?

avatar
kvazar, Как вариант. Другой вариант — прочитать таблицы futures_client_holding, futures_client_limits.
avatar
kvazar, Лучше самому рассчитывать размер прибыли и убытков, т. к. в этих таблицах могут быть ошибки, например, из-за проблем на бирже.
avatar
Александр, спасибо
avatar
Как сделать кнопки в таблице?
чтобы сделать элементы визуального интерфейса, нужно использовать одну из доп библиотек. например VCLua.
avatar
таблица с расшифровкой кликов по окну таблицы.
event_table = {
[QTABLE_LBUTTONDBLCLK] = «Левый даблклик»,
[QTABLE_RBUTTONDBLCLK] = «Правый даблклик»,
[QTABLE_CLOSE] = «Закрыли таблицу»
}
function table_str(t_id, msg, par1, par2) --функция обрабатывает двойные щелчки в таблице робота

--par1 номер строки. par2 номер колонки
if (par1 == 1) and (par2 == 9) and (msg == QTABLE_LBUTTONDBLCLK) then

table_str — это коллбек SetTableNotificationCallback.
avatar
Eldar Shaymardanov, спасибо

avatar
kvazar, я под «кнопку» отвел отдельную ячейку и тап левой кнопкой  мышки и это работало.

по закрытию окна — использовал такую конструкицию.
function main() --основная функция скрипта.
    if IsWindowClosed(table_data) then
        is_run=false
        return        
    end
    
    while is_run do
        sleep(150)
        if isConnected() == 1 then
            robot()
        end
    end
end

function OnStop() --функция остановки скрипта.
  is_run = false
end
avatar
Eldar Shaymardanov, скажите пожалуйста, как заставить таблицу обновляться в соответствии с изменением переменных скрипта?
avatar
ну при изменении переменных — делайте изменение ячеек таблицы.
через SetCell записываете в ячейку новую таблицу.
либо делаете отдельную процедуру, где пробегаете по переменным и перезаполняете ячейки таблицы.
у меня сделано обновление значений ячеек в коде изменения переменных.
avatar
Eldar Shaymardanov, т.е. к примеру так :
fx=1
InsertRow(t_id, 2);      SetCell(t_id,2--[[№строки]], 0--[[№ячейки]], «изменился FX»)
avatar
фактически — да.
InsertRow — а зачем ты добавляешь строку?
avatar
Eldar Shaymardanov, описка. Но вот ни как не могу решить вопрос: при запуске скрипта всегда запускается новая таблица, а можно ли сделать, что бы оставалась старая?
avatar
kvazar, нет, нельзя сохранить старую таблицу. потому, что идет инициализация переменной только в этом скрипте.
НО! ты можешь выгрузить в файл нужные тебе данные и при новом открытии скрипта загрузить их.
avatar
Eldar Shaymardanov, спасибо
avatar

Только зарегистрированные и авторизованные пользователи могут оставлять ответы.

Залогиниться

Зарегистрироваться

теги блога Трейдер Вася

....все тэги



UPDONW
Новый дизайн