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

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

Страницы: 1 2 След.
Открывается позиция больше чем в заявке
 

Видео, где видно, как меняется «Вх. стоим-ть» в таблице «Состояние счета» ,  см. по ссылке https://disk.yandex.ru/i/g3xJRnt79WaNng (снято вечером 11.03.2021).

Чтобы ликвидировать изменение «Вх. стоим-ть» и добиться правильного расчета «Прибыль дня», я пошел испытанным путем – переустановил Quik с сайта брокера (версия у него прежняя – 8.11.0.66). После этого  все нормализовалось .  

Потом вспомнил о ваших рекомендациях – «закрыть терминал, удалить все файлы с расширениями .log \ .dat  (кроме файлов alerts.dat, metastok.dat, portfolio.dat и scripts.dat), и заново запустить программу». Проделал все это с проблемным терминалом, который сохранил,  и тоже все нормализовалось.

На фото внизу приведена правильная таблица «Состояние счета» после переустановки Quik.  Это фото получено примерно через 10 минут после видео от кривоватого терминала. Видно , что на фото и видео «Вх. стоим-ть» значительно отличается.  Инструменты на фото и видео одни и те же, только их порядок следования почему-то разный.

Теперь становится ясно, почему «Прибыль дня» на дефектном терминале меняется редко, а главное – почему она считается неверно. Потому что «Вх. стоим-ть» меняется синхронно с «Тек. Средства», причем на одну и ту же величину, так что их разность, равная  «Прибыль дня», не меняется. А считается «Прибыль дня» неверно из-за неверного расчета  «Вх. стоим-ть».

Открывается позиция больше чем в заявке
 

В дополнение к моему сегодняшнему сообщению о том, что неверно рассчитывается прибыль дня,  еще привожу такие наблюдения:  в таблице «Состояние счета» постоянно меняется итог «Вх. стоим-ть» с той же периодичностью, как «Ликв. ст-сть», «Свободно» и  «Нереал. pl», т.е. примерно каждые  30 сек.  Как же этот итог  может меняться, если это стоимость на начало дня и она должна быть неизменна? Мистика!  

При этом в итогах таблицы разность  «Ликв. ст-сть»- «Вх. стоим-ть» не равна «Прибыль дня».  Что и неудивительно, поскольку «Прибыль дня» меняется гораздо реже.

Данные в таблицах «Клиентский портфель» и «Состояние счета» друг другу соответствуют, т.е. «Прибыль/убыток»= «Прибыль дня», а «Вход средства» = «Вх. стоим-ть» .

В таблице «Состояние счета» присутствуют акции,  облигации, и деньги в рублях (валютные позиции нулевые).

Открывается позиция больше чем в заявке
 

Вот уже второй день в таблице «Cостояние счета»  неправильно вычисляется прибыль дня  в итогах – ее значение явно завышенное . При этом прибыль дня  меняется редко, примерно один раз в 5-10 минут, в то время как  остальные данные («Ликв. ст-сть», «Свободно», «Нереал. pl»)  меняются примерно каждые 30 сек.

Версия терминала 8.11.0.66.

Что бы это значило?

P.S. Проверил на калькуляторе – просуммировал все строки в столбце «Ликв. стоимость». Сумма сошлась с итогом «Ликв. ст-сть» внизу таблицы (с  точностью до копеек). Супер!

Открывается позиция больше чем в заявке
 

Опять таки в версии 8.11.0.66 сегодня столкнулся с таким явлением. Открываю позицию (рыночную) по акциям, появляется сообщение, что заявка исполнена. Но нигде нет никакого следа, что это так – в таблице заявок и сделок пусто, в таблице «состояние счета» акция не появилась, на графике нет символа треугольника  открытой позиции. Подождал минут 10, но ничего не изменилось. С открытой позицией по фьючерсам то же самое. Вошел в мобильное приложение  «ВТБ мои инвестиции» и вижу, что  там новые открытые позиции присутствуют.  Тогда закрыл терминал и перезапустил его с сервера 1 (первоначально был запущен с сервера 2). На этот раз новые открытые позиции появились.

Кроме этого, в новостной ленте при нажатии на заголовок темы не открывается текст – появляется сообщение  «запрашиваемая новость отсутствует на сервере»/

Это что – программные ошибки или недоработки версии или что-то еще?

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
В таком случае, предполагаем, что дело было в повреждении одного из служебных файлов и/или файла настроек.
Спасибо за совет, буду иметь виду.

В  версии 8.11.0.66 заметил еще 2 негативных  момента:

1)  Если выставить 2 заявки – одну стоп лимит, а другую тейк-профит, отдельно в разное время, то при срабатывании стоп-лимита тейк профит автоматически не снимается. Это странно, т.к. если сработала стоп-лимит, то в тейк-профите уже нет смысла.   Если чел потерял бдительность и забыл снять тейк-профит, то например при длинной позиции может получить в «подарок» ненужный шорт.  Правда в случае ввода обоих заявок в одном окне, когда выбираешь «тейк-профит и стоп-лимит», при исполнении стоп-лимита тейк-профит автоматически снимается, и на том спасибо.

2) В таблице «состояние счета» неактивны кнопки «закрыть» и «перевернуть», если стоит «на дату Tx». При этом кнопка «закрыть все» активна. Правда, эта проблема решается просто: если изменить Tx на Т2, то все кнопки становятся активны (потом можно обратно поставить на Tx).

В руководстве указана одна из причин этого:

«Значение вида лимита в поле «На дату» не совпадает с видом лимита, установленным в настройках Библиотеки расчета лимитов по классу, выбранному для оценки текущей позиции».

