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

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

Страницы: 1 2 3 След.
Каталог luac-скрипта, выполняемого через dofile
 
Можно ли внутри скомпилированного luac-скрипта, выполняемого через dofile, узнать его расположение?
Очевидный вариант - передать параметром из запускающего скрипта - не интересует.
Отладка QUIK 9.1
 
Цитата
Egor Zaytsev написал:
Инструмент?
А есть инструменты, на которых указанной проблемы нет?
Отладка QUIK 9.1
 
График цены и объёма
Отладка QUIK 9.1
 
Баг: на графиках в подсказке над свечами значение Volume показывает без разделителя разрядов.
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Цитата
Roman Azarov написал:
В виду данного нами ранее ответа
Цитата
Egor Zaytsev написал:
Технически может, но таких случаев в бою мы не встречали. Возможно и существует такая конфигурация, но надо у брокера выяснять и смотреть его настройки.
Однозначно сказать нельзя.

Другими словами в квике в общем случае нет однозначного соответствия торговый счет -> фирма?
Но в форме ввода заявки нет идентификатора фирмы. Как же квик определяет, по какой фирме совершать сделку?
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Цитата
Roman Azarov написал:
Функция ожидает на вход параметр firmid.
Не понял. Какая функция в моем коде ожидает?
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Будет ли корректно работать функция получения фьючерсных позиций без указания фирмы?

Код
function getFuturesHoldingEx(ACCOUNT, SEC_CODE, TYPE)
  if TYPE == nil then TYPE = 0 end
  local n = getNumberOf("futures_client_holding")
  if n == 0 then return nil end
  local index = SearchItems("futures_client_holding", 0, n-1, function (trdaccid, sec_code, type)
    if sec_code == SEC_CODE and trdaccid == ACCOUNT and type == TYPE then
      return nil
    else return false end
  end, "trdaccid,sec_code,type")
  if index then
    return getItem("futures_client_holding", index[1])
  else return nil end
end

Аналогично по денежным и фондовым позициям?
Время ММВБ, Servertime не предлагать
 
Цитата
Roman Azarov написал:
"биржевые имена" и "формальные заголовки" это не одно и то же
В том-то и вопрос.
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Цитата
Egor Zaytsev написал:
В связи с чем возник данный вопрос?
Для заданного кода клиента ид фирмы, определяется однозначно, например из таблицы "trade_accounts"?
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Торговому счету соответствует только ОДИН идентификатор фирмы или может быть НЕСКОЛЬКО ФИРМ для одного торгового счета?
Время ММВБ, Servertime не предлагать
 
Цитата
Roman Azarov написал:
Цитата
Незнайка написал:
А в QUIK TRADINGSTATUS: 0.000000 = "закрыта"
Уточните, пожалуйста, почему Вы так решили?
getParamEx


Цитата
Roman Azarov написал:
Цитата
Незнайка написал:
А как можно вывести по DDE параметры с биржевыми именами
Такая возможность отсутствует.
Так не надо давать нерабочих советов:
Цитата
Roman Azarov написал:
Формальные заголовки всех прочих транслируемых (в ваш терминал) параметров ТТП можно посмотреть используя вывод по DDE.
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
 
Здравствуйте.
Торговому счету может соответствовать только один идентификатор фирмы?
Время ММВБ, Servertime не предлагать
 
Цитата
Roman Azarov написал:
Состояние сессии - TRADINGSTATUS
Странно, в описании шлюза:

state Состояние сессии
Поле state может принимать следующие значения:
0 Сессия назначена. Нельзя ставить заявки, но можно удалять.


А в QUIK TRADINGSTATUS: 0.000000 = "закрыта"


Цитата
Roman Azarov написал:
Формальные заголовки  всех  прочих  транслируемых  (в ваш терминал) параметров ТТП можно посмотреть используя вывод по DDE.

А как можно вывести по DDE параметры с биржевыми именами
Цитата
Незнайка написал:
inter_cl_begin Время начала промежуточного клиринга
inter_cl_end Время окончания промежуточного клиринга
inter_cl_state Состояние промежуточного клиринга
?
Получение признака "Субординированный инструмент" в lua
 
Цитата
Andrey Bezrukov написал:
Вы можете обратиться к биржевым спецификациям
Ещё бы иметь список соответствий ключей QUIK <―> ТС
В таблицах после обновления не видны первые буквы тикеров в первой колонке, как исправить и есть ли формат таблиц?, В таблицах после обновления не видны первые буквы тикеров в первой колонке, как исправить и есть ли формат таблиц?
 
