← Zurück

проблема с 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 всего одна строчка, то проблема пропадает.

War dieses Thema hilfreich?

Thema teilen

Kommentare (20)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

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

Azat
Azat Autor

Добавил в 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 Autor

А если 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 Autor

Да, с брейкпоинтом тоже,и проект чистый, только начал разбираться с библиотекой - правило один раз создается. Ради интереса, сейчас добавил в пример 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 Autor

Вот лог который 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 Autor

Скачал с 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 Autor

С 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 Autor

Да, собрал, не сообразил просто, что метод переименовали:) А проблема осталось, только теперь не 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 Autor

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


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

Azat
Azat Autor

А если использовать следующий код, то падает только на последнем элементе, то есть через 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 Autor

до 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?

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