Кто-нибудь пробовал обращаться к внешним сервисам типа Twitter из qlua? Есть у меня желание добавить себе в скрипт чтение ленты по ключевым словам. Я нашел библиотеки Lua для подключения к тому же Twitter, вопрос только - заработет ли из Квика? Может проще написать того же бота на питоне.
Двойное OnDepoLimit, Два раза вызывается функция.
Пользователь
Сообщений: Регистрация: 27.01.2017
21.02.2018 10:55:46
Добрый день.
Подниму совсем старое обсуждение.
Но вот на тестовом сервере (и на реальном) я получаю не просто один коллбэк.
Вот только что сегодня купил один лот Себрбанка и тут же продал. Получил вот столько коллбэков. Да лимиты разные, но они повторяются. 4 раза лимит 0, 4 раза лимит -3. Отличие в блокировке количества и средств. Но вот во всем этом многообразии только последний будет нужен. Как это отлавливать?
02/21/18 10:45:19; M Transaction BUY 0; --- это купил 02/21/18 10:45:19; OnTransReply 1519199113 (161) Заявка N 3616235401 зарегистрирована. Удовлетворено 1; 02/21/18 10:45:19; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:19; Счет депо NL0011100043; 02/21/18 10:45:19; Код клиента 10118; 02/21/18 10:45:19; Входящий остаток по бумагам 0; 02/21/18 10:45:19; Входящий лимит по бумагам 0; 02/21/18 10:45:19; Текущий остаток по бумагам 0; 02/21/18 10:45:19; Текущий лимит по бумагам 0; 02/21/18 10:45:19; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:19; Заблокированного на покупку количества лотов 1; 02/21/18 10:45:19; Стоимость ценных бумаг, заблокированных под покупку 2900.3; 02/21/18 10:45:19; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:19; Цена приобретения 0; 02/21/18 10:45:19; Тип лимита 0; 02/21/18 10:45:19; __________; 02/21/18 10:45:19; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:19; Счет депо NL0011100043; 02/21/18 10:45:19; Код клиента 10118; 02/21/18 10:45:19; Входящий остаток по бумагам 0; 02/21/18 10:45:19; Входящий лимит по бумагам 0; 02/21/18 10:45:19; Текущий остаток по бумагам 0; 02/21/18 10:45:19; Текущий лимит по бумагам 0; 02/21/18 10:45:19; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:19; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:19; Стоимость ценных бумаг, заблокированных под покупку 290.03; 02/21/18 10:45:19; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:19; Цена приобретения 0; 02/21/18 10:45:19; Тип лимита -3; 02/21/18 10:45:19; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 0; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:20; Цена приобретения 0; 02/21/18 10:45:20; Тип лимита 0; 02/21/18 10:45:20; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 0; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:20; Цена приобретения 0; 02/21/18 10:45:20; Тип лимита -3; 02/21/18 10:45:20; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 0; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 1; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 2900.3; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:20; Цена приобретения 0; 02/21/18 10:45:20; Тип лимита 0; 02/21/18 10:45:20; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 0; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 290.03; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:20; Цена приобретения 0; 02/21/18 10:45:20; Тип лимита -3; 02/21/18 10:45:20; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 1; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:20; Цена приобретения 2.6608; 02/21/18 10:45:20; Тип лимита 0; 02/21/18 10:45:20; __________; 02/21/18 10:45:20; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:20; Счет депо NL0011100043; 02/21/18 10:45:20; Код клиента 10118; 02/21/18 10:45:20; Входящий остаток по бумагам 0; 02/21/18 10:45:20; Входящий лимит по бумагам 0; 02/21/18 10:45:20; Текущий остаток по бумагам 0; 02/21/18 10:45:20; Текущий лимит по бумагам 0; 02/21/18 10:45:20; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:20; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:20; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:20; Цена приобретения 0; 02/21/18 10:45:20; Тип лимита -3; 02/21/18 10:45:20; __________;
02/21/18 10:45:30; M Transaction SELL 0; --- это продал 02/21/18 10:45:30; OnTransReply 1519199114 (161) Заявка N 3616235602 зарегистрирована. Удовлетворено 1; 02/21/18 10:45:30; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:30; Счет депо NL0011100043; 02/21/18 10:45:30; Код клиента 10118; 02/21/18 10:45:30; Входящий остаток по бумагам 0; 02/21/18 10:45:30; Входящий лимит по бумагам 0; 02/21/18 10:45:30; Текущий остаток по бумагам 1; 02/21/18 10:45:30; Текущий лимит по бумагам 0; 02/21/18 10:45:30; Заблокировано на продажу количества лотов 1; 02/21/18 10:45:30; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:30; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:30; Стоимость ценных бумаг, заблокированных под продажу 2659; 02/21/18 10:45:30; Цена приобретения 2.6608; 02/21/18 10:45:30; Тип лимита 0; 02/21/18 10:45:30; __________; 02/21/18 10:45:30; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:30; Счет депо NL0011100043; 02/21/18 10:45:30; Код клиента 10118; 02/21/18 10:45:30; Входящий остаток по бумагам 0; 02/21/18 10:45:30; Входящий лимит по бумагам 0; 02/21/18 10:45:30; Текущий остаток по бумагам 0; 02/21/18 10:45:30; Текущий лимит по бумагам 0; 02/21/18 10:45:30; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:30; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:30; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:30; Стоимость ценных бумаг, заблокированных под продажу 265.9; 02/21/18 10:45:30; Цена приобретения 0; 02/21/18 10:45:30; Тип лимита -3; 02/21/18 10:45:30; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 1; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:31; Цена приобретения 2.6608; 02/21/18 10:45:31; Тип лимита 0; 02/21/18 10:45:31; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 0; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:31; Цена приобретения 0; 02/21/18 10:45:31; Тип лимита -3; 02/21/18 10:45:31; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 1; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 1; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу 2659; 02/21/18 10:45:31; Цена приобретения 2.6608; 02/21/18 10:45:31; Тип лимита 0; 02/21/18 10:45:31; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 0; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу 265.9; 02/21/18 10:45:31; Цена приобретения 0; 02/21/18 10:45:31; Тип лимита -3; 02/21/18 10:45:31; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 0; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу 0; 02/21/18 10:45:31; Цена приобретения 0; 02/21/18 10:45:31; Тип лимита 0; 02/21/18 10:45:31; __________; 02/21/18 10:45:31; Изменения по счету: Код бумаги SBER; 02/21/18 10:45:31; Счет депо NL0011100043; 02/21/18 10:45:31; Код клиента 10118; 02/21/18 10:45:31; Входящий остаток по бумагам 0; 02/21/18 10:45:31; Входящий лимит по бумагам 0; 02/21/18 10:45:31; Текущий остаток по бумагам 0; 02/21/18 10:45:31; Текущий лимит по бумагам 0; 02/21/18 10:45:31; Заблокировано на продажу количества лотов 0; 02/21/18 10:45:31; Заблокированного на покупку количества лотов 0; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под покупку 1e+048; 02/21/18 10:45:31; Стоимость ценных бумаг, заблокированных под продажу -1e+048; 02/21/18 10:45:31; Цена приобретения 0; 02/21/18 10:45:31; Тип лимита -3; 02/21/18 10:45:31; __________;
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 27.01.2017
19.02.2018 15:51:45
Проверил еще раз. На фондовой секции приходит OnTransReply. Вопрос снимается. Это уже вопрос организации алгоритма как обрабатывать событие.
Цитата
Sergey Gorokhov написал: Больше интересует вопрос что именно "работает"? Т.е. заявка по факту ставится или нет? В качестве примера, сообщите точное время (по МСК) когда была попытка выставить такую заявку.
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 27.01.2017
18.02.2018 21:06:22
Сам же себе и отвечу.
Если пишем систему в реальном времени, то функция main должна просто что-то инициализировать и все. Далее все должно выполняться в коллбэках. Если их нет, то и нечего анализировать получается. Пришла свечка - отвечаем на событие, решили, что надо сделать транзакцию, отправили ее. Ждем ответа о ее завершении.
А вот в функции main, видимо, надо как раз анализировать ситуации когда ответа нет. Скажем, нет ответа на транзакцию, значит перебери ордера, чтобы понять, может она прошла. Видимо, так. Я пока не все еще продумал, т.к. не очень знаком с организацие вызовов в qlua, но, наверно, есть ситуации неуловимые коллбэками.
А вот если система не реального времени, а по расписанию, то, как я понимаю, все надо реализовывать в бесконечном цикле main. Скажем, цикл, перебирающий список бумаг каждые 15 минут и рассчитывающий что-то. Правда в этом месте возникает вопрос, а нельзя ли при инициализации скрипта назначить один и тот же коллбэк на получение данных разных инструментов, разных интервалов? Тогда и здесь можно было бы все в этом одном коллбэке делать не утилизируя функцию main. Судя по описанию нельзя. Т.е. я вынужден каждые 15 минут заново перибирать список инструментов, получать данные, считать. А если бы в коллбэк приходил не только индекс, но признак чей это индекс, то можно было бы сохранив ранее DS каждого инструмента, отреагировать именно на него.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
Пользователь
Сообщений: Регистрация: 27.01.2017
18.02.2018 17:25:18
Цитата
Николай Камынин написал: можно попробовать так. ============================= в main ставите однократную подписку на данные: if DS==nil then DS = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL) end ============================== там, где используете эти данные ставите условие: if DS and DS:Size() ~= 0 then -- обработка данных end ------------------------ При этом нет надобности в каких-либо задержках, все будет работать без тормозов.
У меня при инициализации происходит проверка на количество. Если пусто, то идет заказ данных.
А у уже в main идет обработка данных. Там я тоже поставил на проверку, но уже без задержек, т.к. данные не приходят, сразу. Возможно перезаказывать бессмысленно, а надо просто ждать.
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 27.01.2017
18.02.2018 17:18:34
Цитата
Полагаю, что у Вас неправильное представление о работе с колбеками. При использовании колбеков нет надобности ждать. Колбеки для этого и создаются. Т е все события у нас асинхронные, поэтому их не надо ждать, а надо на них реагировать. Если событий нет, то система бездельничает и ничего не ждет, так как нам заранее неизвесно когда и какое событие будет. Подумайте над этим и смените логику скриптов. -------------------------- В качестве совета. Не надо делать кучу скриптов, пишите свои торговые стратегии в одном, так как все колбеки вызываются последовательно и им передается одно и тоже, то нет смысла множить копии колбеков в разных скриптах.
Добрый день. Списибо за ответ.
Как работет асинхронный коллбэк в других языках мне знакомо. Я посмотрел примеры написания скриптов. Там я увидел такого рода ожидания. Что меня смутило, но они сплошь и рядом.
Да, конечно, предсказать когда придет ответ невозможно. Тем более, что сервер может быть загружен.
У меня в данном случае возникает вопрос по логике работы функции main. Скажем я выставил заявку, далее я должен отреагировать на ее выполнение. Т.к. я ограничен потоком функции main, там у меня бесконечный цикл. Если я его прерву, то прервется скрипт. Получается мне надо именно в функии main делать отдельную проверку прихода колбэка или некой переменной записанной в коллбэк. Не важно где написана обработка коллбэка. Именно из-за этого бесконечного потока логика скрипта становится несколько извращенной.
Если я правильно понимаю, более менее правильный вариант - это в функции main делать проверку, если она не пришла, направлять код на очередныю итерацию, пока не придет ответ. Правда придется все же ограничивать время такого ожидания, т.к. можно проверять бесконечно.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
Пользователь
Сообщений: Регистрация: 27.01.2017
17.02.2018 18:50:11
Если я уберу if, то у меня будет задержка на каждой бумге. У меня код перебирает бумаги в цикле. Также и ожидание до 15 секунд несколько неприемлимо, т.к. все зависнет.
Хотелось бы при инициализации скрипта проверить на наличие данных, поставить заказ оных, если нет и уже идти по данным.
Проверьте в таблице транзакций терминала QUIK нет ли ошибки при отправке транзакций. Дело в том что рыночные заявки на покупку могут быть запрещены. Если так то в таблице транзакций Вы увидите сообщение об этом. Сообщите Ваш UID чтобы мы могли проверить права.
Добрый день. ID U0120866
Не уверен, что есть ошибки, т.к. если убрать обработку ожидания while trans_Status == nil do sleep(1) end, то все работает. Получается, что если ждать когда придет OnTransReply - зависает скрипт, т.к. ответа нет. Убираю ожидание все проходит без ошибок.
Как я и говорил выше, на срочной сеции этот же код работает нормально.
Что приходит в OnTransReply ?
Пользователь
Сообщений: Регистрация: 27.01.2017
15.02.2018 19:04:33
Добрый день.
Подниму старую тему.
Есть тестовый сервере (подключал тестовый период через заявку на доступ к учебному серверу QUIK компании ARQA Technologies сроком на один месяц). Т.е. это не брокер, как я понимаю.
Проблема в том, что на фондовой секции, заявки типа BUY по рынку (price = 0) не вызывают OnTransReply. Те же заявки на SELLнормально возвращают колбек.
Еще проблема в очень долгом появлении отправленных заявок в таблице заявок и сделок. Отлаживать алгоритм становится невозможным.
На срочной секции таких проблем не наблюдается.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
Пользователь
Сообщений: Регистрация: 27.01.2017
14.02.2018 19:31:30
Добрый день.
Подниму тему. Тоже столкнулся с пустым набром данных, если не открыт график. Вызов SetEmptyCallback() и задержка не помогают.
Правда иногда запущу скрипт - данные появились. В другой раз нет. Закономерности нет.
Пробовал увеличить время ожидания sleep до 1000 - все одно не помогает.
Вызов данных типовой:
Код
DS = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL)
if DS:Size() == 0 then
DS:SetEmptyCallback()
sleep(200)
end
Падения не должно происходить. приведите полный код скрипта индикатора и сообщите версию терминала QUIK
Версия 7.6.1.1 (Сбербанк выше не дает).
Собственно весь код работы с метками такой и есть
Код
function OnCalculate(index)
if index == 1 and Settings.ChartId ~= '' then
DelAllLabels(Settings.ChartId)
AddedLabels = {}
end
if index == 1 then
DSInfo = getDataSourceInfo()
min_price_step = getParamEx(DSInfo.class_code, DSInfo.sec_code, "SEC_PRICE_STEP").param_value
end
return myFunc(index, Settings, 37)
end
Внутри функции расчета данных выводится (обновляется) метка
Код
if AddedLabels[1] ~= nil then
SetLabelParams(Settings.ChartId, AddedLabels[1], label)
else
local LabelID = AddLabel(Settings.ChartId, label)
if LabelID ~=nil and LabelID ~= -1 then
AddedLabels[1] = LabelID
end
end
Код
if AddedLabels[2] ~= nil then
SetLabelParams(Settings.ChartId, AddedLabels[2], label)
else
local LabelID = AddLabel(Settings.ChartId, label)
if LabelID ~=nil and LabelID ~= -1 then
AddedLabels[2] = LabelID
end
end
Падение происходит не каждый раз. Иногда на третий раз применения параметров. Иногда на первый.
Отметки на графике QUIK средствами QLUA
Пользователь
Сообщений: Регистрация: 27.01.2017
14.08.2017 16:55:15
Цитата
Sergey Gorokhov написал: Здравствуйте, Вы можете выводить текст через механизм меток. По другому возможности нет.
Хорошо. Вывел метки индикатором.
Но у меня падает Квик при изменении настроек индикатора. При смене инструмента в привязанном окне падения не происходит, а при нажатии ОК в окне редактрирования, да.
Возникает вопрос - какой метод удаления меток правильный.
У меня падение происходит после добавления такого кода в OnCalculate:
Код
if index == 1 and Settings.ChartId ~= '' then
DelAllLabels(Settings.ChartId)
AddedLabels = {}
end
Также добавлена процедура:
Код
function OnDestroy()
if Settings.ChartId ~= '' then
DelAllLabels(Settings.ChartId)
AddedLabels = {}
end
end
Отметки на графике QUIK средствами QLUA
Пользователь
Сообщений: Регистрация: 27.01.2017
08.08.2017 14:30:32
Подниму тему.
А такое банальное действо как вывод текста в рамках индикатора недоступно? Простой пример - текущий ATR. Я не хочу выводить линию или что-то еще. Нужно вывести просто текст.
Добавление меткаи есть в скрипте, а в индикаторе? Так много информации надо выводить в рамках индикаора, где нет проблемы идентификации окна. Я в WLab писал индиктор зиг-заг с выводом процентов каждого движения и поиска моделей. Пости все было текстом в виде меток над свечками. Линий минимум.
Неужели нет этого?
Возвращаемые данные для отрисовки индикатора
Пользователь
Сообщений: Регистрация: 27.01.2017
07.08.2017 15:51:38
Добрый день.
Пишется индикатор с динамическим количеством линий. Можно ли вместо данных типа ruturn out1, out2, out3 вернуть массив {}. Соответственно, данные линий - это индексные данные массива.
Уж больно некрасиво приходится делать большое количество переменных с запасом.
Есть еще вариант динамического описания кода. Есть ли в интерпретаторе qlua execute("Текст выполняемого кода")?
Открытие заявки
Пользователь
Сообщений: Регистрация: 27.01.2017
16.07.2017 13:49:46
Если уж пошла речь про заявки, то, как мне кажется, самая важная функция отсутствует - ввод стопа одновременно с самой заявкой. В окне ввода заявки просто добавить раздел стопа. При торговле фьючерсами и другими высокорисковыми инструментами можно попасть на ситуации когда просто не успевашеь ввести стоп. Карман транзакций - это, конечно, хорошо, но почему же не сделать удобно. Как я понимаю, эту возможность просят столько людей и столько времени, что становится несколько неудобно за разработчиков. Я понимаю что монопольное положение на рынке позволяет, но все же...
Вилы Эндрюса, уровни Фибоначчи, веер Ганна.
Пользователь
Сообщений: Регистрация: 27.01.2017
23.03.2017 17:29:35
Добрый день.
Очень бы хотелось иметь достаточной простой интрумент как вилы Эндрюса. Также очень хочется существующие уровни Фибоначчи строить не только горизонтально, но и под любым углом. Тем самым получая наклонные уровни. А уж для полноты картины - веер Ганна был бы очень кстати.
Спасибо.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 27.01.2017
25.02.2017 20:37:42
Цитата
Николай Камынин написал: Быстрее будет, если вместо поиска свечки назад, просто запоминать индекс последней существующей свечки. При отсутствии свечки брать сохраненный индекс.
Возможно, но не всегда надо именно прошлую свечку. Часто надо -3, -2. Так что просто запоминать будет та еще конструкция. А эта функция универсальна, получив индекс бери любое значение свечи.
Хотелось бы иметь "железную" функцию получения ближайшей существующей свечи к идексу вниз и вверх.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 27.01.2017
15.02.2017 14:07:26
Ме помогли данные конструкции.
Нет свечки, тогда значению массива текущей даем предудыщее значение.
Код
if not CandleExist(index) then
CC[index] = CC[index-1]
return nil
end
Если надо получить значение пршлой свечки, то сначала находим ближайшую существующую прошлую, через эту функцию
Код
function FindExistCandle(I)
local out = I
while not CandleExist(out) do
out = out -1
end
return out
end
Код
local previous = index-1
if not CandleExist(previous) then
previous = FindExistCandle(previous)
end
if C(index) > C(previous) then