Но не знаю - где посмотреть и изменить эту настройку Библиотеки расчета лимитов?

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
В первую очередь, рекомендуем обновить терминал до актуальной версии (8.12) с нашего FTP: ftp://ftp.quik.ru/public/updates/8.12/quik_8.12.0_upd.zip

Уже предпринял шаги до вашего ответа: скачал Quik той же версии что и была (т.е. 8.11.0.66) с сайта брокера. По опыту  переустановка системы с сайта брокера обычно помогала в случае каких-то неполадок.  Конечно ушло время на восстановление настроек, вкладок, окон и т.п., зато с вводом заявок по фьючерсам теперь проблем нет и переключение между графиками и вкладками идет быстрее (правда графики фьючерсов переключаются  раз в 5 медленнее, чем графики акций, явно из-за того, что для фьючерсов добавил открытые позиции).

Так что дело не в версии терминала. Непонятно только, почему заявки по акциям выставлялись, а по фьючерсам нет (на фьючерсном счете денег было достаточно и открытых позиций не было).  

После этого случая с невозможностью выставления заявок я установил мобильное приложение от брокера «ВТБ мои инвестиции». Если что, то на худой конец теперь можно закрыть позицию с мобильника. Как говорил один бывалый трейдер - надо заранее продумать, что делать в   экстренных ситуациях,  как то: сбой торговой системы,  нет электричества, нет Интернета, сломался компьютер,  землетрясение...

Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 
Цитата
s_mike@rambler.ru написал:
Возьмите в архиве  http://www.bot4sale.ru/download-categories/2012-06-13-15-10-36/item/md.html  библиотеку bot4sale64.dll
Спасибо. Все получилось. Скачал вашу библиотеку и положил в корень Quik,  а звуковой файл - в каталог scripts (вместо простого beep выбрал имитацию капли дождя, размер файла 32 К) . "err=" можно убрать - тоже работает.  Звуковой файл скачал с https://soundslibmp3.ru/load/721-besplatnye-zvukovye-effekty.shtml - может кому пригодится. В итоге код может быть такой:

require "bot4sale64"
bot4sale64.PlaySound("scripts/sound_drop.mp3")  
Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 

Я наверно не очень четко объяснил, в чем проблема. Скрипт вызывается непосредственно из терминала Quik (автономно его вызывать нет необходимости). Раньше упомянутые выше операторы  по генерации звука работали. Но видимо в Quik сделали какое -то обновление и теперь они не работают.

Все же я попробовал скачать файл qlua.exe по вашей первой ссылке,  положил его в корень Quik  и запустил. Но звук так и появился.

Открывается позиция больше чем в заявке
 

Да, еще обратил внимание, что при попытке заполнения окна ввода заявки по фьючерсам в заголовке окна  появляется дополнительно «(Не отвечает)». Так что скорее всего теперь заявку вообще  выставить не получится.

Открывается позиция больше чем в заявке
 

В новой версии 8.11.0.66 возникли и новые казусы. Буду излагать их в порядке важности.

Последние время терминал лагает неимоверно. При переключении между инструментами из таблицы текущих торгов графики загружаются очень долго – 10-15 сек (якорем к таблице текущих торгов привязаны 2 графика с минутным и дневным интервалом). Даже переключение между вкладками, например «котировки» и «портфель»,  занимало те же 10 сек. При этом крутится голубое колесо, как будто что-то загружается. Сегодня между вкладками переключается быстро, по акциям переключение между графиками разных акций ускорилось и можно считать в норме.  Однако переключение между графиками разных фьючерсов по-прежнему идет долго.

Но хуже  всего то, что при заполнении окна выставления заявки по фьючерсам то же самое лагание. Окно вызываю из таблицы текущих торгов правой мышью. Пытаешься заполнить поле «количество» - ничего не происходит,  пытаешься поставить флаг «рыночная» - то же результат. Точнее, если подождать несколько минут, то заявка вроде заполнена и готова к исполнению. Но сами понимаете - цена уже не та. При заполнении полей обычно  крутится то же голубое колесо. Даже если просто вызвать окно выставления заявки а потом ничего не заполнять и попытаться закрыть его, нажав на крест, то оно не закрывается! Появляется второе окно «рабочее место информационно-торговой системы  Quik», в котором предлагается закрыть программу, ожидать отклика и т.д. Кое-как удается не перезагружать терминал. Сами понимаете, о торговле в таких условиях и речи быть не может.  

Про другие проблемы напишу в следующий раз, чтобы не перегружать информацией.

Что скажете, разработчики Quik?

Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 

Продолжаю данную тему, которую  когда то  начал. Как я уже писал, у меня запрограммирован звуковой сигнал beep таким образом:

require("w32")  

w32.MessageBeep(w32.MB_OK).

Но эта конструкция больше не работает – при запуске скрипта  Quik выдает сообщение об ошибке:

«error loading module 'w32' from file 'G:\БС\QUIK_VTB24\w32.dll': Не найдена указанная процедура.»

Библиотека w32.dll в корне Quik присутствует.

Подскажите пожалуйста, в чем может быть причина?  

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
В версии 8.11 данные пункты были перенесены в Система/Настройки/Основные настройки/Получение данных/Котировки и Система/Настройки/Основные настройки/Получение данных/Обезличенные сделки соответственно.
Да, теперь вижу. Если быть совсем точным, то эти пункты находятся в «Система/Настройки/Основные настройки/Программы/Получение данных».

Проверил на сделках - в новой версии терминала 8.11.0.66 количество лотов и суммы в таблицах сделок и «состояние счета» теперь совпадают.

