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

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

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 69 След.
Отображение количества купленных акций.
 
Цитата
Сергей написал:
Эти показатели можно сформировать из таблицы обезличенных сделок. Там возле каждой сделки указано время сделки, количество акций в сделке и была эта сделка по цене купли или продажи. Поэтому данные показатели можно сформировать как для любого периода времени на графиках, так и суммарное количество за день.
Безусловно можно. Но  Квик создан для подачи заявок брокеру и поэтому бесплатный.
То, что Вы хотите делать разработчики  *  клиентов брокеров не будут.
Они получают свою зарплату за разработки для брокеров и других проф участников рынка, которые покупают их софт.
Бесплатно лишь сами знаете где и что.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Прислушался к советам, поднял старые наработки, сам поднапрягся,
( ну не все могут быть хирургами или хорошими адвокатами, а я не программист пишу потихоньку для себя).

Спрятать удалось пока только поиск начальной точки для входа в режим теста.
Оказалось не все так прозаично, Изменили время начало торгов на секции срочного рынка,
в виде добавления еще одной сессии "Аукцион открытия". Полезно делать ревизию старым скриптам!
Соответственно изменилась индексация на графике в квике. Несколько удивил подход разработчиков?

Вот так теперь выглядит начало торгов на разных тайм фреймах:

1 минута;      20230824;  085900;  83.09; 83.1;   83.09
5 минут;        20230824;  085500;  83.09; 83.1;   83.09
120 минут;    20230824;  080000;  83.09; 83.17; 82.7
1440 минут;  20230824;  000000;  83.09; 83.63; 82.16

т.е. нет единого времени открытия в квике.

Заглянул на сайт ММВБ, а у них вообще значится "Аукцион открытия" 08:50.

Про свою реализацию, сделал через замыкание. запихнув все интервалы готовые. и что б потом можно добавить свои.
На вход подаем дату и время желаемого начала теста, на выходе массив необходимых индексов все банально.
На самом деле единое время есть Это 90000.
Для свечей - это время закрытия свечи.
Все свечи считаются от 00000.
Чтобы определить время открытия свечи начала,
надо найти время начала последней свечи в которую попадает 90000
-------------------
т е получите именно то что написали:
1 минута; 20230824; 085900; 83.09; 83.1; 83.09  - 90000-100
5 минут; 20230824; 085500; 83.09; 83.1; 83.09     - 90000-500

для 120 минут свеча в которую попадает 90000 начинается в 80000 и кончается в 100000.
120 минут; 20230824; 080000; 83.09; 83.17; 82.7  

Для тайма день свеча одна и 90000 всегда внутри . 00000
1440 минут; 20230824; 000000; 83.09; 83.63; 82.16
Что быстрее - 1 индикатор с 20 линиями, 4 индикатора с 5 линиями или 20 с одной?
 
без плеча и без реинвестирования.
Что быстрее - 1 индикатор с 20 линиями, 4 индикатора с 5 линиями или 20 с одной?
 
Цитата
funduk написал:
nikolz, я думал, у Вас всё на роботах, и индикаторы оказываются не нужны. Зачем Вы их используете, если не секрет, да ещё 20 линий в одном индикаторе?
Специально для Вас показываю:


Нижний график - прибыль лонг и шорт за месяц.
Что быстрее - 1 индикатор с 20 линиями, 4 индикатора с 5 линиями или 20 с одной?
 
Цитата
funduk написал:
nikolz, я думал, у Вас всё на роботах, и индикаторы оказываются не нужны. Зачем Вы их используете, если не секрет, да ещё 20 линий в одном индикаторе?
Я, например, облако скользящих строю. А на графике (вместо чисто внутри робота) для наглядности, т.к. ещё только приступаю к автоматизации ТС.
Для торговле одним инструментом я делаю робота всегда в индикаторе.
Писал об этом на форуме.
 
Что быстрее - 1 индикатор с 20 линиями, 4 индикатора с 5 линиями или 20 с одной?
 
1 c 20.
Как правильно установить и запустить несколько терминалов QUIK на одном компьютере для доступа к разным счетам одного брокера?
 
