← 戻る

проблема с WhenIntervalElapsed

Как правильно прописывать WhenIntervalElapsed? при следующем коде метод Test вызывается почему-то несколько раз


protected override void OnStarting()
        {
            this.Trader.WhenIntervalElapsed(new TimeSpan(0, 0, 10)).Do(Test).Apply(this);
            base.OnStarting();
        }
public void Test()
        {
            this.AddInfoLog("1....");
            this.AddInfoLog("2....");
            this.AddInfoLog("3....");
        }

При этом, если в методе Test всего одна строчка, то проблема пропадает.

このトピックは参考になりましたか?

トピックを共有

コメント (20)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Alexander
Alexander

Покажите лог, который это воспроизводит. Как правильную на ваш взгляд ситуацию, так и неправильную.

Azat
Azat 著者

Добавил в OnStarting() что бы было видно, что процесс идет

this.Security.WhenMarketDepthChanged().Do(Test1).Apply(this);

и функцию


private void Test1()
        {
            this.AddInfoLog(this.Security.BestBid.ToString());
        }

и вот, что получается в логах: | 05.07.2012 18:08:25.484 | | Стратегия запущена. | 05.07.2012 18:08:25.531 | | Бид 9132 322 | 05.07.2012 18:08:26.515 | | Бид 9132 302 | 05.07.2012 18:08:27.515 | | Бид 9131 320 | 05.07.2012 18:08:28.515 | | Бид 9131 345 | 05.07.2012 18:08:29.546 | | Бид 9132 5 | 05.07.2012 18:08:30.546 | | Бид 9132 11 | 05.07.2012 18:08:31.546 | | Бид 9133 7 | 05.07.2012 18:08:32.546 | | Бид 9132 13 | 05.07.2012 18:08:33.546 | | Бид 9132 5 | 05.07.2012 18:08:34.546 | | Бид 9132 5 | 05.07.2012 18:08:35.515 | | 1... | 05.07.2012 18:08:35.515 | | 2... | 05.07.2012 18:08:35.531 | | 3... | 05.07.2012 18:08:35.546 | | Бид 9132 5 | 05.07.2012 18:08:35.546 | | 1... | 05.07.2012 18:08:35.562 | | 2... | 05.07.2012 18:08:35.593 | | 3... | 05.07.2012 18:08:35.593 | | 1... | 05.07.2012 18:08:35.609 | | 2... | 05.07.2012 18:08:35.625 | | 3... | 05.07.2012 18:08:36.546 | | Бид 9132 25 | 05.07.2012 18:08:37.546 | | Бид 9132 29 | 05.07.2012 18:08:38.546 | | Бид 9132 6 | 05.07.2012 18:08:39.546 | | Бид 9131 1 | 05.07.2012 18:08:40.546 | | Бид 9133 6 | 05.07.2012 18:08:41.546 | | Бид 9130 308 | 05.07.2012 18:08:42.546 | | Бид 9131 370 | 05.07.2012 18:08:43.546 | | Бид 9131 300 | 05.07.2012 18:08:44.546 | | Бид 9131 300 | 05.07.2012 18:08:45.546 | | Бид 9131 325 | 05.07.2012 18:08:45.640 | | 1... | 05.07.2012 18:08:45.640 | | 2... | 05.07.2012 18:08:45.671 | | 3... | 05.07.2012 18:08:45.687 | | 1... | 05.07.2012 18:08:45.718 | | 2... | 05.07.2012 18:08:45.781 | | 3... | 05.07.2012 18:08:46.546 | | Бид 9132 2

Azat
Azat 著者

А если Test() такой, то почему то нормально


public void Test()
        {
            this.AddInfoLog("1....");
            //this.AddInfoLog("2....");
            //this.AddInfoLog("3....");
        }

