Здравствуйте, есть проблема с вызовом события на Order.Matched. Версия 4.0.19 Создаю заявку:
var order = this.CreateOrder(direction, dealPrice, lotSize);
base.RegisterOrder(order);
потом создаю событие на исполнение заявки:
StrategyRule stopRule = this.When(order.Matched());
stopRule.Do
(() =>
{
...
});
Т.е. если сделка выполнилась, заходим в правило и выставляем стоп, но на деле происходит так. Например я покупаю 50 лотов, но покупка произошла не одной сделкой а допустим 3-мя, в итоге событие order.Matched отрабатывается 3 раза. В документации написано что Matched это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?
Комментарии (15)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Ребята, что у всех работает?
Стокшарп использует ну очень мало человек. Муханчиков приводит какую-то статистику, но все просто бросают библиотеку, когда с ней повозятся.
Причин много: Matched глючит, например. Это означает, что в документации про этот метод - враньё, и надеяться на метод нельзя. Сохранение данных в хранилище вообще не оттестировано и не работает. Новые методы в новых весиях не работают с самого начала.
И всем пофиг
Над библиотекой работают 2-3 человека. Совершенно безвозмездно.
Хотите помогать - помогайте. Ошибки которые находятся - исправляются. Хотите тестировать - тестируйте.
вызов order.Matched несколько раз ещё не посмотрели. Мы не можем отвечать на найденные ошибки в течение пары часов. Вы раньше писали о том что Matched глючит? Нет.
Вы можете бесплатно весь день посвящать библиотеке, исправлению ошибок да ответам на вопросы на форуме? Если да - мы готовы дать исходники.
Критиковать все горазды. Как речь заходит о помощи - все пасуют, да ждут других.
Если это было оправданием, то оно явно не катит. Думаете наша команда - это такая урна, в которую можно излить все, что накипело? Ошибаетесь. У нас и своих забот хватает каждодневно. Выслушивать еще и неблагодарную критику нет никакого желания.
Это был ремень. Теперь нравоучение.
Давайте попытаемся понять все вместе, почему все именно так, как оно есть сейчас, а не так, как хотелось бы. Есть проект, который развивает постоянно. Когда я говорю постоянно, я имею ввиду именно не от версии к версии, а от новой идеи к реализации. Идеи идут постоянно. Реализации также. Баги реализаций, естественно, идут вслед. Кто их будет фиксить? Их будем фиксить мы. А кто будет делать новое? Предполагалось, что в проект будут вливаться постоянно новые участники. Но новые как-то не особо появляются. Висят текущие задачи, все проходят мимо. Мол не наши проблемы, это проблемы команды StockSharp. А баги в ваших роботах - это тоже что ли наши проблемы? Может еще и риски на нас? Ваша то тогда где доля? Да, да, лично к вам обращаюсь, freelancer, что вы лично сделали для проекта, что начинаете критиковать? Или суть фразы "некоммерческий проект, развивающийся совместными усилиями" не понятна?
Или никак не доходит, что не помогая с решениями текущих задач, вы тем самым себе же делаете подлянку в перспективе? Что, когда у вас будет лично проблема, ее никто быстро не исправит из-за нехватки рук? Неужели эта взаимосвязь не видна?
По поводу конкретной ошибки. Подозреваю, что тянется из-за той же проблемы, которая наблюдается у котирования. Под Плазу работает, под Квик не пашет (уверен, что именно Квик у автора). Квик шлет изменения как ему угодно. Нормальное АПИ закрыто от использования. Нам что теперь, так же кричать на форумах Квика? Им мозг выносить? Думаете глыба сдвинется и скажет "ребята, конечно, мы все поняли, простите нас, вот вам АПИ нормально"? Ничего подобного. Нам душу изливать некуда. Почему мы тогда должны от вас подобное выслушивать?
Я еще в том году говорил, что робот на Квике - это нестабильное решение и мука до конца дней. Предлагал варианты. Лежит Транзак почти доделанный. Есть новехонький Алор. Есть другие варианты. Где сдвиги то? Кто-нибудь высказался ЗА? Никто. Значит всё всех устраивает. Так а какого тогда, простите, вы тут душу изливаете, если всех всё устраивает?
Я бы предложил: если нашел ошибку или непонятки выложи конфиг терминала, проект поминимуму чтоб ошибка проявлялась. Тогда и разобраться проще. Лично я бы такие просьбы рассматривал(может не все но все же). Иногда просто лень создавать кучу строк кода ради того чтобы проверить одну. Это мое предложение всем пользователям библиотеки. Таким образом можно наверно и кодить нормально научиться)) И я лично благодарен ребятам уже только за то что могу нормально данные из квика получить и обработать. Спасибо
var order = this.CreateOrder(direction, dealPrice, lotSize); base.RegisterOrder(order);
Именно поэтому изменение происходит 2 раза и 2 раза срабатывает правило.
var order = this.CreateOrder(direction, dealPrice, lotSize); base.RegisterOrder(order);
Я имел ввиду то, что новичок читает сообщения типа этого, офигивает от счастья и качает библиотеку. Допустим у него что-то не получается и оказывается, что дела обстоят так, как сказал Михаил.
На главной странице надо написать:
Без сопливых разберемся, что и как написать. Создавайте свой сайт, и пишите на его страницах что захотите. Нас поучать не нужно.
Возвращаясь к разговору. Пометка Once говорит лишь о том, что правило будет активировано 1 раз. Но проблема может возникнуть если одновременно правило дёргается из нескольких потоков.
Если хотите это избежать - создайте правило с Sync.
А каким образом данное правило(order.Matched) может дернутся из разных потоков?
Оно подписывается на события NewOrder и OrderChanged. А они могут придти из разных потоков.