Открывается позиция больше чем в заявке
 

Сделал все как вы написали: создал резервную копию старого терминала, скачал новую версию 8.11.0.66 по вашей ссылке,  взял в новой версии все файлы из корня без вложенных папок и скопировал их в свой терминал с перезаписью. Все запустилось нормально, система предложила принять обновление программы, и я их принял (подождал пока загрузятся разные файлы,  и перезагрузил терминал).

Пока на новом терминале позиции не открывал и не проверял, совпадает  или нет количество лотов и суммы в таблицах сделок и «состояние счета».

Но заметил следующее: в меню «система»-«заказ данных» отсутствуют пункты «поток котировок» и «поток обезличенных сделок». В старом терминале они были.

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

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
2) сделать резервную копию всей (со всем содержимым) папки с терминалом
Прошу прощения, делать резервную копию и перезаписывать только файлы в корне? Или кроме них также и все вложенные папки (archive, backup, и т.д.)?

И если позволите, второй вопрос:  как я уже писал, флаг «проверять наличие обновлений» в настройках у меня  включен, но обновление при каждом запуске Quik не предлагается. Почему? Раньше при запуске Quik переиодически  предлагалось сделать обновления и я их делал. Может имеет смысл дождаться автоматического обновления на новую версию или его не будет?

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
- включить настройку Система/Настройки/Основные настройки/Программа - "Проверять наличие обновлений"
Флаг «проверять наличие обновлений» в настройках у меня уже был включен, но обновление при каждом запуске Quik не предлагается.

Цитата
Roman Azarov написал:
- запросить новую версию у Вашего брокера если программа не обновится самостоятельно
У моего брокера (ВТБ) на его сайте предлагается скачать версии  Quik 8.8 и 8.4.  Их техподдержка утверждает, что более новая версия – это 8.8. А вы пишите, что надо скачать версию 8.11.0. Значит с 8.8 связываться не стоит?

Цитата
Roman Azarov написал:
- если брокер не сможет предоставить нужную версию, скачать ее с нашего ftp:        ftp://ftp.quik.ru/public/updates/8.11/quik_8.11.0_upd.zip В последнем случае, необходимо будет закрыть QUIK, сделать резервную копию папки, где он находится и скопировать все содержимое архива в первоначальную папку с подтверждением замены всех файлов.
Вот здесь не понял. В папке, где находится Quik, я вижу еще 10 вложенных папок и порядка 80 файлов. Что, надо сделать резервную копию всех этих файлов без вложенных папок? А потом скопировать эти файлы (без вложенных папок) в папку нового терминала?
А если я сохраню только ключи доступа и скачаю вашу версию 8.11.0, то что будет? Если пропадут мои настройки, то это не проблема. Можно вручную их восстановить. Главное, чтобы система работала.  

P.S. Вчера на другом компе (в другом районе города), где установлена такая же версия  Quik (8.10.1.1), открыл позицию и там было все нормально, т.е. количество лотов в таблице сделок и «состояние счета» совпадало. Сегодня снова открыл позицию на первом компе и опять повторилась та же проблема. Но интересное дело: я успел заметить, что вначале в таблице «состояние счета» количество лотов было правильное, а буквально через секунду оно и сумма удвоились. При этом количество свободных денег не изменилось. Вверху таблицы стояло «на дату Tx» (где-то прочитал,  что Tx есть только у брокера ВТБ) . Тогда я поменял Tx на T2 и c количествами все нормализовалось. Обратно поменял на Tx и опять все ОК. Из всего этого стало ясно, что ориентироваться надо на таблицу сделок, а  закрывать позицию лучше путем встречной заявки, а не из таблицы «состояние счета».

Открывается позиция больше чем в заявке
 
Цитата
Roman Azarov написал:
Уточните, пожалуйста, версию используемого терминала.
Версия 8.10.1.1

Еще заметил одну вещь, может это поможет разобраться. После закрытия позиции из таблицы "состояние счета" я вызвал из  меню "расширения" - "отчеты"    отчет по всем сделкам клиента.  В этом отчете была только первая сделка на покупку, а сделки на продажу не было. Она появилась в отчете примерно через полчаса.
Неравенство количества лотов  в таблицах сделок и "состояние счета"  я первый раз обнаружил 13.01.2021, когда открыл позицию на покупку по ММК.  До этого все было нормально..  
Открывается позиция больше чем в заявке
 

У меня возникает такая ситуация при открытии и закрытии сделки:

Например, сегодня открыл сделку на покупку акций Сбербанка объемом 10 лот по рынку. В таблице сделок в столбце кол-во стояло «10», как и должно быть. Однако в таблице «состояние счета» в столбце «позиция» почему-то  стояло «200», как будто я купил  в 2 раза больше акций (если бы в настройках таблицы был выбран флаг «количество в лотах», то стояло бы наверно «20»).  В столбце «стоимость» сумма была тоже в 2 раза больше, чем я реально купил, если судить по таблице сделок.

Но это еще не все. Когда я закрыл сделку из таблицы «состояние счета» (нажав на «С Закрыть»), то было продано 20 лот, а не 10. В результате открылась нежелательная позиция в 10 лот на продажу. Я это случайно заметил, и закрыл ее, но уже не из таблицы «состояние счета»,  а путем  выставления заявки на покупку на 10 лот.

Прикладываю скриншот таблицы сделок. К сожалению скриншот таблицы «состояние счета» сделать забыл.

Просьба прокомментировать, как такое могло случиться?  


Работа с таблицей обезличенных сделок., Корректная настройка, большой объем данных
 

У меня тоже вопрос по таблице обезличенных сделок (ОС), связанный с большим объемом данных– как очищать ее, точнее файл alltrade.dat, от уже ненужных акций?

Если в окне «заказ данных»- «поток обезличенных сделок» выбрать например «МБ ФР Т+Акции др» и  в фильтре инструментов оставить только 1 акцию, то файл alltrade.dat от ненужных акций не очищается.  

Это явно тормозит расчет в моем индикаторе из-за большого количества лишних строк в таблице ОС. Ведь, как я понимаю, функция getItem("all_trades",i) обращается именно к файлу alltrade.dat, который от ненужных акций автоматически не очищается.

Чтобы очистить файл alltrade.dat, необходимо в упомянутом окне нажать «получать заново данные по обезличенным сделкам». Но после этого данные даже по одной акции загружаются в таблицу ОС довольно долго, особенно в конце дня.

Логично было бы, чтобы при удалении ненужных акций в упомянутом окне или через фильтр при редактировании таблицы ОС файл  alltrade.dat автоматически от них очищался.

Короче, вопрос в том, можно ли очищать таблицу ОС (файл  alltrade.dat ) от ненужных акций, но при этом чтобы не тратилось время на повторную  загрузку нужных акции?

В таблице текущих торгов не все столбцы заполнены
 

Еще вопрос на эту же тему, что в таблице текущих торгов присутствуют не все данные: уже года два нет котировок по иностранным индексам и валютным парам – см. скриншот.  В списке классов инструментов в «заказ данных – поток котировок» их нет.  

Так и должно быть или есть какие-то настройки или зависит от брокера?  

 
В таблице текущих торгов не все столбцы заполнены
 

Да, эти изменения в настройках помогли и данные появились. Сервер один и тот же. Спасибо за помощь.

В таблице текущих торгов не все столбцы заполнены
 

В обоих терминалах код класса и название класса одинаковы:

название – МБ ФР. Т + Облигации

код класса – TQOB

Брокер один и тот же -ВТБ.

На всякий случай прикладываю скриншоты.

 


В таблице текущих торгов не все столбцы заполнены
 

Вопрос видимо к разработчикам Quik. В таблице текущих торгов для облигаций ОФЗ присутствуют не все данные. На скриншоте видно, что не заполнены столбцы «кол-во сделок», «длительность купона» и «доходность».  В то же время для облигации ВТБ Б-1-48, которая к ОФЗ не относится, эти данные есть.

При этом на другом терминале Quik по второму брокерскому счету таблица текущих торгов для ОФЗ полностью заполнена.

Кроме того, на этом втором терминале при редактировании таблицы текущих торгов  в выпадающем списке почему-то  больше разных ОФЗ, чем в первом терминале.

На первом (проблемном) терминале у меня раньше был ИИС, который я закрыл, но потом открыл новый ИИС и привязал его к этому же терминалу.    


Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 
Цитата
Anton написал:
, раз уж зашли в таблицу символов, выбрали символ BEL (007 который) и все. Или просто зажали альт и набрали 007, как сказано выше.
Да, теперь получилось (beep двойной, а под управлением Quik был одиночный). Не знал, что в таблице надо было выбрать bel. С нажатым alt+007 в Notepad++ тоже получилось – надо было включить NumLock  (в блокноте это почему-то не срабатывает).

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

Пояснение: я запускаю файл t.bat, в котором строка ..\lua.exe t1.lua. В файле t1.lua единственная строка os.execute("beep.bat"). Файлы t.bat, t1.lua и beep.bat находятся на d:/lua/f, а  lua.exe на d:/lua.

Спасибо за помощь.

Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 

Что-то не получается. Например, если в редакторе «блокнот» нажать и удерживать alt и на правой клавиатуре набрать 007, то ничего не происходит, т.е. после  «echo» ничего не добавляется.

А в редакторе Notepad++ не понимаю, что я должен сделать. В меню «правка» вхожу в таблицу  символов и выбираю символ ^ (94-й) и что еще я должен ввести – 007 или 7? Пробовал и то и другое, но выдает ошибку «echo007 не является внутренней или внешней командой, исполняемой программой ил пакетным файлом». Вы пишите, что это ^7 – это один символ. Как же мне это ввести в Notepad++?  

Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 

Мне надо адаптировать свою программу тестирования на исторических данных так, чтобы она запускалась не из Quik, а интерпретатором lua.exe из командной строки (типа ..\lua.exe myprogram.lua). В конце программы запрограммирован звуковой сигнал beep для оповещения, что программа завершила работу. Это сделано 2-мя операторами: require("w32") и w32.MessageBeep(w32.MB_OK). Я записал в каталог, где сидит lua.exe, библиотеку w32.dll. Однако lua.exe выдает ошибку “запуск программы  невозможен, так как на компьютере отсутствует файл qlua.dll”.  Если добавить этот файл, то тогда требует еще какой-то файл QCtrls.dll. Что все это значит – я не понимаю.