Лог: | 05.07.2012 18:11:57.437 | | Стратегия запущена. | 05.07.2012 18:11:58.218 | | Бид 9147 95 | 05.07.2012 18:11:59.218 | | Бид 9147 95 | 05.07.2012 18:12:00.218 | | Бид 9147 8 | 05.07.2012 18:12:01.218 | | Бид 9146 120 | 05.07.2012 18:12:02.218 | | Бид 9147 27 | 05.07.2012 18:12:03.218 | | Бид 9147 85 | 05.07.2012 18:12:05.218 | | Бид 9147 40 | 05.07.2012 18:12:06.218 | | Бид 9147 44 | 05.07.2012 18:12:07.218 | | Бид 9147 44 | 05.07.2012 18:12:07.468 | | 1... | 05.07.2012 18:12:08.218 | | Бид 9147 13 | 05.07.2012 18:12:09.218 | | Бид 9147 3 | 05.07.2012 18:12:10.218 | | Бид 9147 5 | 05.07.2012 18:12:11.218 | | Бид 9147 28 | 05.07.2012 18:12:12.218 | | Бид 9147 28 | 05.07.2012 18:12:13.218 | | Бид 9148 16 | 05.07.2012 18:12:14.218 | | Бид 9148 11 | 05.07.2012 18:12:15.218 | | Бид 9149 231 | 05.07.2012 18:12:16.218 | | Бид 9149 9 | 05.07.2012 18:12:17.218 | | Бид 9149 9 | 05.07.2012 18:12:17.468 | | 1... | 05.07.2012 18:12:18.218 | | Бид 9149 11 | 05.07.2012 18:12:19.218 | | Бид 9149 10 | 05.07.2012 18:12:20.218 | | Бид 9150 93 | 05.07.2012 18:12:21.218 | | Бид 9152 92 | 05.07.2012 18:12:22.218 | | Бид 9152 3 | 05.07.2012 18:12:23.218 | | Бид 9152 34 | 05.07.2012 18:12:24.218 | | Бид 9152 6 | 05.07.2012 18:12:25.218 | | Бид 9152 28 | 05.07.2012 18:12:26.218 | | Бид 9152 7 | 05.07.2012 18:12:27.218 | | Бид 9153 20 | 05.07.2012 18:12:27.468 | | 1...

Alexander
Alexander

Если брейкпоинт поставить в Test1 в случае где много раз вызывается - это воспроизводится? Правило у вас 1 раз создаётся, из других мест Test1 не вызывается?

Azat
Azat 著者

Да, с брейкпоинтом тоже,и проект чистый, только начал разбираться с библиотекой - правило один раз создается. Ради интереса, сейчас добавил в пример SampleSMA LogManager и монитор - происходит тоже самое..


protected override void OnStarting()
		{
			_series
				.WhenCandlesFinished()
				.Do(ProcessCandle)
				.Apply(this);

                        this.Security.WhenMarketDepthChanged().Do(Test1).Apply(this);
                        this.Trader.WhenIntervalElapsed(new TimeSpan(0, 0, 10)).Do(Test).Apply(this);

			// запоминаем текущее положение относительно друг друга
			_isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;

			base.OnStarting();
		}


        private void Test1()
        {
            
            this.AddInfoLog(this.Security.BestBid.ToString());

        }

        public void Test()
        {
            this.AddInfoLog("1...");
            this.AddInfoLog("2...");
            this.AddInfoLog("3...");
        }

А когда вместо WhenIntervalElapsed пишу это this.Trader.WhenTimeCome(DateTime.Now.AddSeconds(10)).Do(Test).Apply(this); то проект просто закрывается через 10 секунд без всяких эксцепшенов.

Azat
Azat 著者