Цитата
Blackninja написал:
Добрый день!

У меня в одном брокере имеется несколько брокерских счетов: ИИС и обычный брокерский счет. Для каждого счета необходимо настраивать и запускать отдельный терминал. Я скачал инсталлятор терминала QUIK от брокера и установил для одного счета.

Хочу установить второй терминал QUIK для запуска на том же компьютере и в сеансе того же пользователя, то есть параллельно 2 терминала. Уже не помню как я ставил 2 терминала, но иногда наблюдаются разрывы связи и непонятно по какой причине. Возможно, я что-то неправильно сделал и брокер разрывает соединение на сервере.

Вопросы:
1) Как правильно запускать несколько терминалов QUIK на одном компьютере для доступа к разным счетам одного брокера, чтобы терминалы не конфликтовали между собой? То есть, провести установку 1 раз (например, в директорию c:\QUIK), а потом просто скопировать директорию  c:\QUIK  в  c:\QUIK2  ? Или нужно провести 2 установки из дистрибутива в 2 разные директории?

2) При подключении терминала предлагается выбрать сервер. Нужно ли выбирать разные сервера при подключении из 2 разных терминалов? Например, в первом терминале выбираем  Сервер1 , а во втором терминале выбираем  Сервер2 .


Спасибо!
Главное, чтобы у Вас были два логина  ну и два пароля.
не закрывает вовремя позицию!
 
Цитата
Sergey написал:
Цитата
nikolz написал:
1) колбек onРaram().2) таймер и синхронизацию ПК от сервера времени.
если не трудно, приведите пожалуйста код пример, спасибо
Код
function main()
   local time;
    while is_run do
    if time>58 then
            message("Секунды превысили значение 58!")
     end
     sleep(100)
   time=string.sub(getInfoParam("SERVERTIME"),-2);
    end
end

function OnStop()
    is_run = false
end
Проданные бумаги в Состоянии счёта
 
Цитата
СергейК написал:
Добрый день.
Обычно позиции по проданным бумагам не показываются, но на самом деле у меня есть квики, к-е их таки показывают.
Т.е. если у меня было 100 облигаций ТГК-14 и я их сегодня продал, то в Т1 например у Открытия ТГК-14 не будет вообще, а у Альфы или ВТБ будет строка с количеством 0. Соответственно завтра будет то же самое в Т0.
Как я понял, вариант, когда такая позиция показывается, немного удобнее.
Вопрос: это решается на стороне брокера?
настройте фильтр в таблице.
не закрывает вовремя позицию!
 
Цитата
Sergey написал:
Здравствуйте, вопрос в следующем, если торговать руками, то я могу закрыть позицию в любой удобный для меня момент, т.е. даже тогда когда тиков нет.
а вот lua почему то так не может, бывает мне нужно закрыться на close свечи, и тупо с 57 до 01 секунды вообще нет тиков, соответственно закрытие происходит на другой свече, подскажите как закрываться тогда когда мне нужно и не быть зависимым от тиков?
1) колбек onРaram().
2) таймер и синхронизацию ПК от сервера времени.
Отображение количества купленных акций.
 
Цитата
Сергей написал:
Добрый день. Движение котировок в широких пределах не зависит как от количества продавцов и покупателей, так и от количества и объема сделок. Значительно более сильная корреляция движения котировок связана с соотношением количества проданных (сделка по цене покупки) и купленных (сделка по цене продажи) акций. Я и предлагаю отобразить эту информацию. Наличие покупателей совсем не значит, что они будут участвовать в сделках по текущим ценам и цена акций будет расти. Важна только та их часть, которая участвует в сделках.
Все это - азбука торгов.
Общеизвестно, что цены двигают рыночные заявки.
Но рыночные заявки не попадают в стакан  и их не видят клиенты брокеров.  
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
Игорь М написал:
Цитата
Nikolay написал:
 
