← Zurück

Перестает вызываться OnProcess стратегии

Заметил, что робот проворонил сигнал, в логах ничего не нашел, задебажил и увидел, что не вызывается OnProcess. В последнем вызове PropertyChanged у стратегии состояние Runned. Стратегия унаследована от TimeFrameStrategy, S# последний.

War dieses Thema hilfreich?

Thema teilen

Kommentare (15)

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

Alter
Alter Autor

Ситуация воспроизвелась. OnProcess запускается раз в секунду. Утром он в последний раз запустился в 9:55:07 и стал вызываться снова только после того, как специально обученный костыль перезапустил стратегию в 10:00:18.

Mikhail Sukhov
Mikhail Sukhov

Alter: Ситуация воспроизвелась. OnProcess запускается раз в секунду. Утром он в последний раз запустился в 9:55:07 и стал вызываться снова только после того, как специально обученный костыль перезапустил стратегию в 10:00:18.

Ситуация повторяется только в не торговое время?

Alter
Alter Autor

Да, пока что отлавливал сабж только перед началом утренней сессии.

Mikhail Sukhov
Mikhail Sukhov

Alter: Да, пока что отлавливал сабж только перед началом утренней сессии.

Может у вас в стратегии какая проверка стоит? Еще не плохо было бы проверить состояние QuikTrader.IsConnected.

Alter
Alter Autor

QuikTrader.IsConnected был true. Точнее я проверял Terminal.IsConnected, но как я понимаю это будет одно и то же. В стратегии в OnProcess в самом начале метода запоминается время его вызова и периодически проверяется.

Mikhail Sukhov
Mikhail Sukhov

Alter: QuikTrader.IsConnected был true. Точнее я проверял Terminal.IsConnected, но как я понимаю это будет одно и то же.

Разное. Terminal проверяет подключение по косвенным признакам, а QuikTrader.IsConnected через АПИ. С точки зрения логики это одно и то же, но могут быть и различия в особых ситуациях. То, что у вас не стартует до торгов явно не является обычной практикой (хотя бы взять тот факт, что это до торгов).

Alter: В стратегии в OnProcess в самом начале метода запоминается время его вызова и периодически проверяется.

Вы пробовали отладчиком поставить точку останова в начало метода?

Alter
Alter Autor

Отладчиком проверял, метод не вызывается. Так вместо Terminal.IsConnected лучше проверять QuikTrader.IsConnected? Просто я посмотрел в документацию и выбрал из двух то свойство, про которое было понятно написано =)

Alter
Alter Autor

Сегодня вывел в лог оба IsConnected, получилось вот так:

Market time = 22.04.2011 10:00:24 Terminal.IsConnected = False QuikTrader.IsConnected = True Last OnProcess launch time = 22.04.2011 9:55:44

Может Terminal.IsConnected = False виновато?

Mikhail Sukhov
Mikhail Sukhov

Alter: Может Terminal.IsConnected = False виновато?

Нет, не виновато.

Alter
Alter Autor

Понаблюдал тут на досуге за ходом развития событий, происходит следующее: 9:55 - MarketTime показывает глубокую ночь, 2:00-4:00, в квике в статусбаре времени сервера нет, OnProcess у стратегии почему-то вызывается. 9:56-9:57 - в квике появляется время сервера, в MarketTime соответственно оно тоже перескакивает с ночи на текущее, OnProcess вызываться перестает. 10:00 и далее - MarketTime показывает корректное время, но OnProcess не вызывается, через энндцать секунд я перезапускаю стратегию, после этого все ок.

Интересно, почему OnProcess вызывается ночью, но не вызывается сразу после 10 утра, пока не перезапустишь стратегию.

Mikhail Sukhov
Mikhail Sukhov

Alter: Понаблюдал тут на досуге за ходом развития событий, происходит следующее: 9:55 - MarketTime показывает глубокую ночь, 2:00-4:00, в квике в статусбаре времени сервера нет, OnProcess у стратегии почему-то вызывается. 9:56-9:57 - в квике появляется время сервера, в MarketTime соответственно оно тоже перескакивает с ночи на текущее, OnProcess вызываться перестает. 10:00 и далее - MarketTime показывает корректное время, но OnProcess не вызывается, через энндцать секунд я перезапускаю стратегию, после этого все ок.

Интересно, почему OnProcess вызывается ночью, но не вызывается сразу после 10 утра, пока не перезапустишь стратегию.

А интервал у стратегии какой? Какие образом перезапустили стратегию?

Alter
Alter Autor

Интервал 1 секунда, перезапустил через strategy.Stop(); strategy.Start();

Greene-nsk
Greene-nsk

У меня практически такая же проблема (http://stocksharp.com/forum/1602/vypolnieniie-TimeFrameStrategy/) Версия S# 3.0.19.0.

Единственное отличие, которое вижу - OnProcess в начале дня выполняется, но ломается после вечернего клиринга. Помогает стоп/старт стратегии (как воркэраунд).

Greene-nsk
Greene-nsk

еще наблюдения: интервал - 2 секунды таймфрейм - 10 минут несколько стратегий

OnProcess перестает вызываться через интервал равный таймфрейму, для ВСЕХ стратегий одновременно. Например, я запускаю одну стратегию в 19:04, вторую в 19:07. В 19:14 у обоих стратегий перестает вызываться OnProcess. Для 3х и больше стратегий аналогично. Локаются все. Дочерние в том числе.

Alter
Alter Autor

А сегодня еще и в квике время сервера встало колом до начала сессии, да так и осталось. Михаил, может в свете всего описанного в этой теме невызов OnProcess в неторговое время сделать отключаемым?