Вот лог который SampleSMA выдает: | 05.07.2012 19:03:11.359 | | Стратегия запущена. | 05.07.2012 19:03:12.375 | | Бид 9197 1 | 05.07.2012 19:03:13.375 | | Бид 9197 1 | 05.07.2012 19:03:14.562 | | Бид 9198 79 | 05.07.2012 19:03:15.562 | | Бид 9198 79 | 05.07.2012 19:03:16.562 | | Бид 9198 79 | 05.07.2012 19:03:17.562 | | Бид 9198 79 | 05.07.2012 19:03:21.390 | | 1... | 05.07.2012 19:03:21.390 | | 2... | 05.07.2012 19:03:21.390 | | 3... | 05.07.2012 19:03:21.562 | | Бид 9199 24 | 05.07.2012 19:03:22.562 | | Бид 9199 24 | 05.07.2012 19:03:23.562 | | Бид 9199 24 | 05.07.2012 19:03:24.562 | | Бид 9199 24 | 05.07.2012 19:03:25.562 | | Бид 9199 24 | 05.07.2012 19:03:26.562 | | Бид 9199 23 | 05.07.2012 19:03:27.562 | | Бид 9199 16 | 05.07.2012 19:03:28.562 | | Бид 9199 15 | 05.07.2012 19:03:29.562 | | Бид 9198 91 | 05.07.2012 19:03:31.390 | | 1... | 05.07.2012 19:03:31.390 | | 2... | 05.07.2012 19:03:31.406 | | 3... | 05.07.2012 19:03:31.421 | | 1... | 05.07.2012 19:03:31.453 | | 2... | 05.07.2012 19:03:31.468 | | 3... | 05.07.2012 19:03:33.562 | | Бид 9198 91 | 05.07.2012 19:03:34.562 | | Бид 9198 91 | 05.07.2012 19:03:35.562 | | Бид 9198 103 | 05.07.2012 19:03:36.562 | | Бид 9198 106 | 05.07.2012 19:03:37.562 | | Бид 9198 91 | 05.07.2012 19:03:38.562 | | Бид 9198 93 | 05.07.2012 19:03:39.562 | | Бид 9198 91 | 05.07.2012 19:03:40.562 | | Бид 9198 91 | 05.07.2012 19:03:41.484 | | 1... | 05.07.2012 19:03:41.484 | | 2... | 05.07.2012 19:03:41.484 | | 3...

и сам проект SampleSMA

Alexander
Alexander

Попробуйте версию с codeplex.

Azat
Azat 著者

Скачал с codeplex версию 4.1.1. Осталось все тоже самое, похоже, что если эта функция не успела отработать за какой-то промежуток времени, то создаются еще потоки с вызовом этой функции, добавил в Test() кроме записей в лог еще вызов свой функции, которая прогоняет данные по коллекции нейросетей, и количество вызовов с двух-трех увеличилось до пяти.


public void Test()
        {
            this.AddInfoLog("1...");
            Forecasting();
            this.AddInfoLog("2...");
            this.AddInfoLog("3...");
        }

Лог:

| 06.07.2012 15:22:19.812 | | Стратегия запущена. | 06.07.2012 15:22:20.125 | | Бид 9000 377 | 06.07.2012 15:22:21.125 | | Бид 9000 377 | 06.07.2012 15:22:22.125 | | Бид 9000 377 | 06.07.2012 15:22:23.125 | | Бид 9000 377 | 06.07.2012 15:22:24.125 | | Бид 9000 377 | 06.07.2012 15:22:24.828 | | 1... | 06.07.2012 15:22:24.843 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64 | 06.07.2012 15:22:24.859 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35 | 06.07.2012 15:22:24.890 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56 | 06.07.2012 15:22:24.906 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57 | 06.07.2012 15:22:24.921 | | 2... | 06.07.2012 15:22:24.937 | | 3... | 06.07.2012 15:22:24.937 | | 1... | 06.07.2012 15:22:24.953 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64 | 06.07.2012 15:22:24.984 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35 | 06.07.2012 15:22:25.000 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56 | 06.07.2012 15:22:25.000 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57 | 06.07.2012 15:22:25.015 | | 2... | 06.07.2012 15:22:25.015 | | 3... | 06.07.2012 15:22:25.031 | | 1... | 06.07.2012 15:22:25.078 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64 | 06.07.2012 15:22:25.093 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35 | 06.07.2012 15:22:25.093 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56 | 06.07.2012 15:22:25.093 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57 | 06.07.2012 15:22:25.109 | | 2... | 06.07.2012 15:22:25.109 | | 3... | 06.07.2012 15:22:25.109 | | 1... | 06.07.2012 15:22:25.125 | | Бид 9000 358 | 06.07.2012 15:22:25.140 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64 | 06.07.2012 15:22:25.156 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35 | 06.07.2012 15:22:25.171 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56 | 06.07.2012 15:22:25.171 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57 | 06.07.2012 15:22:25.171 | | 2... | 06.07.2012 15:22:25.187 | | 3... | 06.07.2012 15:22:25.203 | | 1... | 06.07.2012 15:22:25.218 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64 | 06.07.2012 15:22:25.234 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35 | 06.07.2012 15:22:25.250 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56 | 06.07.2012 15:22:25.250 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57 | 06.07.2012 15:22:25.250 | | 2... | 06.07.2012 15:22:25.265 | | 3... | 06.07.2012 15:22:26.125 | | Бид 9000 358 | 06.07.2012 15:22:27.125 | | Бид 9000 5 | 06.07.2012 15:22:28.125 | | Бид 9000 15 | 06.07.2012 15:22:29.125 | | Бид 9000 15 | 06.07.2012 15:22:30.125 | | Бид 9000 21

Alexander
Alexander

Я имел в виду попробуйте версию с codeplex из исходников, из папки trunk\References

Azat
Azat 著者

С trunk не собирается, говорит что

Ошибка 1 "StockSharp.Quik.QuikTrader" не содержит определения для "RegisterQuotes" и не был найден метод расширения "RegisterQuotes", принимающий тип "StockSharp.Quik.QuikTrader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) А если заменить StockSharp.Algo.dll из trunk на версию из 4.1.1, то собирается, но при запуске выдает Отсутствует реализация метода "get_RegisteredSecurities" в типе "StockSharp.Quik.QuikTrader" из сборки "StockSharp.Quik, Version=4.1.2.0, Culture=neutral, PublicKeyToken=null".

Alexander
Alexander

С trunk не собирается, говорит что

Ошибка 1 "StockSharp.Quik.QuikTrader" не содержит определения для "RegisterQuotes" и не был найден метод расширения "RegisterQuotes", принимающий тип "StockSharp.Quik.QuikTrader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) А если заменить StockSharp.Algo.dll из trunk на версию из 4.1.1, то собирается, но при запуске выдает Отсутствует реализация метода "get_RegisteredSecurities" в типе "StockSharp.Quik.QuikTrader" из сборки "StockSharp.Quik, Version=4.1.2.0, Culture=neutral, PublicKeyToken=null".

Ух. не собирается что? Ваш проект? Ну так поправьте всё что он вам говорит. RegisterQuotes переименовался в RegisterMarketDepth

Azat
Azat 著者

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

Moadip
Moadip

Попробовал воспроизвести ошибку. Сборка 18107.


06.07.2012 16:20:18.153 |            | Бид 136740 10
06.07.2012 16:20:18.295 |            | Бид 136740 15
06.07.2012 16:20:18.403 |            | Бид 136740 15
06.07.2012 16:20:18.652 |            | Бид 136740 15
06.07.2012 16:20:18.842 |            | Бид 136745 15
06.07.2012 16:20:19.102 |            | Бид 136745 3
06.07.2012 16:20:19.137 |            | 1....
06.07.2012 16:20:19.137 |            | 2....
06.07.2012 16:20:19.158 |            | 3....
06.07.2012 16:20:19.181 |            | 1....
06.07.2012 16:20:19.204 |            | 2....
06.07.2012 16:20:19.225 |            | 3....
06.07.2012 16:20:19.247 |            | 1....
06.07.2012 16:20:19.269 |            | 2....
06.07.2012 16:20:19.291 |            | 3....
06.07.2012 16:20:19.312 |            | 1....
06.07.2012 16:20:19.335 |            | 2....
06.07.2012 16:20:19.358 |            | 3....
06.07.2012 16:20:19.359 |            | Бид 136745 3
06.07.2012 16:20:19.495 |            | Бид 136745 3
06.07.2012 16:20:19.603 |            | Бид 136745 3
06.07.2012 16:20:19.854 |            | Бид 136740 8
06.07.2012 16:20:20.045 |            | Бид 136740 8
06.07.2012 16:20:20.282 |            | Бид 136750 13
06.07.2012 16:20:20.381 |            | 1....
06.07.2012 16:20:20.381 |            | 2....
06.07.2012 16:20:20.386 |            | Бид 136740 9
06.07.2012 16:20:20.391 |            | 3....
06.07.2012 16:20:20.604 |            | Бид 136750 20
06.07.2012 16:20:20.717 |            | Бид 136755 20
06.07.2012 16:20:20.964 |            | Бид 136755 20
06.07.2012 16:20:21.147 |            | Бид 136745 2
06.07.2012 16:20:21.395 |            | 1....
06.07.2012 16:20:21.395 |            | 2....
06.07.2012 16:20:21.400 |            | 3....
06.07.2012 16:20:21.415 |            | Бид 136745 2
06.07.2012 16:20:21.661 |            | Бид 136755 20
06.07.2012 16:20:21.922 |            | Бид 136765 5
06.07.2012 16:20:22.022 |            | Бид 136750 1
06.07.2012 16:20:22.257 |            | Бид 136750 3
06.07.2012 16:20:22.351 |            | Бид 136755 5
06.07.2012 16:20:22.409 |            | 1....
06.07.2012 16:20:22.410 |            | 2....
06.07.2012 16:20:22.410 |            | 3....
06.07.2012 16:20:22.617 |            | Бид 136750 3
06.07.2012 16:20:22.881 |            | Бид 136750 3
06.07.2012 16:20:22.919 |            | Бид 136750 3
06.07.2012 16:20:23.399 |            | Бид 136760 1

Это если в качестве вывода лога использовать GuiLogListener. Если с FileLogListener, бага нет.


16:24:21.249 |            | Бид 136680 7
16:24:21.512 |            | Бид 136680 1
16:24:21.576 |            | Бид 136675 13
16:24:21.687 |            | Бид 136675 10
16:24:21.939 |            | Бид 136675 9
16:24:22.123 |            | Бид 136675 9
16:24:22.229 |            | 1....
16:24:22.229 |            | 2....
16:24:22.229 |            | 3....
16:24:22.332 |            | Бид 136675 7
16:24:22.447 |            | Бид 136675 6
16:24:22.699 |            | Бид 136675 6
16:24:22.955 |            | Бид 136675 6
16:24:23.232 |            | 1....
16:24:23.232 |            | 2....
16:24:23.232 |            | 3....
16:24:23.246 |            | Бид 136675 7
16:24:23.523 |            | Бид 136675 6
16:24:23.669 |            | Бид 136675 6
16:24:23.949 |            | Бид 136675 6
16:24:24.214 |            | Бид 136675 6
16:24:24.246 |            | 1....
16:24:24.246 |            | 2....
16:24:24.246 |            | 3....
16:24:24.502 |            | Бид 136675 6
16:24:24.635 |            | Бид 136665 71
16:24:24.744 |            | Бид 136675 1
16:24:25.087 |            | Бид 136675 1
16:24:25.188 |            | Бид 136670 3
16:24:25.260 |            | 1....
16:24:25.260 |            | 2....
16:24:25.260 |            | 3....
16:24:25.444 |            | Бид 136670 3
16:24:25.699 |            | Бид 136665 69
16:24:25.943 |            | Бид 136665 66
16:24:26.052 |            | Бид 136665 66
16:24:26.274 |            | 1....
16:24:26.274 |            | 2....
16:24:26.274 |            | 3....
16:24:26.324 |            | Бид 136665 65
16:24:26.544 |            | Бид 136665 63
16:24:26.603 |            | Бид 136665 63
16:24:26.867 |            | Бид 136665 63
16:24:27.113 |            | Бид 136665 63
16:24:27.288 |            | 1....
16:24:27.288 |            | 2....
16:24:27.288 |            | 3....
16:24:27.368 |            | Бид 136665 63
16:24:27.479 |            | Бид 136665 63
16:24:27.722 |            | Бид 136665 63
16:24:27.973 |            | Бид 136665 63
16:24:28.245 |            | Бид 136670 1
16:24:28.303 |            | 1....
16:24:28.303 |            | 2....
16:24:28.303 |            | 3....
16:24:28.350 |            | Бид 136670 2
16:24:28.630 |            | Бид 136670 2
16:24:28.908 |            | Бид 136665 63
16:24:29.130 |            | Бид 136670 23
16:24:29.233 |            | Бид 136675 1
16:24:29.317 |            | 1....
16:24:29.317 |            | 2....
16:24:29.317 |            | 3....
16:24:29.468 |            | Бид 136675 1
16:24:29.618 |            | Бид 136670 7
16:24:29.848 |            | Бид 136675 3
16:24:30.113 |            | Бид 136670 7
16:24:30.258 |            | Бид 136670 7
16:24:30.329 |            | 1....
16:24:30.329 |            | 2....
16:24:30.329 |            | 3....
16:24:30.487 |            | Бид 136670 7
16:24:30.731 |            | Бид 136670 2
16:24:31.013 |            | Бид 136670 1
16:24:31.125 |            | Бид 136665 60
16:24:31.341 |            | 1....
16:24:31.341 |            | 2....
16:24:31.341 |            | 3....
16:24:31.346 |            | Бид 136665 60
16:24:31.619 |            | Бид 136665 60
16:24:31.654 |            | Бид 136665 62
16:24:31.768 |            | Бид 136665 60
16:24:32.068 |            | Бид 136665 62
16:24:32.341 |            | Бид 136665 61
16:24:32.357 |            | 1....
16:24:32.357 |            | 2....
16:24:32.357 |            | 3....
16:24:32.543 |            | Бид 136665 61
16:24:32.933 |            | Бид 136665 45
16:24:33.200 |            | Бид 136665 43
16:24:33.371 |            | 1....
16:24:33.371 |            | 2....
16:24:33.371 |            | 3....
16:24:33.768 |            | Бид 136665 41
16:24:34.147 |            | Бид 136665 41
16:24:34.385 |            | 1....
16:24:34.385 |            | 2....
16:24:34.385 |            | 3....
16:24:34.416 |            | Бид 136665 41
16:24:34.678 |            | Бид 136665 37
16:24:35.023 |            | Бид 136665 37
16:24:35.303 |            | Бид 136665 37
16:24:35.399 |            | 1....
16:24:35.399 |            | 2....
16:24:35.399 |            | 3....
16:24:35.616 |            | Бид 136665 36
16:24:36.162 |            | Бид 136665 36
16:24:36.383 |            | Бид 136665 7
16:24:36.413 |            | 1....
16:24:36.413 |            | 2....
16:24:36.413 |            | 3....
16:24:36.491 |            | Бид 136660 20
16:24:36.772 |            | Бид 136660 19
16:24:37.045 |            | Бид 136660 11
16:24:37.313 |            | Бид 136660 10

Но если воткнуть искусственную задержку, то баг снова появляется.


        private void Test()
        {
            this.AddInfoLog("1....");
            this.AddInfoLog("2....");
            this.AddInfoLog("3....");
            Thread.Sleep(500);
        }

Alexander
Alexander

18108 последняя, её и надо использовать. В ней я фиксил.

Azat
Azat 著者

Спасибо, в 18108 проблема исчезла:) Вот только проблема с MarketRuleHelper.WhenTimeCome осталось Если добавить следующее, то приложение просто падает через 10 секунд без эксцепшенов, а логах из файла видно, что напоследок оно так же несколько раз вызвало Test()


this.Trader.WhenTimeCome(DateTime.Now.AddSeconds(10)).Do(Test).Apply(this);

Azat
Azat 著者

А если использовать следующий код, то падает только на последнем элементе, то есть через 20 секунд после запуска.


this.Trader.WhenTimeCome(new []{DateTime.Now.AddSeconds(10),DateTime.Now.AddSeconds(15), DateTime.Now.AddSeconds(20)}).Do(Test).Apply(this);

Alexander
Alexander

Ставьте брейкпоинты в ваш метод Test, смотрите где конкретно падает. Смотрите под VS, в окно Output он всё напишет. Чудес не бывает, приложение не может падать просто так.

Azat
Azat 著者

до 18108, он просто падал, никаких сообщений в Output не выводил, в логах было видно, что он запускал Test() несколько раз, сейчас в логах из файла так:

12:23:17.500 | | Стратегия запущена. 12:23:16.421 | | QuikTrader | Экспорт запущен. 12:23:18.109 | | Бид 9017 10 12:23:19.109 | | Бид 9017 20 12:23:20.109 | | Бид 9017 20 12:23:21.109 | | Бид 9017 20 12:23:22.109 | | Бид 9015 11 12:23:23.109 | | Бид 9014 35 12:23:24.109 | | Бид 9016 10 12:23:25.109 | | Бид 9016 10 12:23:26.109 | | Бид 9015 10 12:23:27.109 | | Бид 9015 10 12:23:27.531 | | 1... 12:23:27.593 | | 2... 12:23:27.609 | | 3... 12:23:28.109 | | Бид 9016 10 12:23:29.109 | | Бид 9016 9 12:23:30.109 | | Бид 9015 9 12:23:32.109 | | Бид 9015 9 12:23:32.531 | | 1... 12:23:32.531 | | 2... 12:23:32.546 | | 3... 12:23:33.109 | | Бид 9015 9 12:23:34.109 | | Бид 9015 9 12:23:35.109 | | Бид 9015 9 12:23:36.109 | | Бид 9015 9 12:23:37.109 | | Бид 9015 9 12:23:37.531 | | 1... 12:23:37.531 | | 2... 12:23:37.578 | | 3... 12:23:37.640 | Error | UnhandleException | System.IndexOutOfRangeException: Индекс находился вне границ массива. в StockSharp.Algo.MarketRuleHelper.#=q5tE5pMwBLHpbY5GB03GIig==.#=qpwQa0ec4L11d9qoHhvukUQ==(MarketTimer #=qrp1xDbP_kZMfjVGQfYoKiQ==, Boolean #=qkLAqWGH2XKiJVtIFuXfv0Q==) в StockSharp.Algo.MarketTimer.#=qHWOSW6k$_YnVe_5fvF$1lVbPeaqRg9hj5p9vwh7OX6w=() в Ecng.Common.DelegateHelper.SafeInvoke(Action handler) в StockSharp.Algo.BaseTrader.RaiseMarketTimeChanged() в StockSharp.Algo.BaseTrader.OnMarketTimeChanged() в Ecng.Common.ThreadingHelper.<>c__DisplayClass1.<Timer>b__0(Object s) в System.Threading._TimerCallback.TimerCallback_Context(Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading._TimerCallback.PerformTimerCallback(Object state)

Alexander
Alexander

Не воспроизводится у меня. Используется 4.1.2?

Если да - кидайте минимальный проект, на котором это воспроизведётся.