Цитата
Игорь М  написал:
Причем здесь какой-то мой алгоритм? Подняли тему и я написал,что TRADINGSTATUS криво работал раньше, написал что проверю снова. Вот проверил, ничего не поменялось. Написал сюда, чтобы люди, которые будут потом читать, не тестировали заново. Резюмируя: TRADINGSTATUS - бесполезная мура, 10-15 секунд это перебор для любых систем. За эксклюзивную информацию о том, что "система торговли Квик - это не тот инструмент, что стоит использовать" для "мгновенной реакции", низкий поклон, конечно.  ::  
 
Вы же говорите, что задержка в 15 секунд для Вас критическая. Я пока не видел с этим проблем, для любых торговых систем. Совершенно разные мнения.
Я такого не писал. Она для меня не критическая, я TRADINGSTATUS не использую. Я имел в виду, что если такая простая опция, как определение статуса сессии, имеет задержку в 10-15 секунд, то этим не следует пользоваться в любых системах. Она просто тупо неправильно работает. Не может быть в современных реалиях такой задержки. Возможно, когда-то она работала правильно, но потом что-то поменялось, а её не исправили. Она стабильно выдает нереальную задержку - это баг.
Поделюсь своим опытом.
Правда я не торгую неликвидом.
Все плановые начала и концы торгов я определяю так.
------------------
Компьютер у меня синхронизируется по серверу точного времени.  Я об этом уже рассказывал на форуме.
Поэтому я знаю время работы биржи очень точно, а не по серверу брокера, которое может гулять как угодно.
Ошибка синхронизации не более 0.02 сек.
Начало предторгового периода определяется по часам,
а начало торгов по часам и правилу High~=Low для Сбербанка.
--------------
Аналогично можно построить правила для определения  любых другим моментов на бирже.


 
Лимит открытых позиций, Списываются деньги со счёта
 
Цитата
Дмитрий написал:
лимит открытых позиций
В эпоху интернет казалось бы что сложного ввести в браузере "Лимит открытых позиций"
----------------
и прочитать:
---------------------
Лимит открытой позиции — это максимальный объем активов, который трейдер может удерживать в открытой позиции в определенный момент времени.
Этот лимит устанавливается для того, чтобы предотвратить риски для финансовой стабильности трейдера и рынка в целом.
Для начинающих трейдеров, лимит открытой позиции может показаться сложным понятием, но это необходимо для защиты их финансовых интересов.
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
Вадим Никитин написал:
Цитата
nikolz написал:
Забыл сказать.
Способ High~=Low надо использовать не для торгуемого Вами инструмента, а для ликвидного, например , используйте это правило для сбербанка как индикатор, что торги идут.  

Такой способ подойдёт, чтобы определить, что торги в принципе начались, например после клиринга.

Но не подойдёт, чтобы определить, что торги идут по конкретному инструменту.

Kolossi, Nikolay,

Безусловно. К тому же, скорее всего, значения этих параметров могут быть разные у разных брокеров.
И нет никаких гарантий, что они когда-нибудь не поменяются.
Все просто Карл!
Определяете, что торги идут в принципе (был такой магазин )
Потом проверяете объем торгов по данному инструменту. Если ноль, то не торгуется.
Можете еще проверять наличие предложений. Если инструмент не торгуется то и предложений нет
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Забыл сказать.
Способ High~=Low надо использовать не для торгуемого Вами инструмента, а для ликвидного, например , используйте это правило для сбербанка как индикатор, что торги идут.  
Фризы и тормоза, Фризы терминала
 
Вообще-то КВИК создает  от 8 потоков.
----------------  
Очень сильно тормозит отрисовка графиков, так как практически перерисовывается весь отображаемый график на каждый тик.  
Попробуйте посмотреть загрузку ядер при свернутых окнах КВИКА
--------------------
Размер архивов влияет в основном на время запуска КВИКА, если Вы не отображаете его весь на график
Задержка при зачислении бумаг
 
Цитата
Сергей С. написал:
А может кто-то пробовал, что быстрее будет работать для получения информации о зачислении бумаг в портфель: getDepoEx().currentbal,  или цикл по getNumberOf("depo_limits") с перебором getItem("depo_limits", i).currentbal ?
Работать будет одинаково, так как обращение к архиву. Быстрее будет работать колбек.
Но разница будет не в секундах, а в ms.
-------------
Цикл при этом лишний, так как эти таблицы не увеличиваются в размере.
---------------
Если у Вас изменение портфеля всегда так долго, то что-то не так в настройках или в канале связи.
Ищите, где не так.
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
airat написал:
Здравствуйте,