В каталоге, где сидит lua.exe, есть файл lua54.dll.  Это видимо какая-то своя библиотека?  Пробовал заменить в вышеупомянутых 2-х операторах w32 на lua54, т.е. написал require("lua54”) и lua54.MessageBeep(lua54.MB_OK). Но этот финт не помог -   выдает ошибку Error loading module ‘lua54’ from file ‘D:\lua\lua54.dll’.

В общем сдаюсь. Может кто-то знает- как сделать, чтобы при запуске программы с помощью lua.exe работал сигнал beep?

Функция SetRangeValue рисует лишнюю линию, Как убрать линию, соединяющую уровни, заданные SetRangeValue
 

Есть еще один  вопрос по линиям индикатора:

Если задать тип линии TYPE_DASH или  TYPE_POINT, то штрихи и точки идут очень близко  друг к другу. Когда сжимаешь график, то они сливаются в сплошную линию.

Можно ли как-то регулировать ширину пробелов между точками или штрихами, чтобы сделать их реже?

Американские акции и фьючерсы, Где скачать по ним минутные данные?
 

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

Мне нужны минутные данные в виде таблицы. На американских сайтах такая информация платная (на одном  например подписка стоит $ 450 в  год).

Может кто знает, где можно скачать минутные данные по наиболее ликвидным американским акциям и фьючерсам хотя бы за предыдущий торговый день?

Проблемы с math.random
 
Цитата
Sergey Gorokhov написал:
тогда так:

Еще раз спасибо за помощь.  Проверил - на положительных числах  работает правильно. Только надо помнить, что если шаг цены=1, то  надо задавать P=0 (а не  1).  

Я сделал по другому – см. код ниже.  При этом в качестве Р надо всегда задавать шаг цены, например если шаг цены=1, то  надо задавать P=1.  К остатку remnant добавляется +1.E-9 для корректировки. Дело в том, что иногда remnant принимает значения типа 0.3199999999999  вместо 0,32. Именно так получилось для числа 78.82 при step=0.5.  Если +1.E-9 не добавлять, то в случаях типа 0.3199999999999  могут получиться неверные (заниженные) результаты.

Код
function main()
 step=0.5
 v1=FROUND(78.15,step) -- дает 78
 v2=FROUND(78.25,step) -- дает 78.5 
 v3=FROUND(78.43,step) -- дает 78.5
 v4=FROUND(78.61,step) -- дает 78.5
 v5=FROUND(78.75,step) -- дает 79
 v6=FROUND(78.82,step) -- дает 79
end

function FROUND(v,step)
  remnant=math.fmod(v, step)
  v=v-remnant
  if (remnant+1.E-9)/step>=0.5 then 
   v=v+step
  end
  return v 
end
Проблемы с math.random
 
Цитата
Sergey Gorokhov написал:
Позвольте немного скорректировать.

Спасибо вам, Майк и Сергей. Да такого кода я бы точно не додумался.

Отрицательных чисел у меня нет, поэтому я написал по варианту  Майка и немного упростил - убрал tonumber, а  вместо (p or 0) написал просто p. Получилось так:

Код
function round(value, p)
   local e = 10 ^ p 
   return math.floor(value * e + 0.5) / e
end
x0=round(123.456,0) -- дает 123
x2=round(123.456,2) -- дает 123,46

Правда моя задача немного сложнее - надо округлить выражение (high+low+close)/3 до шага цены. Если шаг цены равен 1 или 0,01 или 0,0001, то проблем нет, т.к. каждому шагу цены легко сопоставить параметр p, например: шаг=1 - p=0; шаг=0,01 - p=2; шаг=0,0001 - p=4.

Но что если шаг цены равен к примеру 0,5? Тогда число 78.61 следовало бы округлить до 78,5, но при p=1 оно округлится до 78,6, а при p=0 до 79. Хотя это уже мои проблемы, если найду решение, то напишу.

Проблемы с math.random
 

У меня тоже вопрос по математическим функциям. В руководстве не нашел функции округления до целого. Например, как сделать, чтобы 5,7 округлялась до 6, а 5,2 - до 5?

math.ceil(5.2) округляет вверх и дает 6 (а неплохо бы иметь 5)

math.floor(5.7) округляет вниз и дает 5 (а неплохо бы иметь 6)

выражение 5.2-5.2%1 отбрасывает дробную часть и тоже дает 5.

Или надо  самому писать функцию округления по нормальным  математическим правилам?

Вопросы по LUA
 
Цитата
vgi написал:
Что Вы подразумеваете под "клеткой"?Если это "пробел", то сделайте в "Опции - Настройки... - Синтаксисы - Настройка Табуляции - Размер табул. 1 и √ Заменить пробелом" и табайте блоки на один пробел влево-вправо.
Спасибо за помощь. Да, мне как раз и нужно сдвигать на 1 пробел.
Вопросы по LUA
 
Чтобы не открывать новую тему, задам свой вопрос здесь.
В редакторе Notepad++ иногда нужно сдвинуть большие блоки текста вправо, например, когда добавил цикл и хочешь его выделить для облегчения восприятия.
Приходится делать это для каждой строки блока и на это уходит много времени.
Конечно, можно выделить блок текста и нажать Tab. Но тогда   сдвигает блок на целых четыре  клетки.

Вопрос:  можно ли сдвинуть блок текста вправо всего на одну клетку?
Глубина истории на графиках акций, Как увеличить количество свечей?
 
Да, с двоеточием работает. Чтобы таблица data_source содержала ненулевые значения, график должен быть открыт, интервал графика не важен.
Глубина истории на графиках акций, Как увеличить количество свечей?
 
Я вызывал функцию CreateDataSource из индикатора, а в списке доступных из индикатора функций ее нет. Видно в этом и есть причина, что не работает.
Однако функции getCandlesByIndex тоже нет в этом списке, но она в индикаторе работает нормально.
Если вызвать CreateDataSource из скрипта, то сообщения   "attempt to call global 'CreateDataSource' (a nil value)" уже нет, но извлечь элементы таблицы data_source не получается. Полный код приведен ниже.
Операторы message  и PrintDbgStr выдают сообщение  S=function: 152CAE70 Cl=nil
Пробовал получить цену close 1-й свечи так: Cl=data_source[1].С и тоже безуспешно.

Код
function main()
 data_source=CreateDataSource("TQBR","SBER",INTERVAL_M1) 
 S=data_source.Size -- кол-во свечей 
 Cl=data_source.C(1) -- Close 1-й свечи
 PrintDbgStr("Size=" .. tostring(S) .. " Close1=" .. tostring(Cl))  
 message("Size=" .. tostring(S) .. " Close1=" .. tostring(Cl))
end
Глубина истории на графиках акций, Как увеличить количество свечей?
 
Цитата
Egor Zaytsev написал:
Да это так.
А если это так,  то для накапливания  истории сверх 3000 свечей надо ежедневно вызывать графики всех интересующих  акций на всех интересующих интервалах, что трудоемко  и практически нереализуемо.
Если же  в течение дня график акции не просматривал, или не запускал терминал, то должна образоваться  дыра истории.
В Lua есть функция CreateDataSource для заказа данных по нужному интервалу. По идее если написать скрипт с перебором интересующих акций и интервалов и запускать его ежедневно 1 раз, то можно накопить историю.
Но и здесь я столкнулся с непонятной проблемой: функция не работает - выдает сообщение "attempt to call global 'CreateDataSource' (a nil value)".
Глубина истории на графиках акций, Как увеличить количество свечей?
 
Мне надо выполнить тестирование на исторических данных по акциям на 10 минутном графике, но не хватает глубины истории и из-за этого нельзя получить статистически значимые результаты.

В руководстве в разделе "перезаказ данных" написано, что на рабочем месте QUIK хранится до 65000 свечей. Такое количество свечей имеется только на минутном графике, а с увеличением периода оно уменьшается. На примере акций Сбербанка картина такая:
1 минута - 66061 свечей с 27.12.2017
5 минут - 21642 свечей с 10.05.2017
10 минут - 3106 свечей с 30.04.2018
1 час - 4270 свечей с 16.09.2016
1 день - 3142 свечей с 12.12.2005
В целом наблюдается закономерность: чем больше интервал графика, тем глубже история свечей. Поэтому непонятно, почему на 10 минутном графике  история начинается позднее, чем на 1 и 5 минутном графиках и свечей на порядок меньше. Может это связано с тем, что раньше я постоянно работал с 1м, 5м, 1ч и 1д, а 10 минутные графики никогда не вызывал?

Вопрос такой: можно ли увеличить глубину истории на 10 минутном графике соразмерно с другими периодами, скажем до 10000-15000 свечей?  может где-то есть архивы исторических данных?
Функция SetRangeValue рисует лишнюю линию, Как убрать линию, соединяющую уровни, заданные SetRangeValue
 
Цитата
s_mike@rambler.ru написал:
TYPE_CANDLE )
Спасибо за помощь. Если в Settings задать Type=TYPE_CANDLE, то уровни линией не соединяются. Уровни рисуются пунктиром и  хорошо видны при толщине 1. Странно, что в руководстве в списке типов линий TYPE_CANDLE вообще нет.
Функция SetRangeValue рисует лишнюю линию, Как убрать линию, соединяющую уровни, заданные SetRangeValue
 
Когда в индикаторе с помощью функции SetRangeValue задаю горизонтальные отрезки на разных уровнях, то эти отрезки почему-то соединяются линией. Если ввести такой блок:

sz=Size()
SetRangeValue(1,sz-3,sz,100)
SetRangeValue(1,sz-7,sz-5,200)

то получится картина, как на скане внизу слева, а по идее в точке sz-4 должно быть пусто. Попробовал  добавить оператор SetValue(sz-4,1,nil), который казалось бы должен стереть эту линию, но это ничего не дает.

Все-же от ненужной  линии можно избавится, если в Settings задать Type=TYPE_POINT. Тогда вместо линии будут точки, как показано на другом скане внизу справа.  
Вроде на этом можно и забить кол, однако разве душа трейдера может смириться с этим? - Точки то совсем блекнут при растягивании графика, то сливаются в яркую линию при сжатии графика, в отличие от нормальной линии.

Интересно, есть ли другое решение этой проблемы,  с использованием Type=TYPE_LINE?  



 
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Egor Zaytsev написал:
Проверьте в пункте меню Система - Заказ данных - Поток обезличенных сделок, есть ли в списке данный режим торгов.
Если его нет, то брокер Вам не предоставил права на получение обезличенных сделок по данному классу.
Похоже, что не предоставил. Есть режим "РПС: Размещение: Адресные заявки (облигации)", но он к фьючерсам не относится. Других "РПС" нет.

Кстати биржа ответила на вопрос о  несоответствии трансляции открытого интереса и объема так:
"Термины SPBFUT и PSFUT относятся к работе QUIK, на бирже эти термины не используются. С данным вопросом вам следует обратиться к ARQA Technologies, разработчику ПО QUIK."

Вопрос был задан бирже в такой форме:
"В Quik биржа транслирует открытый интерес фьючерса без привязки к классу, т.е. суммарно по классам  SPBFUT и PSFUT, а объем транслирует только по классу SPBFUT.
Можно ли узнать открытый интерес только по классу SPBFUT , либо объем по классу PSFUT, либо суммарный объем по классам SPBFUT и PSFUT? А если да,
то возможно ли это в режиме реального времени на минутном графике? "

Видимо биржа не поняла вопрос или сделала вид, что не поняла.
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Sergey Gorokhov написал:
известен, он в таблице обезличенных сделок транслируется, опять же по классу PSFUT
Вызвал таблицу обезличенных сделок в конце дня и ни одной сделки по фьючерсам класса PSFUT я в ней не нашел. Все сделки там только класса SPBFUT. Проверил это по нескольким фьючерсам, результат один и тот же.
При вызове таблицы обезличенных сделок я выбрал группу "FORTS: Фьючерсы", затем "Фильтр ценных бумаг" и добавил фьючерсы, потом добавил поле "Код класса". Может что-то сделал не так?
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Sergey Gorokhov написал:
это режим переговорных сделок по фьючерсам.
По определению режим переговорных сделок – это режим сделок без предварительного депонирования средств с отложенной датой исполнения, предусматривающий возможность заключения адресных и безадресных сделок.
Заключать сделку с отложенной датой исполнения имеет смысл для хеджирования и тогда такие сделки должны быть крупными.  
Если запустить индикатор отношения изменения открытого интереса к объему F=dOI/V на дневном или часовом графике, то аномалия F>1 наблюдается только на старых барах, где объемы совсем малы. В то время  еще действовал другой более ближний контракт и спекулянтов на текущем контракте  было мало, а доминировали именно переговорные сделки. Это тоже  говорит в пользу того, что переговорщики - это хеджеры.
Как показывает расчет на минутном графике, неравенство F>1 выполняется на малом количестве  минутных баров, всего 6-14% от их общего количества, в зависимости от фьючерса. Если верно то, что переговорные сделки крупные, то они должны составлять примерно такой же небольшой процент от всех сделок.
Правда все эти наблюдения никак не решают проблему несоответствия dOI и V в трансляции данных биржей. Ведь объем переговорных сделок как я понимаю неизвестен.
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Sergey Gorokhov написал:
Вопрос к бирже.
Она транслирует открытый интерес по инструменту без привязки к какому-либо классу.
А объем в разрезе конкретного класса.
Т.е. если инструмент в классе SPBFUT и PSFUT Вы увидите суммарный открытый интерес по обоим классам а объем только по инструменту из SPBFUT.
Тогда еще позволю себе задать 3 вопроса:
1. Что такое класс PSFUT?
2. Есть ли еще другие классы у фьючерсов кроме SPBFUT и PSFUT?
3. Где можно посмотреть какие бывают классы у фьючерсов?
Доступ к свечам открытого интереса фьючерсов
 
Случайно обнаружил, что у фьючерсов отношение F= OI / V, где OI- пределы изменения открытого интереса на баре (т.е. high - low), а V – объем, бывает больше 1.
По идее F должно быть не больше 1. F=1 может быть   только в 2-х случаях: если все контракты на баре заключаются между новым покупателем и продавцом, либо все они закрываются между старым покупателем и продавцом.
Если запустить приведенный ниже индикатор на минутном графике, то обычно F изменяется от 0 до 2, но у некоторых фьючерсов  достигает и 100 (чтобы индикатор работал, надо для графика указать идентификатор Open_int – об этом подробнее было написано раньше 19.02.18) . Получается, что изменение открытого интереса превышает объем.
Как такое может быть?

Код
Settings=
 {Name="voi",
  line={Name="F",
        Color= RGB(0,128,255),
        Type=TYPE_LINE,
   Width=1}  
  }

function Init()
 return 1
end

function OnCalculate(i)
  sz= Size()
  if i==1 then 
   Id="Open_int" 
   nc=getNumCandles(Id)
   t=getCandlesByIndex (Id, 0, 0, nc)
  end 
  if i<sz then
   i1=i-1 -- нумерация для доступа к свече открытого интереса начинается от 0, а к свече объема от 1  
   if V(i)>0 then
    F=(t[i1].high-t[i1].low)/V(i)
   else 
    F=0
   end    
  end 
  return F
end
Комиссия за клиринг по фьючерсам
 
Цитата
SG написал:
Это позиция, существующая несколько торговых дней. Для неё нужно рассчитывать вариационную маржу отдельно за каждый торговый день.

Спасибо за пример. По этой методике расчета  все сошлось.  Таким образом если позиция открыта несколько дней, то для контрактов, связанных с долларом (нефть, золото, индекс РТС), для расчета прибыли/убытка по позиции надо делать  расчет вариационной маржи за каждый день из-за разных индикативных курсов и стоимости  шага цены.  Расчетная цена – это цена закрытия в 18-44 на минутном графике или в 18 ч на часовом.  Архив расчетных цен содержится на сайте биржи в таблице фьючерсов по ссылке http://www.moex.com/ru/derivatives/contracts.aspx (надо нажать «итоги» по нужному фьючерсу).
Для остальных  контрактов достаточно просто вычесть из цены закрытия цену открытия.  
Доступ к свечам открытого интереса фьючерсов
 
Цитата
Sergey Gorokhov написал:
Да это возможно.
Доступ происходит по тому же принципу что и к графику цены и объема.
Если через getCandlesByIndex, то на нужном графике надо указать идентификатор.
Если через CreateDataSource, то в четвертом параметре надо указать имя параметра, для открытого интереса это "numcontracts"

Спасибо за помощь. Первым способом через  getCandlesByIndex получилось. На всякий случай поясню, если кто не знает как на графике указать  идентификатор (в свое время сам не сразу это понял): правой мышью  на графике жмешь «редактировать», в левом поле окна выбираешь диаграмму «кол-во открытых позиций», дальше  «дополнительно», в поле «идентификатор» задаешь его, например Open_int.  Код может быть такой:

Код
Id="Open_int"
nc=getNumCandles(Id)
t,n,l=getCandlesByIndex (Id, 0, 0, nc)
oi=t[nc-1].close  -- закрытие самой новой свечи открытого интереса

Не могу понять еще такую вещь - что показывает объем в свече на графике открытого интереса?  
Комиссия за клиринг по фьючерсам
 
Цитата
SG написал:
Сначала по терминологии: сделка не может длиться несколько дней, она совершается мгновенно, когда ваша заявка сводится в стакане с другой заявкой противоположного направления. В результате сделки появляется открытая позиция, которая будет существовать, пока вы её не закроете другой сделкой противоположного направления, или пока не наступит экспирация фьючерса. Комиссия за заключение сделки списывается в ближайший клиринг. Комиссия за исполнение фьючерса на экспирации - в клиринг, когда произошло исполнение. За удержание открытой позиции комиссия не берётся. Обратите внимание, комиссия за заключение сделки и комиссия за исполнение - это разные комиссии.
Спасибо за подробные разъяснения. Я думал, что кроме брокерской и биржевой комиссии за открытие и закрытие позиции берется еще комиссия за клиринг.  Получается, что комиссия за исполнение фьючерса   (согласно "Тарифы  *  организации ..."   п. 7 раздела V) берется только в случае, если  додержал контракт до исполнения.  А за перенос (удержание) открытой позиции комиссия не берется.

Все же при расчете прибыли/убытка по позиции у меня не сходится с остатком собственных средств, когда позиция закрывается после 19 ч (реальный остаток немного меньше расчетного).  Брокерскую и биржевую комиссию при этом учитываю в равной мере за открытие и закрытие. Может  беру в расчет не тот индикативный курс?  К примеру, если позиция по фьючерсу на нефть закрылась 15.02.2018 в 19-10, то какой индикативный курс надо брать для расчета прибыли/убытка – курс основного клиринга на 18-30 или промежуточного клиринга на 13-45 на  дату 16.02.2018?  По идее надо брать курс на 18-30.

Обратил внимание, что если позицию открыл до 14 ч, а закрыл после 14 ч того же дня, то в отчетах для  фьючерсов, связанных с долларом (нефть, золото, валюты) объем сделки вычисляется на основании разной стоимости шага цены. Это вводит в заблуждение при расчете прибыли/убытка. Ведь на самом деле при этом расчете надо брать одну и ту же стоимость шага цены по состоянию на 18-30.

В отчете по всем сделкам  в Quik биржевая комиссия присутствует дважды, даже если открытие и закрытие произошло в тот же день, что опять вводит в заблуждение. В брокерском отчете  и в реестре комиссий в личном кабинете  биржевая  комиссия в данном случае  встречается только один раз, как и должно быть.  
Доступ к свечам открытого интереса фьючерсов
 
У свечей  на графике открытого интереса фьючерса такие же параметры как у свечей цены - H,L,O,C,V,T.
Можно ли  в Lua получить доступ к  свечам открытого интереса, например к закрытию C?
Комиссия за клиринг по фьючерсам
 
Возможно, это вопросы к НКЦ (национальному клиринговому центру), но если кто знает, то просьба ответить  хотя бы на часть вопросов насчет  комиссии за клиринг по фьючерсам:
1) Когда начисляется и списывается со счета эта комиссия - в дату заключения сделки? в дату закрытия сделки? в каждый клиринг, включая дневной (если сделка длится несколько дней)?
2) Верно ли то, что комиссия за клиринг по фьючерсам на российские акции равна 0,00425% от суммы контракта?
3) Чему равна комиссия по фьючерсу на золото - 1 или 2 руб?
4) Где я могу посмотреть комиссию за клиринг по своим сделкам? (в брокерском отчете, в личном кабинете в реестре комиссий и в отчетах в Quik эта комиссия не указана)

На сайте http://www.moex.com/s93  в п. 4  даются ссылки, где смотреть  клиринговые тарифы по фьючерсам. В "Тарифах клирингового центра" в п. 36.4 на стр. 65 говорится, что комиссия начисляется в дату ЗАКЛЮЧЕНИЯ сделки. В другом документе "Тарифы  *  кредитной организации ..." в п. 7 раздела V говорится, что комиссия начисляется в дату ИСПОЛНЕНИЯ фьючерсного контракта. По золоту в упомянутом разделе V тарифов указано 1 руб., а в таблице "клиринговые сборы за исполнение срочных контрактов (вызывается по одноименной ссылке в п. 4 сайта) - 2 руб. Разобраться в этих замечательных документах не так то просто.
не отображаются данные на графике
 
Цитата
Egor Zaytsev написал:
Проверьте следующие настройки:
Зайдите в пункт меню Система/Настройки/Основные/Программа/Сохранение данных/

и выберите пункты "Данные, отражающие текущее состояние и всю историю изменений» и «Получать пропущенные данные"
Спасибо, это помогло.  Через пару минут данные подкачались и пробелы закрылись..  
не отображаются данные на графике
 
По теме отсутствия данных на графике еще 1 один вопрос:
На графике «кол-во открытых позиций» у фьючерсов не отображается часть данных с начала сессии, если вошел в терминал через некоторое время  после открытия сессии.
Если через какое-то время  выйти из терминала и снова войти, то картина не меняется, т.е. данные отсутствуют на том же самом интервале. На следующий день пробел в данных прошлого дня заполняется.
Так и должно быть или есть способ  получить пропущенные данные?
График с пропуском данных «кол-во открытых позиций» выглядит так:

 
Страницы: 1 2 След.
Наверх