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

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

Страницы: 1 2 3 4 5 След.
Баг SearchItems с datetime.mcs
 
Ещё один баг: если в указанном примере просить вместо "datetime.sec,datetime.mcs,qty,price" такие параметры "class_code,sec_code,datetime,qty,price", то на стеке окажутся типы ["string", "string", "number", "number"], то есть таблица datetime просто не передастся, и nil вместо неё тоже. А по мне так должна передаваться, ведь table это first-class citizen в Lua. Уважаемая поддержка, задокументируйте все ограничения на параметры SearchItems, пожалуйста. А ещё лучше, исправьте так, чтобы текущая документация отражала реальность.
Вопрос ко всем, кто знает: какую таблицу возвращает getQuoteLevel2 если нет bid или ask?
 
Стакан евротранса сейчас:
Код
{
 bid = "",
 bid_count = "0.000000",
 offer = {
  {
   price = "68.10",
   quantity = "38643",
  }, {
   price = "68.15",
   quantity = "10711",
  }, {
   price = "68.20",
   quantity = "21390",
  }, {
   price = "68.25",
   quantity = "17142",
  }, {
   price = "68.30",
   quantity = "24280",
  }, {
   price = "68.35",
   quantity = "9463",
  }, {
   price = "68.40",
   quantity = "27935",
  }, {
   price = "68.45",
   quantity = "17828",
  }, {
   price = "68.50",
   quantity = "32589",
  }, {
   price = "68.55",
   quantity = "81864",
  }, 
 },
 offer_count = "10.000000",
}

CalcBuySell и getBuySellInfoEx неправильно считают для фьючерсов с валютой шага цены отличной от SUR
 
Добрый. От этого не зависит неправильность результатов, я проверял на внутридневной позиции до введения единой сессии.

Только сейчас заметил, что в первом сообщении форум исправил аббревиатуру Единого Брокерского Счёта на "*" :)
CreateDataSource - возвращает дублированные свечи, CreateDataSource - возвращает дублированные свечи
 
Так всегда было, формат dat такой. И если юзать CreateDataSource с 4 параметром, и на графике, на котором этот 4-й параметр изображён, нажать F5, то в конец имеющегося датасорса придут все значения по параметру по очереди, как старые, так и новые. И так каждое нажатие F5.
Создание GUI приложений на Lua?
 
Этот форум посвящён торговой программе QUIK (которая поддерживает скрипты на Lua).

GUI на Lua сложная тема, простых решений нету.

Для себя я переписал библиотеку VCLua https://forum.quik.ru/messages/forum10/message78554/topic9136/?result=reply#message78554

Наиболее живая гуи либа наверно эта https://github.com/pkulchenko/wxlua
Баг SearchItems с datetime.mcs
 
Скрипт:
Код
function main()

SearchItems("all_trades", 0, getNumberOf("all_trades") - 1,
function(sec, mcs, qty, price)
    PrintDbgStr(tostring(sec))
    PrintDbgStr(tostring(mcs))
    PrintDbgStr(tostring(qty))
    PrintDbgStr(tostring(price))
    local ok, err = pcall(function() PrintDbgStr(string.format("%02d\t%06d\t%d\t%f", sec, mcs, qty, price)) end)
    if not ok then
        PrintDbgStr(err)
        return nil
    end
    return false
end,
"datetime.sec,datetime.mcs,qty,price")

local t = getItem("all_trades", 0)
PrintDbgStr(tostring(t.datetime.sec))
PrintDbgStr(tostring(t.datetime.mcs))
PrintDbgStr(tostring(t.qty))
PrintDbgStr(tostring(t.price))

end

Результат:

Код
1   23:03:44.848   31036   info.exe   14
2   23:03:44.848   31036   info.exe   1.0
3   23:03:44.848   31036   info.exe   2789.61
4   23:03:44.848   31036   info.exe   nil
5   23:03:44.848   31036   info.exe   C:\BCS_Work10\QUIK_BCS\lua\MA server\searchitems-bug.lua:10: bad argument #4 to 'format' (number has no integer representation)
6   23:03:44.848   31036   info.exe   14
7   23:03:44.848   31036   info.exe   0
8   23:03:44.848   31036   info.exe   1.0
9   23:03:44.848   31036   info.exe   2789.61

Во-первых, внутри SearchItems почему-то поле datetime.mcs судя по симптомам равно nil, а при получении через getItem оно равно 0.
Во-вторых, идёт смещение переданных параметров в функции: поле qty присваивается переменной mcs, поле price присваивается переменной qty, а переменной price ничего не достаётся.
В документации написано, что никакого сдвига не должно быть и mcs должно было бы получить nil

Quik 12.2.2.8, брокер БКС, подписка на обезличенные сделки по классу INDX (печатается первая сделка за день по IMOEX2).
Точный расчет комисии при сделке, Точный расчет комисии при сделке
 
Цитата
Quikos_1 написал:
Из какого именно ?
У меня в ежедневных есть строки про "урегулирование сделок". Но там не по каждой сделке, а по площадкам. Типа "вся фонда" за день, "вся валюта" за день. По фьючерсам "биржевые сборы", если по рынку заявки были.
Точный расчет комисии при сделке, Точный расчет комисии при сделке
 
Я в экселе считаю, но без маржинальных переносов. Брокер вам должен сказать, какая комиссия биржи у него в договоре с биржей. Например, у Финама и БКС разная комиссия биржи списывается (0.03% и 0.02%). И не со всех инструментов (например, родные фонды ликвидности по-другому считаются), не на всех тарифах (на тарифе Инвестор включено в стоимость). И сделки до 10:00 могут по-другому обрабатываться, рыночные заявки на вечерке тоже, айсберг-заявки... Это НЕ просто.
Qlua. Как получить тип бумаги по инструменту?
 
nikolz, список явно не соответствует цитате s_mike@rambler.ru
Qlua. Как получить тип бумаги по инструменту?
 
Цитата
s_mike@rambler.ru написал:
--   1 – Ценная бумага               1 – Акция обыкновенная
--                                 2 – Акция привилегированная
--                                 3 – Паи открытых ПИФов
--                                 4 – Паи интервальных ПИФов
--                                 5 – Паи закрытых ПИФов
--                                 6 – Депозитарная расписка
--                                 7 – Бумага иностранных инвестиционных фондов
--                                 8 – Ипотечный сертификат
--                                 9 – Корзина бумаг
--                                 10 – Дополнительный идентификатор списка
--                                 11 – ETC (товарные инструмент)
--                                 14 – Пай биржевых ПИФов
Это общедоступная информация? Где можно посмотреть источник?
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
 
Oleg Kuzembaev, не правильно, я ничего не пытаюсь отобразить визуально. Я говорю о LUA таблице, которая является результатом выполнения getBuySellInfoEx.
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
 
Добрый. Я в курсе, т.к. единственный результат поиска по форуму туда и привёл. Но должен он быть задокументирован и для Lua тоже, не только для QPILE и по-другому названной функции.
CalcBuySell и getBuySellInfoEx неправильно считают для фьючерсов с валютой шага цены отличной от SUR
 
Собственно сабж. Брокер БКС,  *  со срочным рынком, заявки на 2 млн руб ГО могу выставить в торговую систему как на лонг, так и на шорт, однако функции говорят, что не должен мочь:

Код
maxpos, commis = CalcBuySell(ticker.class, sec, nonfut and "1111111" or "SPBFUTxxxxx", accounts[ticker.class], last, buy, false)
print(maxpos, commis)
debugf(table.tovstring(getBuySellInfoEx("xxxxxxx00000", nonfut and "1111111" or "SPBFUTxxxxx", ticker.class, sec, last)))