18.08.2032 торги на срочном рынке FORTS после проведения дневной клиринговой сессии возобновились в 14:27:00.

Известен ли кому-нибудь способ получать информацию о "необычных" временах начала/возобновления торгов? Насколько я понял, доступа к таблице системных сообщений нет.
Здесь  предлагают использовать поле TRADINGSTATUS ответа getParamEx, но, судя по обсуждению, не до конца ясно, можно ли на него полагаться.

Есть ли другие варианты, в т.ч. костыльные?

Благодарю за ваши предложения.
Из собственного опыта.
Если используете свечи, то просто сравните High и Low свечи.
Если торги идут, то значения различны.  
Преобразование времени в число
 
Цитата
Ziveleos написал:
Денис, добрый день.
Вот рабочий код:

Код
     local  t  =   string.gsub ( getInfoParam ( "SERVERTIME" ),"%:",  "" )
   local  time_pos  =   string.format ( "%06d" , tonumber(t))

  

nikolz, до 10 утра время сервера передается без начального нуля,  одной  цифрой.
Цитата
Ziveleos написал:
local time_pos =string.sub (x,1,2)..string.sub (x,4,5)..string.sub (x,7,8);
пардон, исправил:
Код
local time_pos=string.gsub(getInfoParam("SERVERTIME"), ":", "");
Преобразование времени в число
 
Цитата
Денис написал:
getInfoParam("SERVERTIME")
local x=getInfoParam("SERVERTIME");
local time_pos =string.sub (x,1,2)..string.sub (x,4,5)..string.sub (x,7,8);
Задержка при зачислении бумаг
 
возможно надо брокера сменить.
Задержка при зачислении бумаг
 
Цитата
Сергей С. написал:
Цитата
Владимир написал:
Сергей С. , Дались Вам эти несчастные 5 секунд. У меня тикеры держатся в портфеле месяцами и годами, а тут секунды. ЗАЧЕМ с этим что-то делать?
Была идея немного поарбитражить в квике... но, видимо, для этой цели квик не подходит.
QUIK Подходит для арбитража. На форуме выкладывал пример скрипта для арбитража.
Фризы и тормоза, Фризы терминала
 
Цитата
Виталий написал:
Добрый день. Подскажите, что сделать чтобы интерфейс не фризился и не тормозил? Я как бы все понимаю, но вот такое окно (приложил скрин) фризится, если программу разворачивать с панели или просто водить по графику курсором с перекрестием. При этом у меня железо как бы не микроволновка: AMD Ryzen 7 5800X 3.80 GHz, ОЗУ 64Гб DDR4 3200, NVME накопитель, пустой на половину. Видео RTX 3060. Ну неужели этого мало?! Ну елки-палки!
Что и где подкрутить, чтобы это прекратилось?!
покажите диспетчер задач.
картинки:
1)Производительность.
2)Процессы . Рабочее место ... QUIK
Проверка, что заявка выполнена
 
Цитата
Igor_User написал:
Цитата
nikolz написал:
 
Цитата
Igor_User  написал:
 nikolz  , попробовал X=(Order.flags>>3)&1.
То же самое - бит3 = true для рыночной заявки.
 На фьючерсах нет рыночных заявок, надо выставлять с ценой. Если хотите рыночную то цену выбирайте хуже лучшей цены.
Мне всегда казалось, что и на спотовом также.
Интерфейс выставления заявки в квике одинаковый что на спотовом рынке, что на срочном. И там и там присутствует галочка "Рыночная". Цену хуже можно не выставлять (точнее поле "Цена" становится вообще неактивным при выборе "Рыночная").

Возможно вы имеете в виду, что несмотря на это, заявки всё равно по-разному обрабатываются на спотовом и на срочном?
Я не правильно Вам объяснил.
На фьючерсах нет рыночной заявки потому, что вы покупаете не актив, а контракт на его покупку
А стоимость контракта не зависит от цены актива.
Поэтому Вы задаете число контрактов а их цена фиксированная.
Возможен экспорт через DDE в OpenOffice Calc? (Он аналог MS Excel)
 
