проблема с WhenIntervalElapsed
Atom
05.07.2012


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

Теги:


Спасибо:


< 1 2 
Alexander

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


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".



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

Azat

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


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

Moadip

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


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

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

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

        private void Test()
        {
            this.AddInfoLog("1....");
            this.AddInfoLog("2....");
            this.AddInfoLog("3....");
            Thread.Sleep(500);
        }
Спасибо:

Alexander

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


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

Azat

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


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

Код

this.Trader.WhenTimeCome(DateTime.Now.AddSeconds(10)).Do(Test).Apply(this);
Спасибо:

Azat

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


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

this.Trader.WhenTimeCome(new []{DateTime.Now.AddSeconds(10),DateTime.Now.AddSeconds(15), DateTime.Now.AddSeconds(20)}).Do(Test).Apply(this);
Спасибо:

Alexander

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


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

Azat

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


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

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


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

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

Azat

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


Спасибо:
< 1 2 

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

loading
clippy