Не правильное время дневного клиринга Forts (разработчики обратите внимание!)


Не правильное время дневного клиринга Forts (разработчики обратите внимание!)
Atom Ответить
16.01.2017


При использовании ExchangeBoard.Forts.IsTradeTime(CurrentTime) получаю время дневного клиринга с 14.00 по 14.03, что не верно! Кто чем пользуется?



Спасибо:




14 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.01.2017
Ответить


Чтобы ваши сообщения были видны технической поддержке, предлагаем вам пройти процедуру, описанную здесь https://stocksharp.ru/articles/7809/support-20/
Спасибо:

sulima-sm

Фотография
Дата: 17.01.2017
Ответить


Добрый день. Можете ничего не делать! Я Вам в частности как заинтересованному лицу сообщил о некорректном предоставлении информации вашими библиотеками! Могли бы спасибо сказать, а не перенаправлять!!!
Автор топика
Спасибо: Mikhail Sukhov

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.01.2017
Ответить


Я говорю вам Спасибо и мы обязательно устраним недочет в следующих версиях.

А еще я вам привёл ссылку, которая покажет как можно писать напрямую подобные баг репорты, минуя промежуточные инстанции. На форуме постоянно что-то новое появляется, и за всем отследить невозможно. Плюс вам самому будет это полезно. Не понимаю, почему мой совет вызвал такую негативную реакцию, но постараюсь впредь вам больше не писать про это.
Спасибо:

Slepoy

Фотография
Дата: 17.01.2017
Ответить


Как по мне, не желательно пользоваться такими методами. Биржа время клирингов меняет как ей вздумается. Взять тот же вечерний, который переодически продлевается при экспирации опциков. Проще вручную задавать в отдельной переменной, которую можно менять вручную в окне WPF, чем потом переписывать бота. Вот завтра биржа снова подвинет дневной клиринг, причём на день/два ради какого-нибудь теста, а потом вернёт и что делать? Придётся переписывать бота. Просто ждать не получится, т.к. вряд ли СтокШарповцы выпустят спец релиз API, ради перепила одного метода, чтобы через пару дней вернуть всё обратно. Проще самому вручную контролировать такие нежданчики. Я бы вообще данный метод выпилил, т.к. он явно основан на каких-то готовых шаблонах, в которых заранее жёстко прописано время.

Не надо устранять сей недочёт, надо просто выпилить сей метод. Лучше пусть разарботчики займутся глюком со стопами, точнее обратной связью от них. Мне даже по барабану на спец средства типа: Order.DerivedOrder и WhenActivated, не работают ну и пофиг. Но должны работать базовые события: когда стоп активируется и выставляет лимитку в стакан - должно срабабывать событие появление заявок. Я её там отловлю, без вяких спец средств типа Order.DerivedOrder и WhenActivated. И когда реальная лимитка порождённая стопом - исполняется должно отработать событие появление моих сделок. Но не то, не это - не отрабатывает. На старом API 4.3.13 - всё работает! Базовые события там работают. На новом же ничего не пашет. Я напомню, что API 4.3.13 вышло не так и давно, всего год назад, но там базовые вещи работают как положено. Вот что нужно чинить в первую очредь, а не время клирингов которое биржа перепиливает как ей вздумается. Вот скоро уже недельные опционы запустят, там полюбасу опять чего-нибудь намутят с клирингами.
Спасибо:

Evgeny

Фотография
Курсы
Дата: 17.01.2017
Ответить


Это же можно в csv сохранить, настроить как правильно (либо через интерфейс, либо в самом файле), а при запуске бота подгрузить обратно.
И ничего не надо ни в боте менять, ни ждать разработчиков. Все что нужно для этого в API есть.
Спасибо:

Slepoy

Фотография
Дата: 17.01.2017
Ответить


Evgeny Перейти
Это же можно в csv сохранить, настроить как правильно (либо через интерфейс, либо в самом файле), а при запуске бота подгрузить обратно. И ничего не надо ни в боте менять, ни ждать разработчиков. Все что нужно для этого в API есть.

