Order.Matched вызывается несколько раз
Atom Ответить
02.03.2012


Здравствуйте, есть проблема с вызовом события на 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 Ответов
russ

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


Ребята, что у всех работает?
Автор топика
Спасибо:

freelancer

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


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

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

И всем пофиг
Спасибо:

Alexander

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


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

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

И всем пофиг



Над библиотекой работают 2-3 человека.
Совершенно безвозмездно.

Хотите помогать - помогайте. Ошибки которые находятся - исправляются.
Хотите тестировать - тестируйте.

вызов order.Matched несколько раз ещё не посмотрели. Мы не можем отвечать на найденные ошибки в течение пары часов.
Вы раньше писали о том что Matched глючит? Нет.

Вы можете бесплатно весь день посвящать библиотеке, исправлению ошибок да ответам на вопросы на форуме? Если да - мы готовы дать исходники.

Критиковать все горазды. Как речь заходит о помощи - все пасуют, да ждут других.
Спасибо:

Serg

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


Я бы предложил: если нашел ошибку или непонятки выложи конфиг терминала, проект поминимуму чтоб ошибка проявлялась. Тогда и разобраться проще. Лично я бы такие просьбы рассматривал(может не все но все же). Иногда просто лень создавать кучу строк кода ради того чтобы проверить одну. Это мое предложение всем пользователям библиотеки. Таким образом можно наверно и кодить нормально научиться))
И я лично благодарен ребятам уже только за то что могу нормально данные из квика получить и обработать. Спасибо
Спасибо:

russ

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


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

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

И всем пофиг

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

freelancer

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


russ Перейти
Зачем так жестко

Накатило как-то Crying
Спасибо:

russ

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


freelancer Перейти
russ Перейти
Зачем так жестко

Накатило как-то Crying

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

Mikhail Sukhov

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


freelancer Перейти
russ Перейти
Зачем так жестко

Накатило как-то Crying


Если это было оправданием, то оно явно не катит. Думаете наша команда - это такая урна, в которую можно излить все, что накипело? Ошибаетесь. У нас и своих забот хватает каждодневно. Выслушивать еще и неблагодарную критику нет никакого желания.

Это был ремень. Теперь нравоучение.

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

Или никак не доходит, что не помогая с решениями текущих задач, вы тем самым себе же делаете подлянку в перспективе? Что, когда у вас будет лично проблема, ее никто быстро не исправит из-за нехватки рук? Неужели эта взаимосвязь не видна?

По поводу конкретной ошибки. Подозреваю, что тянется из-за той же проблемы, которая наблюдается у котирования. Под Плазу работает, под Квик не пашет (уверен, что именно Квик у автора). Квик шлет изменения как ему угодно. Нормальное АПИ закрыто от использования. Нам что теперь, так же кричать на форумах Квика? Им мозг выносить? Думаете глыба сдвинется и скажет "ребята, конечно, мы все поняли, простите нас, вот вам АПИ нормально"? Ничего подобного. Нам душу изливать некуда. Почему мы тогда должны от вас подобное выслушивать?

Я еще в том году говорил, что робот на Квике - это нестабильное решение и мука до конца дней. Предлагал варианты. Лежит Транзак почти доделанный. Есть новехонький Алор. Есть другие варианты. Где сдвиги то? Кто-нибудь высказался ЗА? Никто. Значит всё всех устраивает. Так а какого тогда, простите, вы тут душу изливаете, если всех всё устраивает?
Спасибо: Alexander

Alexander

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


russ Перейти
Здравствуйте, есть проблема с вызовом события на 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 это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?



1) Сделайте Once, тогда правило выполнится 1 раз
2) Это происходит по следующей причине:
- правило Matched подписано на изменение ордера
- изменение ордера происходит при
а) ответе на посланную транзакцию
б) при обновлении таблицы своих сделок

Именно поэтому изменение происходит 2 раза и 2 раза срабатывает правило.
Спасибо:

russ

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


Alexander Mukhanchikov Перейти
russ Перейти
Здравствуйте, есть проблема с вызовом события на 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 это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?



1) Сделайте Once, тогда правило выполнится 1 раз
2) Это происходит по следующей причине:
- правило Matched подписано на изменение ордера
- изменение ордера происходит при
а) ответе на посланную транзакцию
б) при обновлении таблицы своих сделок

Именно поэтому изменение происходит 2 раза и 2 раза срабатывает правило.

Да, я как только этот баг увидел сразу сделал.
Спасибо большое за помощь.
Автор топика
Спасибо:

freelancer

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


Я имел ввиду то, что новичок читает сообщения типа этого, офигивает от счастья и качает библиотеку. Допустим у него что-то не получается и оказывается, что дела обстоят так, как сказал Михаил.

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

Mikhail Sukhov

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


freelancer Перейти
На главной странице надо написать:


Без сопливых разберемся, что и как написать. Создавайте свой сайт, и пишите на его страницах что захотите. Нас поучать не нужно.
Спасибо:

Alexander

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


Возвращаясь к разговору.
Пометка Once говорит лишь о том, что правило будет активировано 1 раз.
Но проблема может возникнуть если одновременно правило дёргается из нескольких потоков.

Если хотите это избежать - создайте правило с Sync.

Код
           this
               .When(order.Matched())
               .Do(() => {...})
               .Once()
               .Sync(new object());
Спасибо:

vader

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


А каким образом данное правило(order.Matched) может дернутся из разных потоков?
Спасибо:

Alexander

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


vader Перейти
А каким образом данное правило(order.Matched) может дернутся из разных потоков?


Оно подписывается на события NewOrder и OrderChanged.
А они могут придти из разных потоков.
Спасибо:


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

loading
clippy