Почему возникает ошибка при компиляции (до этого красным ничего не подчёркивается), когда я добавляю к правилу .Sync(_locker) инициализированный как
private readonly SyncObject _locker = new SyncObject();
А в итоге: Error 1 The type 'Wintellect.PowerCollections.CollectionBase`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'PowerCollections, Version=1.0.2224.30206, Culture=neutral, PublicKeyToken=8d05ee679e87a45f'.
Kommentare (22)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
private readonly SyncObject _locker = new SyncObject();
private readonly SyncObject _locker = new SyncObject();
private readonly SyncObject _locker = new SyncObject();
В примере урока 6 такая библиотека вообще не подключена, но переменная SyncObject _mainlock используется. Может дело в сборке? Я делаю на базе 4.1.9, а там уже 4.1.16. Тогда это возвращает нас в тему обновления. Сегодня сделаете пример/шаблон, который бы позволял начинать писать робота не с реализации коннектора, а торговой логики? Я протестирую и отпишусь, вышлю солюшн, если и после обновления синхронизация будет выдавать ошибку.
Пока я использую блок lock (_locker). Можно ли его считать аналогом? У меня такое ощущение, что я его использую не к месту, т.к., например, заявки иногда идут дуплетом.
Ну да, конечно. Его и не надо привязывать к урокам. Нужна именно заготовка для начала работы (без углубления на начальном этапе в особенности безопасного соединения), а не обучения.
Я предлагал так, чтобы было удобно всем: выделить шаблон коннектора в отдельный проект, без урока, просто база для начала написания робота. Но на крайняк можно и просто обновить старый проект.
Проект простой заготовки робота опубликован, путь: $/StockSharp Lessons/StockSharp.Edu/Additional/SampleRobot
Вопрос по обновлённой версии.
Насколько я вижу, теперь нельзя узнать, есть ли отправленные, но находящиеся ещё "в пути", заявки с помощью PendingOrders.Any(). Ок, заменим на Orders.Any(o => o.State != OrderStates.Pending). Но даже если и так, то статус у заявки продолжает оставаться Pending даже после того, как она наконец "пришла", т.е. зарегистрировалась либо failed.
А можете проверить на последней версии? Потому что схожую ошибку мы уже лечили, и, возможно, простое обновление, решит ошибку.
Проблема на 4.1.18 есть точно. На 4.1.19 попробую. У товарища тут хотел спросить по поводу всего этого, но ветка readonly.
Давайте еще раз про проблему. Вы хотите сказать, что у вас состояние заявки не переходит и Pending в Active или Done? Я правильно понял вашу ситуацию?
Да. Или Failed.
Вы пробовали скачать архив, распаковать и запустить Sample (если вы используете Quik). В нем так же отображаются только два состояния? Лучше проверить на наши скомпилированных примерах (чтобы не было проблем с кэшрированными библиотеками от других версий).
В посте 10 дана ссылка на проект на базе которого и проверялось. Библиотек перед этим никаких не заменял.
И как проверять на уже скомпилированных примерах для QUIK, как вылавливать нужную точку остановки и баг, менять код?..
В том то и дело, что не нужно ничего этого делать. Судя по всему ошибка у вас локальная. Поэтому уже скомпилированный пример это подтвердит.
Можно ли как-то по-срочному вернуть коллекцию PendingOrders в StockSharp.Algo.Strategies ? А то и не туда и не сюда: со старой версией библиотеки, но с PendingOrders уже работать нельзя, а в новой баг со сменой статуса заявки.
Судя по указанной в документации версии апдейта, ничего не поменялось. Упоминания о возврате PendingOrders тоже нет.
Но ведь В посте 10 дана ссылка на проект на базе которого и проверялось. Библиотек перед этим никаких не заменял.
Посмотрите проект $/StockSharp Lessons/StockSharp.Edu/Additional/Lesson_last_version_ss/01/StockSharpStart в частности следующий код:
Данный код демонстрирует, как получать новые заявки и их изменения, полагаю, это то, что Вам нужно.
Да, я сегодня в указанный выше пример вставил вот такой смешной код. Показывает пендинги корректно. Надо побольше узнать о таком явлении как кеширование библиотек и попробовать заново всё сделать.