Так он получает время из метода ExchangeBoard.Forts.IsTradeTime(CurrentTime), а не из отдельного файла настроек. Чтобы изменить жёсткую запись в коде var time = ExchangeBoard.Forts.IsTradeTime(CurrentTime); ему придется заранее создавать спец механизм где именно присваивать новое значение. Конечно можно тупо присвоить новое значение где-нибудь в конструкторе, которое будет подгружено из внешнего файла. Но я всё равно не вижу смысла в данном методе. Получается ему надо будет делать ещё и переключатель, когда подгружать значение из файла, а когда из метода. Проще сразу выпилить метод и просто грузить из файла.

Хотя, может где-то в API уже прошит готовый механизм по сохранению и загрузке данных настроек. Может я и усложняю. Я просто ещё не всё видео-обучение освоил, только половину, так что могу кое-где заблуждаться. Но метод я бы всё равно выпилил: меньшее число элементов в системе - даёт лучшую стабильность и меньшую путаницу.
Спасибо:

RomSunZ

Фотография
Программист
Дата: 18.01.2017
Ответить


Так вроде же биржа транслирует начало/окончание сессий или там тоже не корректное время указывается?
Спасибо:

Slepoy

Фотография
Дата: 18.01.2017
Ответить


RomSunZ Перейти
Так вроде же биржа транслирует начало/окончание сессий или там тоже не корректное время указывается?

Так тут типа клиринг, в Квике я не нашёл данного параметра. Да, там есть начало/окончание сессий, но время клиринга нету. Статус клиринга есть, а время нема. Или я плохо искал? Там параметров тьма, может и проморгал. Можно в принципе клиринг выцеплять по текущему статусу инструмента: типа торгуется/нет. Для точной уверенности, надо спросить у народа, который использует Плазу, может там транслируется этот "временной диапазон дневного клиринга", хотя я чего-то сомневаюсь что там такое есть.
Спасибо:

sulima-sm

Фотография
Дата: 18.01.2017
Ответить


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

public ExchangeBoard myForts = new ExchangeBoard
{
Code = "myForts",
WorkingTime = new WorkingTime
{
Periods = new List<WorkingTimePeriod>
{
new WorkingTimePeriod
{
Till = DateTime.MaxValue,
Times = new List<Range<TimeSpan>>
{
new Range<TimeSpan>("10:00:00".To<TimeSpan>(), "14:00:00".To<TimeSpan>()),
new Range<TimeSpan>("14:05:00".To<TimeSpan>(), "18:45:00".To<TimeSpan>()),
new Range<TimeSpan>("19:00:00".To<TimeSpan>(), "23:50:00".To<TimeSpan>())
}
}
}
}
};
и дальше
ExchangeBoard.Forts.WorkingTime = myForts.WorkingTime;
Автор топика
Спасибо:

sulima-sm

Фотография
Дата: 18.01.2017
Ответить