Неправильный выход для EDH6:
Код
0   0.0
{
 balance = "0",
 can_buy = "0",
 can_buy_own = "0",
 can_sell = "23",
 can_sell_own = "0",
 client_type = "5",
 d_long = "0.050000",
 d_min_long = "1.000000",
 d_min_short = "1.000000e+50",
 d_short = "0.050000",
 is_asset_sec = "0",
 is_futures = "1",
 is_long_allowed = "0",
 is_margin_sec = "0",
 is_rest_short_sec = "0",
 is_short_allowed = "0",
 lim_long = "-1.000000",
 lim_short = "-1.000000",
 limit_kind = "0.000000",
 long_coef = "1.000000",
 long_wa_price = "0.000000",
 open_value = "0.000000",
 open_value_coef = "0.000000",
 position_valuation = "0.000000",
 profit_loss = "0.000000",
 share = "0.000000",
 short_coef = "1.000000",
 short_wa_price = "0.000000",
 spread_hc = "0.000000",
 value = "0.000000",
 value_coef = "0.000000",
}
и для SVH6
Код
0   0.0
{
 balance = "0",
 can_buy = "0",
 can_buy_own = "0",
 can_sell = "28",
 can_sell_own = "0",
 client_type = "5",
 d_long = "0.220000",
 d_min_long = "1.000000",
 d_min_short = "1.000000e+50",
 d_short = "0.220000",
 is_asset_sec = "0",
 is_futures = "1",
 is_long_allowed = "0",
 is_margin_sec = "0",
 is_rest_short_sec = "0",
 is_short_allowed = "0",
 lim_long = "-1.000000",
 lim_short = "-1.000000",
 limit_kind = "0.000000",
 long_coef = "1.000000",
 long_wa_price = "0.000000",
 open_value = "0.000000",
 open_value_coef = "0.000000",
 position_valuation = "0.000000",
 profit_loss = "0.000000",
 share = "0.000000",
 short_coef = "1.000000",
 short_wa_price = "0.000000",
 spread_hc = "0.000000",
 value = "0.000000",
 value_coef = "0.000000",
}
а также ртс, золото, нефть, газ...

Правильный выход для CRH6:
Код
2429   0.0
{
 balance = "0",
 can_buy = "2429",
 can_buy_own = "47",
 can_sell = "2429",
 can_sell_own = "0",
 client_type = "5",
 d_long = "0.080000",
 d_min_long = "1.000000",
 d_min_short = "1.000000e+50",
 d_short = "0.080000",
 is_asset_sec = "0",
 is_futures = "1",
 is_long_allowed = "0",
 is_margin_sec = "0",
 is_rest_short_sec = "0",
 is_short_allowed = "0",
 lim_long = "-1.000000",
 lim_short = "-1.000000",
 limit_kind = "0.000000",
 long_coef = "1.000000",
 long_wa_price = "0.000000",
 open_value = "0.000000",
 open_value_coef = "0.000000",
 position_valuation = "0.000000",
 profit_loss = "0.000000",
 share = "0.000000",
 short_coef = "1.000000",
 short_wa_price = "0.000000",
 spread_hc = "0.000000",
 value = "0.000000",
 value_coef = "0.000000",
}
и для SRH6
Код
533   0.0
{
 balance = "0",
 can_buy = "533",
 can_buy_own = "0",
 can_sell = "514",
 can_sell_own = "0",
 client_type = "5",
 d_long = "0.120000",
 d_min_long = "1.000000",
 d_min_short = "1.000000e+50",
 d_short = "0.125000",
 is_asset_sec = "0",
 is_futures = "1",
 is_long_allowed = "0",
 is_margin_sec = "0",
 is_rest_short_sec = "0",
 is_short_allowed = "0",
 lim_long = "-1.000000",
 lim_short = "-1.000000",
 limit_kind = "0.000000",
 long_coef = "1.000000",
 long_wa_price = "0.000000",
 open_value = "0.000000",
 open_value_coef = "0.000000",
 position_valuation = "0.000000",
 profit_loss = "0.000000",
 share = "0.000000",
 short_coef = "1.000000",
 short_wa_price = "0.000000",
 spread_hc = "0.000000",
 value = "0.000000",
 value_coef = "0.000000",
}

Неужели эти функции не умеют до сих пор валютный курс учитывать хотя бы приблизительно?
Поле is_rest_short_sec в выдаче getBuySellInfoEx не документировано
 
Собственно, сабж. Брокер БКС выдаёт таблицу с этим полем. В документе "Интерпретатор языка Lua.pdf" даже версии 12.8.5 это поле не описано.
Будет ли переход на Lua 5.5?
 
Надеюсь, что нет, но хотелось бы знать планы разработчиков.
Бесшовная склейка графика
 
Штатными средствами нельзя. Если знать формат dat файлов из папки archive, то можно. Но нужно ли? Возня лишняя в сравнении с tradingview
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
 
Да, надо ещё поделить на SEC_PRICE_STEP, который у эфира 0.1
Функции обратного вызова не вызываются одновременно?, Т.е. отследить изнутри OnTrade выполнение другого OnOrder невозможно?
 
Ни в коем случае нельзя делать sleep внутри колбэков квика, они работают в том же потоке, что и сам квик. Ожидание событий должно быть в main.
Таблица алгоритмических заявок в QUIK для Windows, Не очищается таблица алгоритмических заявок
 
Это вопрос к брокеру. Явно у него на сервере они остались.
Новые фьючерсы на биткойн и эфир, Правильный рассчёт стоимости лота
 
Цитата
maxlifter написал:
Добрый вечер ,какие параметры использовать в скрипте чтобы по фьючерсам BTZ5 И EHZ5  получалась стоимость 1 лота не 90 000 долл и 3000 долл а 90 и 30 долл ?
getParamEx на STEP_IN_CURRENCY по обоим тикерам возвращает 0.001, ну и далее умножить на цену
Как создать мост QLua-скрипта с другим C++ приложением? Вопрос концепта., Предлагаю такой подход, но есть вопросы.
 
Цитата
A.T. написал:
Причем, мне не критично к скорости, да и к объёму.
Тогда не понятно, чем Вас файлы не устраивают, особенно в RAM диске. Это даже не потребует dll для QLua. А протокол на запрос-ответ понадобится в любом случае.
Ошибка в отображении данных графика объема торгов: Сбербанк, График объема торгов в системе QUIK не соответствует данным с сайта Мосбиржи
 
Цитата
ДмитрийК написал:
Прошу пояснить такое расхождение в данных.
То, что в квике, надо умножать на lotsize, чтобы получить объём сделок в акциях. 06.06.2025 lotsize на сбере был 10 (сейчас - 1). Это объясняет расхождение порядка. Почему на сайте биржи написано 102 026 188 (акций), в tradingview написано 102 022 760, а в Финам (в транзаке) и БКС (квике) указано 10 200 518 лотов (т.е. акций 102 005 180) я не знаю. Может быть по-разному учтён аукцион открытия.
О торговле фьючерсами и ГО
 
Цитата
Ziveleos написал:
Пока позиция +3 ещё не закрыта, деньги под ГО остаются заблокированы, задействовать их под +6 нельзя.
Если бы всё было так просто. Когда я выставляю заявки в обе стороны по одному инструменту, у меня блокируется не сумма ГО покупателя и ГО продавца, а только ГО продавца (как бОльшее из двух). Библиотека расчёта лимитов умеет и такое. Поэтому развернуть позицию может быть и можно без суммы ГО на счету. Это в целом вопрос к брокеру, а не к квику.
О торговле фьючерсами и ГО
 
Сергей Че, это вы у брокера спросите. У него в расчёте лимитов могла быть ошибка. Но для обращения Вам следует знать точные цены и время заявок, т.к. ГО иногда зависит от цены.
Кто меняет разрешение системного таймера?
 
Цитата
Serge123 написал:
Может быть, Квик ставит разрешение в 1 мс, когда запущены скрипты Луа? Я как раз перед выставлением заявки их запускаю.
квик таймер не меняет, а скрипты могут. У меня почти все скрипты ставят таймер на 0.5мс как раз
Отсутствие сделок в таблице сделок
 
Izotova Liliya, в архиве версий https://arqatech.com/ru/support/files/quik-workstation/ имеет смысл такие изменения указывать...
Поменяйте вкладки графиков пожалуйста !, Поменяйте вкладки графиков пожалуйста и способ переключения между ними
 
Поменйте вкладки пожалуйста, по первым девяти вкладкам можно переключаться клавишами (Alt+номер 1-9)
Рыночная заявка для торговли фьючерсами
 
0 для срочки для рыночной сделки нельзя ставить, на сколько я помню.
Рыночная заявка для торговли фьючерсами
 
Я использую type="M" и завышенную цену одновременно
Убрать выходные дни с графиков
 
Цитата
Graf Graf написал:
Напишу и в этой ветке. Темы одинаковые.
Уважаемые разработчики, когда примите решение и всё-таки датите возможность убрать с графика "торги выходного дня"? Даже в Trading View смекнули, что не надо транслировать этот мусор, и не показывают субботу и воскресенье на графиках наших фьючерсов. Или вам МосБиржа не дает это сделать?
TV на внутридневных тф показывает всё на выходных. А на дневном и выше они по торговым сессиям формируют свечи (то есть открытие по фьючерсам считается от 19:05 предыдущего дня), а не по календарным, поэтому этих дневных свечей там нет.
Графики и данные свеч с сайта MOEX не совпадают с графиками в QUIK
 
И ещё можете посмотреть, какие графики в мобильном приложении ВТБ
Графики и данные свеч с сайта MOEX не совпадают с графиками в QUIK
 
109640 - закрытие торгового дня, 109000 - закрытие календарного. Можете спросить в обращении к мосбирже, почему такое различие. Например, по акциям типа GAZP мне ответ приходил, что графики составляются по календарным дням, поэтому есть на графике выходные дни.
ВТБ разница в объемах
 
Индикатор объёма показывает объём сделок, не заявок. Все сделки были по 93.05 в 6:59. Заявки в стакане могут перемещаться намного быстрее, чем вы видите обновления этого стакана.
ВТБ разница в объемах
 
Вы не учитываете свечу в 6 часов, считая, что первый час - это седьмой
Вызов getDataSourceInfo() из Init() в Lua индикаторах
 
Цитата
Артем написал:
да, и у меня так, но в Settings у вас ничего не выводится , то есть налету поменять нет возможности, нужно менять в базе данных, и с лагом уровни прорисуются, вопрос в другом как программно изменить Settings, вне Init
Если на каком-то одном инструменте надо было вручную добавить несколько уровней, я использовал вкладку "Уровни" для цены инструмента в настройках графика.

В чём вопрос я понимаю, но считаю, что так делать - это противоестественно. Settings для статических настроек, туда ничего не выводится, динамические внутри скрипта должны работать. В TradingView так же, кстати. Не слышал о системах, где было бы иначе. Зачем в Settings выводить численно значения уровней, если они и так на графике видны? Если override нужен, ну так только его в Settings легко оставить - если в поле ноль, возвращать автоматический уровень (который берётся не из Settings, а внутри OnCalculate), если не ноль, то возвращать это ненулевое значение
Вызов getDataSourceInfo() из Init() в Lua индикаторах
 
У Вас уровни могут в любой момент поменяться что ли? Я их раз в час рассчитываю отдельным скриптом (сервер) и клиенты (индикаторы) по факту раз в час смотрят в хранилище уровней внутри OnCalculate и берут оттуда ближайшие 2-4 верхних и нижних. В моём случае хранение через C++ структуры данных внутри одной DLL, которую грузят серверный скрипт и клиентские индикаторы.
Консольный QUIK
 
Цитата
Ziveleos написал:
Если начинает долго загружаться, запускаю скрипт, обрезающий графики до приемлемого размера.
угу, я так каждую неделю делаю
Консольный QUIK
 
Цитата
Verticalx написал:
И что делать в этом случае?
Если Вам нужна история дальше, чем 3000 свечей, для всех открытых графиков, -- страдать. Если не нужна, можете удалить или переименовать (чтобы назад можно было вернуть) папку archive внутри папки с квиком
Консольный QUIK
 