В качестве информации
Так как использую своим DDE приложением, то QUIK нормально работает с моим сервером имя которого могу сделать любое.

По.тому полагаю, что проблема не в QUIK а в том, как Open Office реализует обработку.
Из документации OpenOffice  следует, что вызов DDE надо  прописывать специально в ячейке таблицы.  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
На всякий случай ссылка на документацию
https://lua.org.ru/manual_ru.html
6.4 – Работа со строками

Эта библиотека предоставляет общие функции для работы со строками, такие как поиск, извлечение подстрок и сопоставление шаблонов. Когда индексируются строки в Lua, первый символ находится на позиции 1 (не на 0, как в C). Допускаются негативные индексы, они интерпретируются как индексирование обратно (задом наперед), с конца строки. Таким образом, последний символ находится на позиции -1 и так далее.

Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Строки в Lua индексируются с 1 (а не 0, как в C).
Индексы могут быть отрицательными и интерпретируются как индекс с конца строки.
Т.е. последний символ имеет позицию -1, и т.д.
Проверка, что заявка выполнена
 
т е при выставлении рыночной будет выставлена лимитная с  соответствующей ценой
Это связано с резервированием средств.
Проверка, что заявка выполнена
 
Цитата
Igor_User написал:
nikolz, попробовал X=(Order.flags>>3)&1.
То же самое - бит3 = true для рыночной заявки.
На фьючерсах нет рыночных заявок, надо выставлять с ценой. Если хотите рыночную то цену выбирайте хуже лучшей цены.
Проверка, что заявка выполнена
 
Например:   X - значение 3-го бита (1 или 0) вычисляем так:
X=(Order.flags>>3)&1;  
Быстрый ввод стоп-заявки
 
У меня в скриптах роботов делается так:
------------
Если стоп-заявки разрешены , то
На изменение портфеля по инструменту  проверяется наличие стоп-заявки и соответствие в ней количества.
Если равенства нет , то стоп-заявка снимается и устанавливается новая, если количество не ноль.
Ппри этом, выставление новой заявки должно быть выполнено после подтверждения снятия старой.
------------
Есть различные варианты сигналов, по которым выполняются эти действия. Например скользящий стоп.
----------
Так как умная стоп-заявка - это относительно большой и сложный скрипт, то сомневаюсь, что на форуме появится действительно подобный скрипт. Практически надо выкладывать скрипт автоматической торговли.
----------------
 
Индикаторы. Программное изменение Settings для инициирования OnChangeSettings
 
Цитата
Илья написал:
Хорошо, с передачей данных между скриптами разобрались.
Остается вопрос оптимизации частоты этой передачи.
Грубо говоря, в основном скрипте расчет происходит после совершения сделки. Частота расчета значительно ниже частоты срабатывания функции OnCalculate.
можно вычисления внутри onCalculate делать один раз в момент открытия новой свечи.
Индикаторы. Программное изменение Settings для инициирования OnChangeSettings
 
Цитата
Илья написал:
1. Основной скрипт и скрипты индикаторов работают внутри одного экземпляра Quik (на одном компьютере)
2. Разработка на отличном от Lua (Qlua) языке не предполагается. Все в рамках возможностей QUIK
Тогда единственный вариант это обмен через файлы, то , что Вы не хотите.
Все остальное требует использование сторонних dll , т.е. CИ.
Индикаторы. Программное изменение Settings для инициирования OnChangeSettings
 
Цитата
Илья написал:
Добрый день.


Посоветуйте, пожалуйста, как можно оптимизировать данный алгоритм:

1. передачу данных из основного скрипта в скрипт индикатора (без использования файлов)
2. Инициировать передачу данных в индикатор со стороны основного скрипта (уменьшить частоту обращения индикатора к основному скрипту)
3. Есть ли возможность из основного скрипта инициировать событие для функции OnChangeSettings ?
Уточните:
1) скрипты в разных приложениях, в одном или на разных компьютерах.
2) Предполагаете разрабатывать  функции на C или других языках или только на Lua.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
вот так можно проверять нужный бит (n), результат 1 или 0 - значение бита (n)  n>=0
Код
local function (flag,n)  return (flag>>n)&1;  end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Ziveleos написал:
nikolz, Вы мне объясняете?!
пардон, ошибся, не Вам.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ziveleos,
Вы можете делать еще так, возможно будет проще понимать что и зачем:
-----------------
Например,  есть flag
-----------------
1) надо выделить бит 0
x=flag & 1  -- x равен значению бита
-----------------
2) надо выделить бит 1
z=flag>>1;  x=z & 1  -- x равен значению бита
-----------------
3) надо выделить бит 2
z=flag>>2;  x=z & 1  -- x равен значению бита
--------------------
4) надо выделить бит 3
z=flag>>3;  x=z & 1  -- x равен значению бита
------------------------
5) надо выделить бит 4
z=flag>>4;  x=z & 1  -- x равен значению бита
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
TGB написал:
.
<Поле таблицы (данные любого типа Lua кроме nil, при присвоении которого полю, соответствующая запись таблицы удаляется>.
---------------
Поправлю Вас..
nil - это такая же переменная как и другие. Отличается лишь тем, что ее тип =0, а тип строки =3.
проверка переменной на nil, это  равенство ее типа нулю.
---------------
Поэтому поле таблицы может быть любого типа, в том числе и типа nil.
==================
Команды в байт-коде луа - это просто целое число, которое всегда указывает на функцию  СИ.
Т е внутри VMLua нет никакого чистого луа, там лишь чистый СИ.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
nikolz, Я про надежность какой вариант надежней? Или все безопасно?
По надежности и безопасности все варианты одинаковые, полностью безопасные, надежные.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
так  order.flags & 1  
быстрее,
чем order.flags % 2,
примерно в 3 раза
Сохранение стакана, Описание эксперимента с сохранением стакана
 
Цитата
Delv написал:
Цитата
nikolz написал:
 
Цитата
Delv  написал:
Решил сохранить историческую информацию о стаканах по отдельно взятому инструменту.
Есть 2 обработчика: OnQuote и OnAllTrades. В обоих стоит фильтрация по инструменту. События из них кладутся в некий общий список(std::list<std::any>),
 Забыл сказать Вам ранее.
1) Существуют сделки, которых нет в стакане.
2) Для эксперимента можно сделать так.
Синхронизируйте часы компьютера от сервера точного времени. При этом проверьте на сколько будет уходить время на Вашем компьютере.
Реально получить 2-5 ms .
Потом пишите стакан и сделки с метками компьютерного времени.
Потом обработайте файл с оценкой разницы компьютерного времени и времени сделок.
В итоге Вы получите, что сделки приходят к Вам с запозданием
Сделки и срезы стаканов могут приходит в одном пакете.
Количество изменений стакана  в действительности всегда больше чем число совершенных сделок.
Но выбор среза стакана очевидно определяется не моментом совершения сделок, либо не только.
-----------------
В любом случае, если так сделаете, то узнаете много нового.
===============
Прим: Когда-то давно привозили данные с биржи по сделкам для экспертизы в рамках одного уголовного дела.
Там много чего есть интересного.
Спасибо, надо будет поинтересоваться. Пока же я буду просто использовать очередность сделок и кадров стакана. Разница по времени там небольшая будет. Те же 2-5 мс для меня не имеют особого значения, так как на сделку(отправка заявки на биржу и получение ответа по транзакции) уходит куда больше. До 250 мс.
2-5 ms - это  не задержка прихода, а ошибка синхронизации времени компьютера относительно времени биржи.
Эта величина погрешности. Вы же не используете градусник у которого погрешность измерения 10 градусов.
-----------------------------
На форуме я выкладывал результаты измерения запаздывания прихода сделок и свечей. Получались даже секунды, а для свечей десятки секунд.
----------------
Но если Вам все равно, но какой смысл вообще смотреть вчерашний день.
Сохранение стакана, Описание эксперимента с сохранением стакана
 