Подскажите пожалуйста еще момент!) Стокшарп позиционирует свой продукт как полностью бесплатный (за исключением нескольких коннекторов). При попытке использования котирования система запросила лицензию, получил бесплатную - итог "Ваша лицензия не поддерживает котирование". При попытке использования дочерних стратегий TakeProfitStrategy и StopLossStrategy (делал все по мануалу) получил ошибку типа не зарегистрирован отфильтрованный стакан инструмента, RegisterFilteredMarketDepth пробовал безуспешно.
Для этих дочерних стратегий тоже нужна лицензия? Если нет ---киньте пожалуйста код, или придется делать через обычную стоп-заявку(((
Заранее всем спасибо.
Автор топика
Спасибо:

RomSunZ

Фотография
Программист
Дата: 18.01.2017
Ответить


Slepoy Перейти
RomSunZ Перейти
Так вроде же биржа транслирует начало/окончание сессий или там тоже не корректное время указывается?

Так тут типа клиринг, в Квике я не нашёл данного параметра. Да, там есть начало/окончание сессий, но время клиринга нету. Статус клиринга есть, а время нема. Или я плохо искал? Там параметров тьма, может и проморгал. Можно в принципе клиринг выцеплять по текущему статусу инструмента: типа торгуется/нет. Для точной уверенности, надо спросить у народа, который использует Плазу, может там транслируется этот "временной диапазон дневного клиринга", хотя я чего-то сомневаюсь что там такое есть.


Извиняюсь, речь шла о промежуточном клиринге, а он действительно не указывается.
Вы с каким коннектором работаете?
Если квик - то там беда. Сессия может быть приостановлена (например сбой на бирже), но квик транслирует статус сессии по инструменту как Active. Транзак в этом плане более подробно дает информацию, плаза думаю тоже, но не смотрел. А во время клиринга статус инструмента в квике стоит "приостановлено", как положено.
Спасибо: Slepoy

Slepoy

Фотография
Дата: 19.01.2017
Ответить


RomSunZ Перейти
Извиняюсь, речь шла о промежуточном клиринге, а он действительно не указывается.
Вы с каким коннектором работаете? Если квик - то там беда. Сессия может быть приостановлена (например сбой на бирже), но квик транслирует статус сессии по инструменту как Active. Транзак в этом плане более подробно дает информацию, плаза думаю тоже, но не смотрел. А во время клиринга статус инструмента в квике стоит "приостановлено", как положено.

Интересное наблюдение на счёт трансляции во время сбоев. Я даже не думал как-то про это. У меня коннектор Квик. Получается, что действительно способ опираться на один "статус" не надёжен. Особенно меня беспокоят сбои биржи. Я думаю нужно постоянно пасти какую-то комбинанацию, типа совокупность параметров: наличие активности стакана + статус любой + аномальная вола цены в 1 секунду = это типа признаки сбоя. Совокупность же где: активность стакана ноль + статус "приостановлено" + вола в секунду ноль = это типа промежуточный/вечерний клиринг.... либо ночь... либо просто всё упало )))... либо кто-то спёр серваки у биржи/брокера ))). И желательно это одновременно пасти у двух брокеров сразу, с некой синхронизацией, да ещё через разные терминалы - тогда вообще будет контроль шикарный.

Спасибо:

RomSunZ

Фотография
Программист
Дата: 19.01.2017
Ответить


Достаточно будет парсить ошибки коннектора при выставлении заявки (там она какая-то определенная типа эта сессия не идет, а на квике ХФТ все равно не получится) и статус инструмента. Получили ошибку => отменяйте выставление заявок и ждите изменения стакана. Большего не нужно. На вечернем клиринге статус инструмента точно приостановлено, на дневном вроде тоже меняется - надо посмотреть. Все остальное - пустое усложнение логики.
Спасибо:

Slepoy

Фотография
Дата: 19.01.2017
Ответить


RomSunZ Перейти
Достаточно будет парсить ошибки коннектора при выставлении заявки (там она какая-то определенная типа эта сессия не идет, а на квике ХФТ все равно не получится) и статус инструмента. Получили ошибку => отменяйте выставление заявок и ждите изменения стакана. Большего не нужно. На вечернем клиринге статус инструмента точно приостановлено, на дневном вроде тоже меняется - надо посмотреть. Все остальное - пустое усложнение логики.

Ну в последнем сообщение я больше уже не про клиринг имелл ввиду, а в целом, т.е. глюки всей системы: биржа > брокер > комп. Ну а так да, если стратегия построена на выставление заявок на первой секунде после клиринга, то тут согласен - можно просто парсить ошибки при выставлении заявки и мониторить стака. Хотя стакан - спорное решение, при снятии/выставлении заявок он же тоже меняется, как по мне - лучше мониторить появление хотя бы одной новой сделки, хотя это будет медленней, но зато безопасней. Кстати, насколько мне известно, биржа ввела сбор за ошибочные транзакции, если выставлять их как раз в такие периоды, это типа защита от HFT, которые пытаются влезти первыми, т.е. можно ещё и на бабло попасть )))

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy