проблема с WhenIntervalElapsed

проблема с WhenIntervalElapsed
Atom
7/5/2012
Azat


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

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

Tags:


Thanks:


1 2  >
Alexander

Avatar
Date: 7/5/2012
Reply


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

Azat

Avatar
Date: 7/5/2012
Reply


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

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

и функцию
Code

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
Thanks:

Azat

Avatar
Date: 7/5/2012
Reply


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

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...
Thanks:

Alexander

Avatar
Date: 7/5/2012
Reply


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

Azat

Avatar
Date: 7/5/2012
Reply


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

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 секунд без всяких эксцепшенов.
Thanks:

Azat

Avatar
Date: 7/5/2012
Reply


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

Alexander

Avatar
Date: 7/6/2012
Reply


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

Azat

Avatar
Date: 7/6/2012
Reply


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

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
Thanks:

Alexander

Avatar
Date: 7/6/2012
Reply


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

Azat

Avatar
Date: 7/6/2012
Reply


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

Ошибка 1 "StockSharp.Quik.QuikTrader" не содержит определения для "RegisterQuotes" и не был найден метод расширения "RegisterQuotes", принимающий тип "StockSharp.Quik.QuikTrader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)

А если заменить StockSharp.Algo.dll из trunk на версию из 4.1.1, то собирается, но при запуске выдает
Quote:

Отсутствует реализация метода "get_RegisteredSecurities" в типе "StockSharp.Quik.QuikTrader" из сборки "StockSharp.Quik, Version=4.1.2.0, Culture=neutral, PublicKeyToken=null".
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy