Saturn написал: А API MOEX позволяет получать доныне о сделках в реал-тайме или только исторические данные ?
В некоторых типах запросов можно получить текущий прайс. Однако халява без ограничений бывает только в сказках поэтому запросы обрабатываются с приличной задержкой. С другой стороны библиотека apimoex заточена именно на получение исторических и справочных данных, по этому и так хорошо.
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
24.03.2025 13:16:14
Цитата
SergeyCS написал: Торги, ведь, не каждые выходные - календарь через бумажку вводите или есть табличка?
Нет необходимости, достаточно status'а. А вот с определением некоторых параметров проблема т.к. для инструментов с разрешением торговли утром количество торговых часов в выходные и рабочие дни разное
Для писателей роботов
Пользователь
Сообщений: Регистрация: 03.03.2016
22.03.2025 09:06:07
Цитата
nikolz написал: Еще очень прикольно, что есть API и его раздают брокерам, а их клиентам - фиг вам, хотя за все платят клиенты. ----------------
Все как обычно - при наличии возможности отсекать лишних от кормушки. Я всю аналитику поэтому перевел на данные с API MOEX и Python. К сожаления для автоматизации торговли этого не достаточно
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
22.03.2025 08:50:23
Спасибо Nikolz.
Все равно пока флага в ТТТ нет приходится держать в скрипте костыль, который определяет выходной ли день. И если да , то ставит запрет на утреннюю сессию для всех инструментов пока это временное правило не отменит ммвб .
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
26.02.2025 09:55:29
Какая прелесть.
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
26.02.2025 08:05:58
Цитата
Karina Dmitrieva написал: Не понятно какой параметр мы должны добавить в ТТТ, чтобы Вы его получали с помощью getParamEx. Предложенные текущие параметры STATUS и TRADINGSTATUS судя по всему Вам не подходят. Параметры, которые Вы видите в ТТТ, едут напрямую с биржи в Рабочее место QUIK, соответственно если на бирже будет транслироваться отдельный параметр для инструментов дополнительной сессии выходного дня, то и мы сможем его показывать в Рабочем месте QUIK.
Мне жаль, что вам не понятно, попробую объяснить. В TTT есть параметры MORN_SESS_ALLOW и EV_SESS_ALLOWED которые по сути являются флагами разрешения каждого торгуемого инструмента для соответствующих сессий. Полагаю биржа не позднее пятницы такой флаг для торгов в выходные дни начнет отдавать и нам очень хотелось бы его увидеть в ТТТ не сильно позже .
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
25.02.2025 15:44:38
Цитата
Nikolay написал: Они рекомендую как раз два параметра STATUS и TRADINGSTATUS. Первый не все брокеры транслируют. Второй, вроде, все.
Если для параметра TRADINGSTATUS вернулся result == '1', то можно увидеть идут ли торги по значению param_value из возвращаемой таблицы. Здесь на форуме были как-то написаны значения.
Правда для срочного рынка надо еще смотреть на параметр CLSTATE.
Nikolay, у меня замены торговых инструментов делаются в предторговый период. При этом проверяются MORN_SESS_ALLOW, EV_SESS_ALLOWED и FULLCOVEREDFLAG. Я полагаю, что теперь этот набор необходимо дополнить чем-то типа SUNDAY_SESS_ALOWE, иначе будем городить костыли.
Как пользоваться параметром TRADINGSTATUS я как бы в курсе.
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
25.02.2025 15:12:39
Цитата
Karina Dmitrieva написал: Вам стоит уточнить у Вашего брокера будет ли предоставлен доступ к серверу и возможность торговли в выходные дни, а также об особенностях торговли.
Цитата
Ну прежде всего допуск тикеров к торговле в выходные т.к. биржа заявила что не все инструменты будут допущены.
Рекомендуем смотреть в ТТТ на следующие параметры "Статус торговли инструментом" (Status) и "Состояние сессии" (TradingStatus).
Большое спасибо Катерина за развернутый ответ. Я порекомендую брокеру уточнить у биржи будет ли ему представлен доступ к к торговле в выходные дни. А сам буду каждое субботнее утро в 7-00, 10-00 и в 19-00 проверять статус каждого тикера составлять список инструментов допущенных к торговле на отдельной бумажке и потом из нее создам для робота таблицу рекомендуемых тикеров на воскресенье. Но может все-таки это будет параметр для getParamEx?
Ну прежде всего допуск тикеров к торговле в выходные т.к. биржа заявила что не все инструменты будут допущены.
Кроме того прошла информация о том, что допуск к утренней и вечерней сессии в рабочие и выходные дни будут различаться. Надеюсь понятно, что такая информация торгующему скрипту тоже нужна.
Торговля в выходные
Пользователь
Сообщений: Регистрация: 03.03.2016
24.02.2025 18:34:21
Пожалуй достойно отдельной темы. Дождались...
"1 марта 2025 года на рынке акций Московской биржи стартуют торги в выходные дни в экспериментальном режиме"
Параметр в ТТК на эту тему будет.?
getParamEx актуальный список param_name
Пользователь
Сообщений: Регистрация: 03.03.2016
24.02.2025 18:08:13
Дождались...
"1 марта 2025 года на рынке акций Московской биржи стартуют торги в выходные дни в экспериментальном режиме"
Параметр в ТТК на эту тему будет.?
Установить ширину нулевой колонки таблицы, задать ширину колонки с номерами строк
Пользователь
Сообщений: Регистрация: 03.03.2016
22.02.2025 17:45:34
Никак. Вам разреши ширину менять, так вы ее и убрать захотите.
Имена параметров ТТП и других данных торгового сервера MOEX
Пользователь
Сообщений: Регистрация: 03.03.2016
20.02.2025 13:39:21
Цитата
Nikolay написал: Проблема не в инструкции, а в невозможности выполнить действия, сформулированные там. В данном руководстве предлагается использовать платный продукт, который на данный момент не поддерживается на территории где работает терминал. И даже если бы поддерживался, предлагается ради получения имён параметров купить программный продукт за 6000 руб. Спрашивается - это как понимать? Т.е. вывести набор полей в инструкцию - так сложно, что пусть пользователи сами с этим возятся.
написал: Еще бы кто рассказал как это выгрузить не имея Экселя (у меня Квик на Mac)
есть простой способ. настройки-программа-буфер обмена-формальные поля. далее капируем всё из таблицы и вставляем куда угодно. хоть в блокнот. там в полях столбцов будут нужные поля
написал: Искренне рад за вас. Как замечательно, что коммерческий продукт российской фирмы опционально требует софт, запрещенный производителем к распостранению на территории РФ.
Я уже не раз писал об этом. У меня, например, MS Office нет. Нет желания платить деньги, а устанавливать сломанное тем более. Тем более, что есть бесплатный облачный от того же MS. Раза два в год открыть документы достаточно. Но точно это не нормально - устанавливать тяжеленный пакет с потенциально опасными приложениями (вспоминаем про исполнение скриптов даже не открывая файл) только для того, чтобы узнать формальное описание полей. Мне проще собрать DDE сервер на С для этой задачи. И всё это потому что их описания нет в документации.
При этом и в Python и в Lua полно библиотек, которые выведут данные в .xls файл легко и просто, если уж приспичило. А уж чем этот файл открывать каждый сам решит. Дождутся пока им за обязательную установку Exсel Минцифры нахлобучит.
Искренне рад за вас. Как замечательно, что коммерческий продукт российской фирмы опционально требует софт, запрещенный производителем к распостранению на территории РФ.
Новый период и время проведения торгов на бирже.
Пользователь
Сообщений: Регистрация: 03.03.2016
14.02.2025 16:06:02
Еще бы кто рассказал как это выгрузить не имея Экселя (у меня Квик на Mac)
Новый период и время проведения торгов на бирже.
Пользователь
Сообщений: Регистрация: 03.03.2016
14.02.2025 13:59:44
Цитата
Станислав написал: Таблица текущих торгов MORN_SESS_ALLOWE и EV_SESS_ALLOWED это?
Кто-нибудь расскажите мне, убогому, где находится секретная документация включающая эти param_name. Раньше помню админ посылал на... QPile с этими вопросами. Но нет там этого.
Новый период и время проведения торгов на бирже.
Пользователь
Сообщений: Регистрация: 03.03.2016
09.02.2025 09:07:15
Прочел, что во втором квартале ммвб собирается ввести торговлю в выходные дни. Причем в эти дни доступна будет только дневная сессия и не для всех инструментов. Вот бардак-то получим...
Проблема с нажатием клавиш в таблице пользователя
Пользователь
Сообщений: Регистрация: 03.03.2016
14.01.2025 22:09:31
Привыкайте
Вопрос кодерам
Пользователь
Сообщений: Регистрация: 03.03.2016
30.12.2024 12:01:15
nikolz, извиняюсь что бестолково сформулировал вопрос . Я, балбес, разобрался. Вопрос закрыт.
В общем дело было так: Пыльный скрипт из чулана написаный несколько лет назад в первых строках которого было my_folder = getWorkingFolder().."\\scripts\\" Скрипт спокойно запускается и работает в Квике под Lua 5.3, однако при попытке проверки синтаксиса в SublimeText выдавался отлуп типа : ...attempt to call a nil value (global 'getWorkingFolder').
В итоге вылечилось как и должно было :) function OnInit() my_folder = getWorkingFolder().."\\scripts\\" ... end Причина тоже понятна - другая версия Lua в последнем релизе редактора.
Вопрос кодерам
Пользователь
Сообщений: Регистрация: 03.03.2016
29.12.2024 14:15:56
Даже в голову не приходило. Я под словом "пустышка" понял пустые функции с тем же именем в коде. Можно подробнее про создание dll и подключения его (куда?) для той же getWorkingFolder()?
Вопрос кодерам
Пользователь
Сообщений: Регистрация: 03.03.2016
28.12.2024 13:44:24
Ну как-то ручные манипуляции с пустышками по 3 тысячам строк кода не особо вдохновляют. И даже если собрать все q-функции в одном месте, то делать подмену после каждой правки то еще удовольствие. Возможность подключение к редактору qlua буду изучать. Я просто подумал может быть кто подскажет как в скрипте объявить функцию внешней и успокоить интерпретатор что, мол, она типа существует.
Вопрос кодерам
Пользователь
Сообщений: Регистрация: 03.03.2016
28.12.2024 10:46:46
Sublime Text 3 при проверке синтаксиса путем тестовой прогонки скрипта (Build) ругается на встроенные функции qlua, например на getWorkingFolder(). Понятно, что встроенный интерпретатор Lua их не знает и считает не объявленными глобальными переменными. Как его заткнуть? Мешает.
Как обрезать число типа float до 2х знаков после запятой
function round (num, idp)
-- Если num некорректное, вернуть как есть
if not num or type(num) ~ = "number" then return num end
-- Если idp не указан, использовать 0 (округление до целого числа)
idp = idp or 0
local mult = 10 ^idp
-- Округление для любого числа
local rounded = math.floor (num * mult + 0.5 ) / mult
-- Если число целое, убрать .0
if rounded = = math.floor (rounded) then
return math.floor (rounded)
end
return rounded
end
local rounded = math.floor (num * mult + 0.5 ) / mult для отрицательных чисел не корректно
Как обрезать число типа float до 2х знаков после запятой
Пользователь
Сообщений: Регистрация: 03.03.2016
21.11.2024 18:53:39
А в луа есть тип float? :).
Код
function round(num,idp) --функция округления
if idp and num and type(num)=="number" and type(idp)=="number" then
local mult=10^(idp or 0)
local x=0
if num>=0 then
x=math.floor(num * mult + 0.5) / mult
else
x=math.ceil(num * mult - 0.5) / mult
end
if x==math.floor(x) then x=math.floor(x) end -- обрезка нуля
return x
else
return num
end
end
MCFTR
Пользователь
Сообщений: Регистрация: 03.03.2016
10.10.2024 14:25:14
А в каком разделе данных находится индекс полной доходности MCFTRR ? Что-то я его никак не найду.
Пользовательская таблица.
Пользователь
Сообщений: Регистрация: 03.03.2016
24.09.2024 16:01:25
А разве еще не зарегистрировано? Ну тогда зарегистрируйте. Только не удаление, а отвязать его от ячейки и оставить в заголовке столбца.
Пользовательская таблица.
Пользователь
Сообщений: Регистрация: 03.03.2016
18.09.2024 08:18:43
Полагаю в вызове меню сортировки одновременно с вызовом колбэка при нажатии правой клавише мыши в окне ячейки таблицы.
Совсем не обязательно прикидываться не понимающим для того что бы послать пользователя, не стесняйтесь.
Да, я наверное не четко сформулировал вопрос. : Когда работа функции SetTableNotificationCallback будет приведена в соответствие с заявленной в официальной документации?
Пользовательская таблица.
Пользователь
Сообщений: Регистрация: 03.03.2016
10.09.2024 08:14:19
Господа разработчики,
объясните пожалуйста мне, убогому, как в функции SetTableNotificationCallback пользоваться событиями
QTABLE_RBUTTONDOWN и QTABLE_RBUTTONDBLCLK, если вы намертво прикрутили к правому клику ячейки менюшку сортировки
без возможности его отключения?
И вопрос даже не в том, нахрена нужно это меню, когда в клике по заголовку есть точно такое же, а в том, как теперь средствами Lua cделать
хотя бы простейшее меню Y/N? Проктологи, блт. ((
При смене инструмента графика в Lua индикаторе OnDestroy() не вызывается
Пользователь
Сообщений: Регистрация: 03.03.2016
27.08.2024 19:39:45
За то за это время разработчики сделали для пользователей очень удобную весч - якорек на графике для переключения инструменов. Классно, можно переключать десяток инструментов имея один открытый график. А то, что метки всех инструментов торчат на одном и том же графике по всем углам, это не проблема шерифа.
Тикер в индикаторе.
Пользователь
Сообщений: Регистрация: 03.03.2016
24.06.2024 10:27:43
Вылечилось перезаказом данных
Тикер в индикаторе.
Пользователь
Сообщений: Регистрация: 03.03.2016
24.06.2024 09:29:21
Рано я обрадовался. С утра и до открытия сессии getDataSourceInfo().sec_code возвращает пустое значение ((
Как на графике нарисовать свечу?
Пользователь
Сообщений: Регистрация: 03.03.2016
23.06.2024 16:51:26
Код
Settings= {
Name = "Test",
line =
{
{
Name = "Candle",
Color = RGB(255, 0, 0),
Type = TYPE_CANDLE,
Width = 1
}
}
}
function OnCalculate(i)
local candle={O(i),C(i),H(i),L(i),V(i),T(i)}
return ???
end
function Init()
return 1
end
Восемь лет назад разработчики сказали "никак в текущей версии". Версия тогда была 7-я. Что нибудь изменилось?
Тикер в индикаторе.
Пользователь
Сообщений: Регистрация: 03.03.2016
20.06.2024 16:07:26
Ну вот. Со второй попытки в коде появилась функция getDataSourceInfo() за подсказку которой могу поблагодарить. Остальной гарнир полностью лишний.
написал: Как в скрипте индикатора можно получить наименование тикера обрабатываемой свечи?
Нужно использовать функцию getSecurityInfo для получения информации о тикере. Вот пример:
local function getTicker(class_code, sec_code) local sec_info = getSecurityInfo(class_code, sec_code) if sec_info ~= nil then return sec_info.short_name else return nil end end
Из этого совета можно сделать анекдот : " Что бы получить имя тикера нужно в параметре функции указать sec_code". Такой же ответ мне выдал ChatGPT, вы не родственники?
Тикер в индикаторе.
Пользователь
Сообщений: Регистрация: 03.03.2016
20.06.2024 11:32:24
Споткнулся тут о проблему: в скрипте индикатора нужно обрабатывать свечи для бумаги прошедшей сплит по правилам, отличным от правил обработки других инструментов. Как в скрипте индикатора можно получить наименование тикера обрабатываемой свечи?
Снятие заявки от администратора (брокера)
Пользователь
Сообщений: Регистрация: 03.03.2016
14.03.2024 18:20:55
У меня ведется локальная таблица заявок поданных роботом. При исполнении заявки она из таблицы убирается. Периодически эта таблица проверяется на соответствие таблицы заявок квика. В случае несовпадения подается команда на удаление из списка или на снятие заявки в зависимости от типа расхождения.
Что изменилось в версии 11.1.1.11?
Пользователь
Сообщений: Регистрация: 03.03.2016
07.03.2024 15:41:08
Цитата
Nikolay написал: Так данные не обязаны прийти сразу. Установили соединение, ждем данные. Да. было бы хорошо иметь что-то определяющее приход данных. Но этого нет. Можно как минимум проверить, что загружены классы, счета, денежные лимиты. А потом уже заказывать потоки.
Не так. Всегда было: установили соединения, заказали данные, ждем данные. Я не спорю насчет необходимости наличия флага прихода данных, но с тем, что бы при заказе данных выявлялось отсутствие наименования класса столкнулся впервые за много лет.
Что изменилось в версии 11.1.1.11?
Пользователь
Сообщений: Регистрация: 03.03.2016
07.03.2024 11:43:42
Цитата
Nikolay написал: Не уверен, что здесь что-то изменилось. Это просто данные с сервера шли долго (справочники, данные таблиц и т.д.) после установки соединения. На форме уже столько раз об этом спорили, просили разработчиков дать методы определения прихода пактов данных.
Дак вот же оно, в логе - сообщение о коннекте через целую секунду после IsConnected()==1. Что мешает этот признак выставлять после сообщения?
Опять костыли строгать ((
Что изменилось в версии 11.1.1.11?
Пользователь
Сообщений: Регистрация: 03.03.2016
07.03.2024 10:31:11
Обнаружилось, что при запуске терминала вместе со скриптом и последующем коннекте функция IsConnected() возвращает значение 1 раньше чем устанавливается фактическая связь с сервером.
в итоге
Код
if isConnected()==1 then
message("IsConnected "..tostring(Isconnected()))
csi,error_desc=CreateDataSource("INDX", "IMOEX", INTERVAL_D1)
...
...
пишет в лог: 10:06:35 isConnected 1 10:06:35 csi Source error==>INDX - unknown class code. 10:06:36 Соединение установлено. Предыдущий вход был 07.03.2024 10:05:04 с адреса 92.62.59.149.
Что за ...? В этой части скрипта я уже лет пять ничего не трогал. Приходится перезапускать скрипт после коннекта.
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
Пользователь
Сообщений: Регистрация: 03.03.2016
05.03.2024 16:03:32
Цитата
Цитата
Вроде решил проблему принудительным обновлением CreateDataSource перед самым началом торгов.
Код
if SEC_CODES[ 'm15' ][i] = = 0 or SEC_CODES[ 'm15' ][i] = = nil then
SEC_CODES[ 'm15' ][i] = CreateDataSource (SEC_CODES[ 'class_codes' ][i],SEC_CODES[ 'sec_codes' ][i],INTERVAL_M15)
end
--- обновление свечей утром перед стартом
if (dt.hour = = 9 and dt.min = = 59 and dt.sec < 20 ) then
SEC_CODES[ 'm15' ][i] = CreateDataSource (SEC_CODES[ 'class_codes' ][i],SEC_CODES[ 'sec_codes' ][i],INTERVAL_M15)
end
local m15d = SEC_CODES[ 'm15' ][i]
SEC_CODES[ 'pre_m15' ][i] = m15d:C(m15d: Size () - 1 )
Но вопрос остается открытым, можно ли так обновлять результат CreateDataSource? Не занимает ли это дополнительной памяти?
Это не перед самым началом торгов, а по окончанию предторговой сессии.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
Пользователь
Сообщений: Регистрация: 03.03.2016
18.02.2024 21:33:35
Для того что бы понять нужна ли вам такая логика достаточно вставить в скрипт использующий эту библиотеку функцию выставления заявок и дать доступ к деньгам. Своим деньгам ;)
Тут соглашусь. Полагаю это только если не хватает смекалки использовать расчетную формулу.
Предлагаю реализовать
Пользователь
Сообщений: Регистрация: 03.03.2016
31.01.2024 12:49:35
Никому такая реализация нахрен не нужна, что с ней не так?
Более быстрый перебор ключ - значение в таблице
Пользователь
Сообщений: Регистрация: 03.03.2016
27.01.2024 22:15:02
Цитата
Nikolay написал: Для массивов так, конечно, быстрее. pairs применяют для хеш таблиц, где простой итератор не применить.
Я конечно пошутил, но все же полагаю что если (по возможности) использовать массив вместо хэш-таблицы то перебор будет быстрее. Во всяком случае такие выводы у меня получились при сравнении обработки таблицы обезличенных сделок с приличным объемом. in pairs проигрывает построчному перебору.
Более быстрый перебор ключ - значение в таблице
Пользователь
Сообщений: Регистрация: 03.03.2016
27.01.2024 12:54:19
А вот так:
for k=1,#t do local v=t[k] end
))
CalcBuySell. Что не так?
Пользователь
Сообщений: Регистрация: 03.03.2016
21.01.2024 19:26:37
Пардон, это я про то, что просто вывести message(tostring(qty).." "..tostring(com))
CalcBuySell. Что не так?
Пользователь
Сообщений: Регистрация: 03.03.2016
21.01.2024 19:22:49
Функция возвращает NUMBER,NUMBER. На всякий случай поставьте в message() tostring