Цитата
Roman Azarov написал:
как Вы себе это представляете
Также, как была сделана эта ошибка.
Код
if (буквы первой колонки съехали за левый край) then (добавить к ширине колонки нужное количество пунктов слева) end
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
очередь реализована таким образом, что запись (из основного потока QUIK) и чтение (из потока main) в ней выполняется без синхронизации (никаких лишних переключений возможных при синхронизации)
Что имеется ввиду?
Пока объект помещается в очередь (буквально - записывается значение в таблицу Lua) или читается из очереди, другой поток стоит. От переключений не ушли ))
Создание таблицы Quik
 
Я - пользователь ПО, на форуме которого вы пишите. И высказываю своё мнение, что если кому-то одному не нравится существующая функциональность, то обычно пишут "добавить опциональную настройку".

Цитата
Евгений написал:
при создании других (стандартных) таблиц Quik логика отображения строк с вашей логикой не совпадает
Это не моя логика. Стандартные таблицы Quik заполняются сверху вниз (Раздел 3. Просмотр информации).

Цитата
Евгений написал:
самыми актуальными строками считаются верхние
Кем считаются? Пример такой стандартной таблицы?

Цитата
Евгений написал:
Под созданием таблицы и добавлением  строк я имею в виду создание таблицы при помощи Lua
Из первого сообщения это не очевидно.
SetSelectedRow(id, 1) в помощь.
Создание таблицы Quik
 
Цитата
Евгений написал:
каретка вертикального скролл бокса всегда съезжает вниз
Что логично: самые актуальные строки находятся внизу.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Когда в мейне байткод выполняется, квик не залочен.
Байт-код в мейнах нескольких скриптов выполняется параллельно?
Отладка QUIK 8.13
 
Цитата
Владимир написал:
Вы решительно надоели своей назойливой тупостью. С Вами разговаривать не о чем, Ваша "квалификация" многократно подтверждена здесь Вами же.
Кто бы говорил.
Есличё, в этом споре я ни за кого. Но афтару этих слов хочется ответить этими же словами в каждой ветке форума :lol:
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
Дело в том, что цикл вида:    =   ..   при большом количестве повторений (а я предполагаю что это может быть) в Lua заметно нагружает управление памятью.
Ваши слова заставили задуматься.
Что такое "нагружает управление памятью" я не понял. Но убедился, что при большом количестве склеиваемых строк (от нескольких десятков и выше) выгоднее (в плане скорости) все строки загнать в таблицу, а затем склеить в одну с помощью table.concat. При огромном количестве строк (более 100) скорость склейки в цикле существенно падает (нелинейно).
Правда, не знаю, для каких практических задач может потребоваться склейка огромного количества строк. Например, для сделок используется ~73 параметров, и запись в одну строку из массива строк с помощью table.concat всего лишь процентов на 10% быстрее, чем в цикле.


Цитата
TGB написал:
1) Сереализация таблицы:
tbl_to_str

Код
tbl_to_str(getItem('trades', 0), 'test.txt')
На выходе вместо Lua-таблицы получается какая-то нечитаемая "каша".
Странный выбор... или у нас разное понимание понятия "сереализация". Чем обусловлен выбор такого формата? Он ведь труден для восприятия.

Цитата
Нормальные герои всегда идут в обход
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
4) Сбор (быстрый) строки из массива строк:
       m_str_to_str_fast
Для этих целей table.concat есть.
Размер лота
 
Не то написал.
Хотел спросить: есть ли классы, где можно в заявке указывать нецелое количество лотов? (Не путать с классом неполных лотов)
Размер лота
 
Всегда ли размер лота - целое число?
Ошибка создания заявки. [GW][32] "Цена сделки вне лимита"
 
Цитата
Константин Рейм написал:
С чем это может быть связано
Может, с тем, что на опционах границы Макс./Мин. возм.цена постоянно меняются?
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
 
Из-за флуда пожелание так и не заметили.


Цитата
Артем написал:
Колбек указывает только на порядковый номер обновлённой свечки в источнике данных, но не указывает к какому источнику данных она принадлежит.
Цитата
Артем написал:
Гораздо лучше когда можно объявить колбек и отправлять его в датасорс, и при вызове он сам объявит к какому датасорсу он принадлежит.

Тут реально упущение разработчика.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
дайте юзеру возможность САМОМУ определять тип данных
Это в Lua есть.

Цитата
Владимир написал:
Добрая половина проблем тут же снимется.
Только не в вашем случае.
Ещё Крылов написал басню, про таких:

Код
К несчастью, то ж бывает у людей:
Как ни полезна вещь, — цены не зная ей,
Невежда про нее свой толк все к худу клонит;
А ежели невежда познатней,
Так он ее еще и гонит.
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Именно поэтому решения
Цитата
Артем написал:
есть определённый список таблиц, без данных из которых невозможно начать автоматическую торговлю. Вот их и ждём.
или
Цитата
swerg написал:
экспериментально установить, что через 5 минут после подключения и/или через 5 минут после начала торговой сессии - данные в терминале на нашем компьютере и нашем интернете - точно актуальные
ненадёжные.
Есть множество факторов, от которых зависит продолжительность загрузки данных, о многих мы и не подозреваем даже.
Ну получили вы 100500 строк в таблице спустя 5 мин. И что? Это все или еще не все?
Отладка QUIK 8.12
 
Цитата
Владимир написал:
никакая зависимость не может приводить к глюку, когда в таблице вдруг пропадает текст.
Проще на всех форумах кричать, что "язык плохой", "глюк в ПО", чем признать свою "криворукость", найти свою ошибку и исправить.
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Я про параметр CHANGETIME
Добавить в вывод GetParamEx() поле с указанием времени последнего обновления
 
Параметр "Время последнего изменения" - это время изменения чего? Транслируется биржей? Время по чьим часам?
Время ММВБ, Servertime не предлагать
 
Roman Azarov, я про замену инструментов не писал.
QUIK врёт, что SiH1 торгуется. Даже сейчас. У всех брокеров. И у вас на демо.
Время ММВБ, Servertime не предлагать
 
Ну вот QUIK опять врёт: торги по инструменту завершены, а он говорит, что сейчас "торгуется" и до 23:50

Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Артем написал:
не ждать заполнения таблиц которые однозначно будут пустыми
Как это в коде заранее запрограммировать?
Тут подразумевается, что пользователь пишет скрипт для автоматизированной торговли, не с тем, чтобы потом подсказывать ему: "тут ждать, тут не ждать".
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Сделок нет, потому что ждем, когда таблицы заполнятся. А таблица сделок не заполняется, потому что мы не торгуем, спим.
Нормально чё, курим бамбук, Артем сказал спать: "пока спишь, данные с сервера сами приходят".

Артем, подсказка: чтобы в таблице появилась сделка, надо ее совершить. По другому она ну никак не появится, хоть ты год жди.
Пожелания по развитию форума
 
Готов за скромную плату модерировать ваш форум.
А то он превратился в какую-то помойку. Вроде, уважаемая организация... в сфере IT даже, а форум, как в школьной локалке.
В каждой второй теме визги, какой язык лучший, и старпёры "уважаемые" программисты меряются пись, кто здесь "эксперт в Lua".

Предложения по оплате пишите в личку.
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Артем написал:
Пока в нём спишь, данные с сервера приходят
Так как же сделки будут, коль вы спите и не торгуете? Замкнутый круг получается.
ТС и спрашивает, когда уже можно просыпаться?
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Артем написал:
Можно проверять объём строк в таблицах и спать пока он равен нулевому.
Так во многих таблицах количество строк и будет нулевым, пока вы спите.
Откуда, например, взяться заявкам, сделкам, позициям по фьючерсам etc., если вы спите?

Цитата
Михаил Понамаренко написал:
Может у кого есть более подходящее решение?
Надо спросить автора функции getNumberOf. Уж он-то должен знать.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Сидят в песочнице зверята и хвастаютя:
"Я дальше всех умею прыгать", - говорит Зайчонок.
"А я быстрее всех бегаю в колесе", - говорит Бельчонок.
Медвежонок слушал-слушал и говорит:
"А я…, а у меня… А я вам щас всем пи[цензура] дам!"
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
Дело в том, что цикл вида:  <строка1> = <строка1> .. <добавляемая строка> при большом количестве повторений (а я предполагаю что это может быть) в Lua заметно нагружает управление памятью.
В чём это выражается?

Цитата
TGB написал:
Вы же можете получать свою строку следующим образом: local str = ""     for k,v in next, dump_tbl (<Параметры>) do   str = str .. v  end  или модифицировать код функции dump_tbl.
И там и там конкатенация строк. В чём профит?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
Комментариев обсуждения функции cоздания последовательности ключей я насчитал более двадцати. Это одна из самых простых функций из списка API  OS_Quesha
Ставить дополнительную библиотеку только лишь для создания уникальных ключей - не лучшее решение.

Цитата
TGB написал:
1. Запрос последовательности ключей (number):
Cl_LuaGL ()
Результат функции: number - глобальный ключ системы формата: <Номер запус-
ка/перезапуска системы >(старшие, оставшиеся разряды, начиная с 6-го )<Счетчик запросов
ключей после запуска/перезапуска системы>(6 десятичных разрядов)
<Номер запуска/перезапуска системы > сохраняется в каком-то файле на диске?
Тогда такой вариант можно и без библиотеки сделать. Прочитать из файла последнее значение, увеличить на 1:
Код
local LaunchNumber = (file:read("*n") or 0) + 1
Сохранить новое значение в файл. И далее использовать, например:
Код
LaunchNumber = LaunchNumber * 1000000

