OnProcess вызов по событию
Atom
23.12.2010
Andrey R.


Здравствуйте. Я так понимаю, что это событие вызвается через определенный интервал по времени. И хотелось бы узнать, как можно, допустим, генерировать и обрабатывать это событие на каждом тике? Я понимаю, что можно внутренние проверки устроить, например контролировать объем последней свечи или еще что то, но может быть есть более простой выход, которого я не знаю?


Теги:


Спасибо:


ltrim

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


В описании написано http://stocksharp.com/doc/Default.aspx?topic=Stock%23

Interval Интервал стратегии. Как часто StrategyManager будет вызывать метод Process(). (Унаследовано от Strategy.)

Спасибо:

Andrey R.

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


Это то понятно, что событие OnProcess вызывается через заданный интервал. Меня интересует как сделать так, чтобы это событие вызывалось на каждом тике, не чаще и не реже.

Спасибо:

ltrim

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


Andrey R.: Это то понятно, что событие OnProcess вызывается через заданный интервал. Меня интересует как сделать так, чтобы это событие вызывалось на каждом тике, не чаще и не реже.

strategy.Interval = TimeSpan.FromTicks(1)

Спасибо:

Иванов Андрей

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


ltrim:

Andrey R.: Это то понятно, что событие OnProcess вызывается через заданный интервал. Меня интересует как сделать так, чтобы это событие вызывалось на каждом тике, не чаще и не реже.

strategy.Interval = TimeSpan.FromTicks(1) Думаю, что это не то, что хотел автор треда. Мне так кажется, что он имеет в виду тики Квика или чего-то другого. Потому что один тик TimeSpan это 100 нс. Слишком уж часто, по-моему.

К тому же, Михаил в шедулере стратегий использует Thread.Sleep, точность которого, мягко говоря, никакая =) Потому что шедулер операционной системы оперирует квантами, которые измеряются десятками и сотнями миллисекунд. На практике ваши 100 нс округлятся до 0 мс, которые дадут вам рандомную задержку, так как в этом случае она зависит от загрузки процессора. Если нет у шедулера операционной системы готового потока, вы задержки не получите вообще, а если есть, то задержка будет рандомной и, скорее всего, кратной кванту, потому что ваш поток может получть квант не следующий и не через один, а пятый, например, потому что у шедулера системы своё мнение на тему того, какой поток должен сейчас исполняться. "Скорее всего" кратный кванту, потому что другой поток тоже может пойти поспать, в этом случае вы получите оставшуюся часть его кванта.

Вероятно, это как в том анекдоте про яблоко, "папа, ты сейчас с кем разговаривал?". Но, надеюсь, понятно хотя бы, что никаких гарантий по интервалу никто дать не может. С большими интервалами, типа секунды, погрешность 10% не критична, а вот с предложенной вами задержкой 100 нс погрешность измеряется тысячами процентов.

Спасибо:

Иванов Андрей

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


Andrey R.: Здравствуйте. Я так понимаю, что это событие вызвается через определенный интервал по времени. И хотелось бы узнать, как можно, допустим, генерировать и обрабатывать это событие на каждом тике? Я понимаю, что можно внутренние проверки устроить, например контролировать объем последней свечи или еще что то, но может быть есть более простой выход, которого я не знаю? Думаю, что вам надо просто подписаться на события того, что вам надо. Предположу, что вам нужны сделки. Вот на событие ITrader.NewTrades и подписывайтесь. Я именно так и работаю, без искусственных задержек и оверхеада на получение данных из общего списка.

Если нужны стаканы для скальпинга, подписывайтесь на событие изменения стаканов. Я не скальпер, событие на память не помню.

Спасибо:

Andrey R.

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


Андрей Андрея понял))

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

Спасибо:

Mikhail Sukhov

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


Andrey R.: Здравствуйте. Я так понимаю, что это событие вызвается через определенный интервал по времени. И хотелось бы узнать, как можно, допустим, генерировать и обрабатывать это событие на каждом тике? Я понимаю, что можно внутренние проверки устроить, например контролировать объем последней свечи или еще что то, но может быть есть более простой выход, которого я не знаю?

А вот это не оно Событийная модель?

Спасибо:

Andrey R.

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


возможно, это оно.. Буду разбираться. Спасибо!

Спасибо:


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

loading
clippy