Цитата
Delv написал:
Решил сохранить историческую информацию о стаканах по отдельно взятому инструменту.
Есть 2 обработчика: OnQuote и OnAllTrades. В обоих стоит фильтрация по инструменту. События из них кладутся в некий общий список(std::list<std::any>),
Забыл сказать Вам ранее.
1) Существуют сделки, которых нет в стакане.
2) Для эксперимента можно сделать так.
Синхронизируйте часы компьютера от сервера точного времени. При этом проверьте на сколько будет уходить время на Вашем компьютере.
Реально получить 2-5 ms .
Потом пишите стакан и сделки с метками компьютерного времени.
Потом обработайте файл с оценкой разницы компьютерного времени и времени сделок.
В итоге Вы получите, что сделки приходят к Вам с запозданием
Сделки и срезы стаканов могут приходит в одном пакете.
Количество изменений стакана  в действительности всегда больше чем число совершенных сделок.
Но выбор среза стакана очевидно определяется не моментом совершения сделок, либо не только.
-----------------
В любом случае, если так сделаете, то узнаете много нового.
===============
Прим: Когда-то давно привозили данные с биржи по сделкам для экспертизы в рамках одного уголовного дела.
Там много чего есть интересного.
getParamEx
 
Цитата
Alexander написал:
GAZP, фьючерсы идут GAZR
Я вроде бы изначально объяснил - возьмите таблицу с биржи и формируйте по ней код фьючерса
Для тех, кто в танке, объясняю на пальцах:
Код
базисного
актива
(поле "C")
Код
базисного актива
на срочном рынке
Название базисного актива
GZGAZRПАО "Газпром" (о.а.)
SPSBPRПАО Сбербанк (п.а.)
SRSBRFПАО Сбербанк (о.а.)
Делайте , как говорю, и будет Вам счастье.
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
BVladimir написал:
Цитата
nikolz написал:
Динамические данные надо брать через  getParamEx., а getParamEx вызывать при срабатывании onParam.При этом, чтобы не читать ненужное, надо в onParam поставить фильтр на торгуемые инструменты.
При срабатывании onParam вызывать именно getParamEx или всетаки getParamEx2 ?
В документации OnParam написано:
При вызове данной функции пользователь может вызвать функцию getParamEx() и получить значение нужного параметра.  
------------------
getParamEx2
Функция предназначена для получения значений всех параметров биржевой информации
из Таблицы текущих торгов с возможностью в дальнейшем отказаться от получения
определенных параметров, заказанных с помощью функции ParamRequest. Для отказа от получения какого-либо
параметра воспользуйтесь функцией CancelParamRequest.
---------------
getParamEx
Функция предназначена для получения значений всех параметров биржевой информации
из таблицы «Текущие торги». С помощью этой функции можно получить любое из
значений Таблицы текущих торгов для заданных кодов класса и инструмента.
====================
полагаю, что если нет надобности использовать ParamReques,
то проще getParamEx.
Формат orders.dat и trades.dat
 
Нигде.
Все форматы файлов данных QUIK закрыты разработчикам.  Этой хотелки уже более 20 лет.
getParamEx
 
Цитата
paluke написал:
Ну почти... Посмотрите на сбербанк или газпром. Код базового актива для фьючерса может не совпадать с кодом акций.
покажите, где для фьючерса сбербанка и газпрома код не совпадает.
Код базового актива у сбербанка SR и SP, а у газпрома GZ.
У какого фьючерса этих акций иначе?
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
BVladimir написал:
Цитата
nikolz написал:
Функция getParamEx берет параметры из архива терминала. Это сравнительно медленно.У инструментов много неизменяемых  параметров. Их лучше выбрать один раз и сохранить в таблице. Потом брать из этой таблице не используя getParamEx.
Т.е. "более" актуальные данные нужно брать через getParamEx2 во всех случаях, когда открыта ТТТ ? Или могут быть другие ситуации ?
Динамические данные надо брать через  getParamEx., а getParamEx вызывать при срабатывании onParam.
При этом, чтобы не читать ненужное, надо в onParam поставить фильтр на торгуемые инструменты.
Таблица с измемениями открытого интереса
 
Цитата
Mariana написал:
Здравствуйте,

