funduk (Автор тем)

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

Страницы: 1
Покупки через IPO в таблице сделок отсутствуют
 
ТП БКС говорит, что QUIK не предоставляет такую возможность, как показ сделок IPO в таблице сделок. Так ли это? Есть ли в планах добавлять такую функциональность?
Новая версия VCLua - библиотеки для GUI
 
Зарелизился сабж 0.9.2
Качать
Писать багрепорты здесь, примеры тут

Из нового, помимо новых контролов, их свойств, и обновления версии Lazarus:
  1. По моей просьбе появилась поддержка виндовой кодировки (надо написать VCL.setCPWin(true) после стандартной инициализации, которая показана в примерах по ссылке выше). Реализована она конвертацией в UTF8 и обратно для всех строк, идущих внутрь GUI.
  2. Форма нормально работает в main(), то есть не в главном потоке. Надо просто создавать форму в main() и потом в цикле делать VCL.Application():ProcessMessages(). Вроде раньше с этим были проблемы.
  3. Я так понял, что изменилось создание меню. Пример. Действия заворачиваются внутрь Action вместе с иконкой и горячей клавишей.
  4. Также обновляется GUI утилита для создания форм прямо на Lua (т.е. без установки Free Pascal) и сохранения формы в JSON. Сохраняется в UTF8, но если файл пересохранить в CP1251, загрузить в скрипте в квике и использовать пункт 1 списка, то русский язык должен быть на месте. Из минусов, утилита поддерживает не все доступные в VCLua контролы, и не все их свойства позволяет редактировать. В частности, пока нельзя задать иконки, картинки. Я утилиту запускаю через интерпретатор, перейдя в папку vt-form\vt-form\dist54\ и выполняю там команду путь-до-луа\qlua\bin\lua54.exe vt-form.lua
Автор сейчас активен на github и жаждет багрепортов.
Скрытый текст
Нет документации на некоторые функции в индикаторе
 
Изнутри OnCalculate напечатал _G, увидел неописанные в документации функции и константы. Интересует документация функций из списка:
Код
Average = function:([C]),   
BAR_CLOSE = 4,   
BAR_HIGH = 2,   
BAR_LOW = 3,   
BAR_MEDIAN = 6,   
BAR_OPEN = 1,   
BAR_TYPICAL = 7,   
BAR_VOLUME = 5,   
BAR_WEIGHTED = 8,   
HV = function:([C]),   
LV = function:([C]),   
M = function:([C]),   
TP = function:([C]),   
T_ACCOUNT_BALANCE = 22,   
T_ACCOUNT_POSITIONS = 7,   
T_ALL_TRADES = 6,   
T_CCP_HOLDINGS = 23,   
T_CCP_POSITION = 24,   
T_CLASSES = 2,   
T_CLIENT_CODES = 5,   
T_DEPO_LIMITS = 13,   
T_FIRMS = 1,   
T_FIRM_HOLDING = 21,   
T_FUTURES_HOLDINGS = 9,   
T_FUTURES_LIMITS = 10,   
T_INDICATIVE = 25,   
T_MONEY_LINITS = 12,   
T_NEG_DEALS = 18,   
T_NEG_DEAL_REPORTS = 19,   
T_NEG_TRADES = 17,   
T_ORDERS = 8,   
T_PRICERANGE = 26,   
T_RM_HOLDINGS = 27,   
T_SECURITIES = 3,   
T_STOP_ORDERS = 16,   
T_TRADES = 15,   
T_TRADE_ACCOUNTS = 4,   
W = function:([C]),   
getUniqTransID = function:([C]),   
isLimitsInLots = function:([C]),   
message_ex = function:([C]),   
prec_time = function:([C]),   
Что быстрее - 1 индикатор с 20 линиями, 4 индикатора с 5 линиями или 20 с одной?
 
Собственно, вопрос в названии темы. Во всех случаях индикатор для каждой линии считает одну и ту же функцию, например, EMA50.

Адресуется разработчикам (что они рекомендуют исходя из архитектуры, были ли у них внутренние тесты, что быстрее работает) и к тем пользователям, кто этот вопрос проверял.
В английской версии 10.1.2.2 не работает часть команд меню System
 
Собственно, сабж. Сменил язык (хотел в кармане транзакций и в .tri файле видеть английские названия и значения полей, а не русские), QUIK рестартовал, а теперь не могу (даже после ещё одного рестарта):
  1. Сменить язык назад (при нажатии на System-Settings-Language settings... ничего не происходит)
  2. Соединиться с сервером (System-Connect... или Ctrl+Q или кнопка на панели -- ничего не происходит)
  3. Вызвать настройки (F9 или System-Settings-General Settings... -- ничего не происходит)
Для теста хотелось бы соединиться с сервером. Есть способ это сделать?
Если нет, где найти ВСЕ английские названия параметров транзакций? Например, для "Тип стоп-заявки=Тейк-профит и стоп-лимит" есть параметр "Флаги=258", но в описании в "6.9 Импорт транзакций" я его не вижу даже в последней версии квика.
Баг документации - нет актуальных названий параметров param_name в getParamEx
 
Здравствуйте.
Версия 10.1.2.2.