Verticalx, долгая загрузка квика обычно значит давнюю историю в archive/*.dat файлах
Индикатор с большим числом линий.
 
Ещё немного потестил в ситуации: луа 5.4, квик 12.2.2.8, торги не идут.
добавляю скрипт на чарт с сбером, галки автомасштабирования и последнего значения сняты, на таймфрейме A, ничего не показывает - меняю таймфрейм на B - тогда показывает все линии, меняю таймфрейм на A - ничего не показывает, меняю таймфрейм на B - ничего не показывает, меняю на C - показывает все линии. То есть на каждом тф, кроме первого, линии показываются ровно один раз. Но квик не виснет и не тупит. Поведение при этом не зависит от количества линий, т.е. при local lines = 1 тоже самое.

То есть SetRangeValue точно бажная функция.
Индикатор с большим числом линий.
 
Nikolay, версия с cache на SBER, 15 ничего не показывает у меня при любом delta (хотя SetRangeValue возвращает true), и не вешает терминал. Я тестил без подключения к серверу.
Неправильный расчет дневных индикаторов из-за неправильного учета данных сессий выходных дней
 
Сергей, я задавал подобный вопрос бирже через форму обратной связи. Они сказали, что графики на их сайте строятся по данным календарных дней, а не торговых дней. Соответственно, такие данные и есть официально правильные, а остальные - нет.
Замечания по реализации в QUIKе обработки заявок (и, наверное стоп-заявок).
 
В доках не написано, но на сколько я понимаю, в SearchItems синхронизирован доступ к таблицам из разных потоков, в отличие от остальных функций доступа, поэтому может быть такой эффект от getItem
Некорректно работает скрипт, обнуляется на срочном рынке
 
На такие вопросы Вам только разработчик скрипта ответит. Если Вы, конечно, сюда код скрипта не запостите.
Открыть скриптом окно стакана
 
Если на той же вкладке есть таблица текущих торгов с теми же инструментами, то я умею делать программно вызов стакана квика (через dll). Другое дело, что я этим не пользуюсь, т.к. свои стаканы запрограммировал.

ИИ часто в коде подставляет функции, которых на самом деле нет. Когда ему об этом говоришь, можно попросить его написать такую функцию. Конечно же, в написанном снова могут оказаться несуществующие функции.
Замирание на полминуты в момент выставления заявки на срочке
 
ISR, а если отключить флажок, нажать левой кнопкой мыши на области графика с ОИ и потом нажать F5 на клавиатуре, происходит заполнение пробелов ОИ?
получение параметров индикатора, обращение к line
 
Цитата
Anton Belonogov написал:
funduk, добрый день.

Впоследствии было зарегистрировано пожелание на то, чтобы свойства линий всегда возвращались в OnCalculate.
По этой причине документация не была изменена.
Добрый. Учитывая, что столько лет это пожелание не реализовано (и скорее всего никогда не будет уже), конечно же имеет смысл исправить документацию.

Если всё-таки займётесь свойствами линий, очень бы хотелось изменять цвет из скрипта (как в TradingView, чтобы часть точек была одного цвета, а часть другого; актуально, например, для максимума/минимума из 10 линий, чтобы понимать по цвету, какая из линий выбрана).
В смысле нагрузки на систему, видимо, дешевле всего экспортировать функцию типа SetColorFromNow, чтобы юзер понимал, что смена цвета совсем не бесплатна.
получение параметров индикатора, обращение к line
 
Цитата
Michael Bulychev написал:
Добрый день.
Действительно, параметры линий обратно в скрипт не передаются. Для некоторых индикаторов это просто бессмысленно и затратно по ресурсам.
мы обязательно отразим этот момент в документации.
Почти 10 лет прошло. Не пора ли задокументировать этот факт наконец?
Внешний вид
 
Если там не получается, то никак нельзя.
Внешний вид
 
Редактирование настроек графика - Диаграмма - Внешний вид - Порядок отображения слоёв данных
Страницы: 1 2 3 4 5 След.
Наверх