Я хотела бы научиться писать небольшие вспомогательные програмки на QLUA, опыт програмирования у меня очень небольшой, когда-то давно был курс в университете. Я смогла написать следующую программу, которая выполняет следующее:
при запуске формируется таблица с фьючерсами, запоминается в отдельной колонке открытый интересе в момент создания таблицы.
Далее, каждые несколько секунд берется текущий открытый интерес и вычисляется изменение открытого интереса. Эти данные выводятся в отдельную колонку.

На текущий момент, больше всего я не понимаю, как работать с типами данных, почему-то чтобы выводились данные в колонку - их нужно преобразовывать в строки, иначе у меня выводятся нули.
К сожалению, мне очень не хватает рабочих примеров, чтобы быстрее обучиться.

Хотя код рабочий, я буду признательна, если кто-то сможет подправить код с точки зрения приведения типов. Хочется чтобы в столбцах OI, OIINIT, OICHG, OICHG% были не строки, а числа.

И еще один вопрос, можно ли добавить столбы
- которые брали бы открытый интерес на начало дня (на 10 утра по Москве, либо на 19:00 предыдущего дня - любой вариант подходит)
- которые брали открытый интерес который был 15 минут назад (получается, это поле должно динамически обновлятьс, достаточно раз в минуту например)
Ликбез.
Скрипты пишем не на QLUA, а на Lua. QLua- это библиотека функций для Lua. Эти функции позволяют скрипту обмениваться данными с терминалом QUIK.
Поэтому про типы и как писать скрипты на луа надо читать в литературе по программированию на луа.
https://jevico.github.io/
https://eligovision.ru/media/upload/lua.pdf
https://chenweixiang.github.io/docs/Programming_in_Lua_4th_Edition.pdf
-----------------------
Относительно типа выводимых данных в таблицу.
Чем Вам мешает сохранение чисел в формате строк?
В данной реализации отображения таблицы используется формат строки для  хранения отображаемых данных,
поэтому надо явно делать из чисел строки. Так сделали разработчики, поэтому надо делать именно так.
----------------------
Изучите библиотеку QLUA и делайте так, как написано в документации. Примите это как догму и не пытайтесь угадать "почему" так сделали разработчики библиотеки.
-----------------
QUIK - это программа для подачи поручений брокеру в текущий торговый день.
Поэтому в ней отображается текущая информация. Если Вам надо информацию прошлых дней то ее надо сохранять в файлах и потом считывать и отображать.
Т е вам надо сделать запись в файл  OI, OIINIT, OICHG, OICHG%  и считывать значения при запуске QUIK.
Хранить данные Вы можете и в двоичном виде как числа, преобразовывать в строку надо лишь для  отображения на экране.
Когда лучше getParamEx, а когда getParamEx2 ?, Что предпочесть ?
 
Цитата
BVladimir написал:
Приветствую, всезнающий All !

1. У меня открыта таблица тек.торгов с нужными инструментами. Как правильно получать данные из нее getParamEx или getParamEx2 ?
2. Сработал колбэк OnParam. Также- как правильно - getParamEx или getParamEx2 ?
Функция getParamEx берет параметры из архива терминала. Это сравнительно медленно.
У инструментов много неизменяемых  параметров.
Их лучше выбрать один раз и сохранить в таблице.
Потом брать из этой таблице не используя getParamEx.
getParamEx
 
Цитата
Alexander написал:
Цитата
nikolz написал:
У Вас есть список акций, которые Вас интересуют.
1. У меня нет списка акций. Я его хотел получить именно из списка фьючерсов на акции, которые есть на Мосбирже. Зная список акций я без проблем получаю нужный мне список фьючерсов на акции.
Можно сделать так:
1) получить этот список из списка открытых инструментов.
2)сформировать списку фьючерсов по этому списку.
3) выбрать те фьючерсы, на которые подписан
4) оставить только те акции для которых есть фьючерсы.
-------------------
относительно "быстро"
Вы  делаете это один раз при старте КВИК поэтому время вычислений не имеет значения. в любом случае не превысит нескольких секунд.
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 69 След.
Наверх