В документации к getParamEx, getParamEx2, ParamRequest, CancelParamRequest и CreateDataSource фигурирует имя параметра Таблицы текущих торгов, но нигде в документации по qlua нет ни списка этих параметров, ни информации о том, где их брать. Благодаря этому сообщению выяснилось, что есть некий список в документации к qpile, но там он не полный. В частности, из сообщения видно, что существует параметр COMPLEXPRODUCT (и вроде бы он, равно как и его имя, устанавливается биржей), а в списке параметров для qpile в разделе 8 info.chm такого параметра нет, равно как и QUALIFIED.

Просьба исправить документацию, и пояснить, где взять полный список этих параметров.
Баг - изменение номеров старых свечей
 
Версия 10.1.2.2
Дано: график с двумя областями, в одной инструмент имеет свечек больше,  чем во второй, из-за чего во второй области, когда всё загружено, видны  гэпы. Пример - EUR (данные с форекса у меня транслируются откуда-то) и  SiU3 (или фьючерс и базовый актив, или RTSI + IMOEX2). Таймфрейм 1 или 5 минут, торги активны. На том инструменте, где есть гэпы,  ставим два индикатора с одинаковыми параметрами (кроме может быть визуальных) - встроенный SMA и SMA из официальных примеров индикаторов, с изменением для определения скачка номеров свечей:
Код
function OnCalculate(Index)
   if prev_index and Index > prev_index + 1 then
      message(string.format("gap at %d %s, jump from %d", Index, os.date("%c", os.time(T(Index))), prev_index), 1)
   end
   prev_index = Index
   return tonumber(Settings.Horizontal_line),ConvertValue(Settings,func(Index, Settings))
end
Этот индикатор должен быть одним из верхних (значит - приоритетных) в области.
Нажимаем Ok после добавления индикаторов. Если в сообщениях не появилось про гэпы ничего, но они есть, меняем таймфрейм туда-сюда между 1 и 5 минутами, рано или поздно у меня появляется сообщение в духе:
gap at 6061 Fri Jun 16 14:40:00 2023, jump from 4139
Почему? Потому что, видимо, квик случайным образом выбирает, какую область графика рисовать первой: ту, где гэпы возникнут после отрисовки всех областей, или ту, где свечей "больше". Если сначала рисовать более "полную" область, то во второй области индекс не прыгает, просто для отсутствующих свечей будет C(Index) = nil. Если сначала рисовать менее полную область, то индексы сначала не прыгают, все C(Index) ~= nil, потом грузится вторая область, потом при новых данных OnCalculate(Index) начинает получать внезапно большой Index (дебаг принты через PrintDbgStr номеров свечей и их времени):
Код
[21996] 4460 2023-06-16 12:54:00
[21996] 4461 2023-06-16 12:55:00
[21996] 4462 2023-06-16 12:56:00
[21996] 10813 2023-06-16 12:56:00
[21996] 10813 2023-06-16 12:56:00
[21996] 10813 2023-06-16 12:56:00
... и при обращении к старым индексам уже можно получить C(i) == nil, т.к. попадёшь на гэп.

Так вот, я считаю такое поведение багом, ибо это препятствует кэшированию результатов по индексам. Например, начиная с этой свечи данные индикаторов из моего примера начинают различаться, встроенный SMA продолжает быть равным, скажем, аналогичному от TradingView, а индикатор из официальных примеров начинает немного врать. Врёт он потому, что внутри себя создаёт таблицу, индекс которой зависит от номера свечки.

Как такой баг победить? Предлагаю сначала для всех областей всех графиков "вычислять" только price (и может быть volume). После этого должно быть понятно, где будут пропуски свечей на каких областях, т.е. после этого индексы ВСЕХ старых свечей должны быть фиксированы до следующего добавления какой-нибудь области в какой-нибудь график. После этого можно вычислять и отрисовывать остальные индикаторы.
Альтернативно - дать юзеру опцию вычислять свои индикаторы в конце цикла вычисления по данному графику (вне зависимости от того, высоко он должен быть отрисован или нет), чтобы он вычислялся в ситуации, когда старые свечки не могут поменять свой индекс, и можно было бы кэшировать.
Баг - отсутствует константа TYPE_BAR
 
Со времён этого поста ничего не поменялось, судя по всему.

Если в файле индикатора задать тип линии по умолчанию так
Код
Type = TYPE_BAR
, то при добавлении индикатора тип линии окажется просто "Линии", то есть TYPE_LINE. В документации "Интерпретатор языка Lua. Руководство пользователя. Версия 10.1" на странице 113 такая константа указана, и сказано, что она рисует бары, а не линии. Я знаю, что полноценные бары нельзя пока передать на рисование, но зато если выбрать "Бары" или "Свечи" через меню, то индикатор рисуется наиболее подходящим мне "пунктиром". Если выбирать "Пунктир"  или "Пунктир-точка", то при увеличении масштаба индикатор сливается в линию быстрее, чем если рисовать его "барами" или "свечами".
Предлагаю убрать эту константу из документации или добавить равной TYPE_CANDLE, так как визуально сейчас не отличаются индикаторы, нарисованные "барами" и "свечами"
Страницы: 1
Наверх