local trans_id = LaunchNumber + getUniqTransID()


Цитата
TGB написал:
Примером простой (классическая задача на рекурсию), но, наверное, полезной функции из раздела 10 является универсальная функция печати переменных dump_str.
Преобразование одной таблицы в другую... Сомнительная польза.

Цитата
TGB написал:
функцию dump_str можно вызвать в любой момент для любой глобальной переменной скрипта с тем,  чтобы распечатать ее с выдачей в журнал отладки.
Может, лучше сразу распечатать таблицу в виде строки, без конвертации в другую таблицу?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Незнайка написал:
Код
   local  trans_id_start  =   os.time ()  -   1546290000 
local  trans_id  =  trans_id_start  +  getUniqTransID()  
Вот так ID должны быть уникальны, независимо от количества запущенных роботов.
Наврал. Надо доработать алгоритм.

Цитата
Игорь Б написал:
Я уникальность обеспечиваю фиксированием момента времени включения скрипта, а не совершения транзакции. А уже дальше, если в скрипте есть сделка, то как обычно, к полученному случайному числу +1.
У разных скриптов не получатся одинаковые ID?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Nikolay написал:
Обычно делают номер как unix_time + mcs*1000.
Откуда mcs берёте?
В os.sysdate() в Windows меняются только миллисекунды. mcs в пределах 1-15 мс (в зависимости от кванта) будут одинаковы.

Можно использовать недокументированную функцию getUniqTransID(). Она даёт счётчик от 1, но при перезапуске квика счётчик сбрасывается.
Код
local trans_id_start = os.time() - 1546290000
local trans_id = trans_id_start + getUniqTransID()
Вот так ID должны быть уникальны, независимо от количества запущенных роботов.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
BlaZed написал:
Расчет на 10 одновременно работающих роботов, у каждого робота свой robot_id от 0 до 9
Есть идеи, как сделать уникальный trans_id в разных роботах без необходимости задавать свой диапазон (robot_id) внутри каждого робота (или их копий)?
Вместо trans_id_count можно использовать миллисекунды из os.sysdate(). Но
Цитата
Nikolay написал:
вероятность отправки транзакции двумя скриптами одновременно есть.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Nikolay написал:
Я слабо себе могу представить разработчика, использующего библиотеки без исходных кодов.
qlua.dll без исходников предлагается
Графики объема и изменение лотности, Изменении лотности по инструменту приводит к невозможности нормального анализа
 
Цитата
Kander написал:
дать возможность выбора в настройках приложения - Лоты/Валюта
Штуки/Лоты/Валюта?
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Цитата
Anton написал:
Исполнится, когда цена откатится от очередного пика.
Объясните мне, как заявка исполнится, если цена пойдёт в обратную от заявки сторону?
Такое возможно, если как вы написали, лимитник будет "подтягиваться за ценой", т.е. догонять рынок. Но такой трейл только ухудшает цену, нет?
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
В дополнение к предыдущему сообщению: я не понимаю как можно сделать трейл именно биржевой заявкой
Цитата
Anton написал:
чтобы лимитник провисел пару часов, двигаясь на каждый аптик
Т.е., физически такой алгоритм реализовать можно. Но полезность его вызывает сомнения.
При таком подходе
Цитата
Незнайка написал:
подтягиваться за ценой, когда та растет
цена исполнения будет ухудшаться.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Незнайка написал:
Цитата
Anton написал:
По задумке  подтягиваться за ценой , когда та растет, и стоять на месте, когда не растет. Исполнится, когда цена откатится от очередного пика.
Это трейл-стоп-лимит так должен работать.
Я не верно написал. Стоп-лимит также не может быть трейл. Еесли мы говорим о лимитной заявке, которая сразу выставляется на биржу, иначе, при чём здесь штраф за бесполезное выставление заявок?

Или я чего-то не понимаю.
Цитата
Anton написал:
Исполнится, когда цена откатится от очередного пика.
Объясните мне, как заявка исполнится, если цена пойдёт в обратную от заявки сторону?
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Anton написал:
По задумке подтягиваться за ценой, когда та растет, и стоять на месте, когда не растет. Исполнится, когда цена откатится от очередного пика.
Это трейл-стоп-лимит так должен работать.
Тейк-профит же исполняется против рынка.
Страницы: 1 2 3 След.
Наверх