События появления/завершения свечи

События появления/завершения свечи
Atom
2/8/2012
russ


Пытаюсь переходить на событийную модель, в связи с чем такой вопрос появился.
Почему сначала отрабатывается событие новой свечи, а потом появляется событие предыдущей свечи.
Это доставляет следующие проблемы.
У меня стратегия работает по закрытию свечи, допустим сейчас идет свеча 13:00, рабочий ТФ 30 минут, так вот по идее я должен входить сразу как свеча закончилась, т.е. в 13:30:00. А событийная модель завершение свечи считает тогда, когда началась новая, а новая может начаться в 13:30:23 допустим, т.е. после того как закончилась свеча 13:00 первая сделка пошла через 23 секунды после начала, соответственно за 23 секунды стакан может поменяться и вход у меня будет совсем другой чем в бэктесте.
Можно ли это как-то исправить, или мне нужно возвращаться к TimeFrameStrategy где я могу этот момент урегулировать.
Спасибо.

Tags:


Thanks:


1 2  >
Alexander

Avatar
Date: 2/8/2012
Reply


russ
Пытаюсь переходить на событийную модель, в связи с чем такой вопрос появился.
Почему сначала отрабатывается событие новой свечи, а потом появляется событие предыдущей свечи.
Это доставляет следующие проблемы.
У меня стратегия работает по закрытию свечи, допустим сейчас идет свеча 13:00, рабочий ТФ 30 минут, так вот по идее я должен входить сразу как свеча закончилась, т.е. в 13:30:00. А событийная модель завершение свечи считает тогда, когда началась новая, а новая может начаться в 13:30:23 допустим, т.е. после того как закончилась свеча 13:00 первая сделка пошла через 23 секунды после начала, соответственно за 23 секунды стакан может поменяться и вход у меня будет совсем другой чем в бэктесте.
Можно ли это как-то исправить, или мне нужно возвращаться к TimeFrameStrategy где я могу этот момент урегулировать.
Спасибо.


Какие предложения?
Учитывайте, что у вас поток сделок заканчивается не ровно в 13:29:59, он может придти и в 13:30:01 со сделками совершёнными в 13:29:59.
Thanks:

russ

Avatar
Date: 2/8/2012
Reply


Alexander Mukhanchikov
russ
Пытаюсь переходить на событийную модель, в связи с чем такой вопрос появился.
Почему сначала отрабатывается событие новой свечи, а потом появляется событие предыдущей свечи.
Это доставляет следующие проблемы.
У меня стратегия работает по закрытию свечи, допустим сейчас идет свеча 13:00, рабочий ТФ 30 минут, так вот по идее я должен входить сразу как свеча закончилась, т.е. в 13:30:00. А событийная модель завершение свечи считает тогда, когда началась новая, а новая может начаться в 13:30:23 допустим, т.е. после того как закончилась свеча 13:00 первая сделка пошла через 23 секунды после начала, соответственно за 23 секунды стакан может поменяться и вход у меня будет совсем другой чем в бэктесте.
Можно ли это как-то исправить, или мне нужно возвращаться к TimeFrameStrategy где я могу этот момент урегулировать.
Спасибо.


Какие предложения?
Учитывайте, что у вас поток сделок заканчивается не ровно в 13:29:59, он может придти и в 13:30:01 со сделками совершёнными в 13:29:59.

Если честно, я не очень сильно разбираюсь в ньюансах, со своей стороны я бы предложил событие о завершении свечи высылать через 2 секунды после того как закончится ее время, т.е. в данном примере событие о закрытии свечи 13:00 присылать в 13:00:02. Не уверен насколько это правильно, но и существующее решение не совсем подходит для малоликвидных рынков (у нас когда дикий сон на рынке иногда вообще бывает нет сделок по пару минут).
З.Ы. Еще можно пользователю дать самому настраивать лаг после которого должно приходить событие о закрытии свечи.
Thanks:

Alexander

Avatar
Date: 2/8/2012
Reply


russ
Alexander Mukhanchikov
russ
Пытаюсь переходить на событийную модель, в связи с чем такой вопрос появился.
Почему сначала отрабатывается событие новой свечи, а потом появляется событие предыдущей свечи.
Это доставляет следующие проблемы.
У меня стратегия работает по закрытию свечи, допустим сейчас идет свеча 13:00, рабочий ТФ 30 минут, так вот по идее я должен входить сразу как свеча закончилась, т.е. в 13:30:00. А событийная модель завершение свечи считает тогда, когда началась новая, а новая может начаться в 13:30:23 допустим, т.е. после того как закончилась свеча 13:00 первая сделка пошла через 23 секунды после начала, соответственно за 23 секунды стакан может поменяться и вход у меня будет совсем другой чем в бэктесте.
Можно ли это как-то исправить, или мне нужно возвращаться к TimeFrameStrategy где я могу этот момент урегулировать.
Спасибо.


Какие предложения?
Учитывайте, что у вас поток сделок заканчивается не ровно в 13:29:59, он может придти и в 13:30:01 со сделками совершёнными в 13:29:59.

Если честно, я не очень сильно разбираюсь в ньюансах, со своей стороны я бы предложил событие о завершении свечи высылать через 2 секунды после того как закончится ее время, т.е. в данном примере событие о закрытии свечи 13:00 присылать в 13:00:02. Не уверен насколько это правильно, но и существующее решение не совсем подходит для малоликвидных рынков (у нас когда дикий сон на рынке иногда вообще бывает нет сделок по пару минут).
З.Ы. Еще можно пользователю дать самому настраивать лаг после которого должно приходить событие о закрытии свечи.


В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво.
Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.
Thanks:

russ

Avatar
Date: 2/8/2012
Reply


Alexander Mukhanchikov

В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво.
Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.

Не совсем понял как такое возможно, когда в квике системное время 13:30:00, значит свеча 13:00 уже завершилась разве не так? И если прошла сделка в 13:30:01 значит она уже идет в новую свечу. Я сейчас говорю не о своих сделках, а вообще о всех сделках.
Thanks:

Alexander

Avatar
Date: 2/8/2012
Reply


russ
Alexander Mukhanchikov

В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво.
Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.

Не совсем понял как такое возможно, когда в квике системное время 13:30:00, значит свеча 13:00 уже завершилась разве не так? И если прошла сделка в 13:30:01 значит она уже идет в новую свечу. Я сейчас говорю не о своих сделках, а вообще о всех сделках.


Сделка прошла в 13:29:59, в квике из-за тормозов отобразилась как совершённая в 13:30:02 (время что она исполнена отобразилось как 13:29:59), по DDE пришла в робота в 13:30:03.
И это - довольно стандартная ситуация.
Thanks:

russ

Avatar
Date: 2/8/2012
Reply


Alexander Mukhanchikov
russ
Alexander Mukhanchikov

В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво.
Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.

Не совсем понял как такое возможно, когда в квике системное время 13:30:00, значит свеча 13:00 уже завершилась разве не так? И если прошла сделка в 13:30:01 значит она уже идет в новую свечу. Я сейчас говорю не о своих сделках, а вообще о всех сделках.


Сделка прошла в 13:29:59, в квике из-за тормозов отобразилась как совершённая в 13:30:02 (время что она исполнена отобразилось как 13:29:59), по DDE пришла в робота в 13:30:03.
И это - довольно стандартная ситуация.

Прикольно, не знал такого, что ж буду думать.
Вот только что опять глюк такой был, свеча закрылась и после этого 18 секунд не было сделок вообще, в итоге сообщение о закрытии свечи пришло через 18 секунд. Придется, вернуться назад на TimeFrameStrategy.
Спасибо за помощь.
Thanks:

Alexander

Avatar
Date: 2/8/2012
Reply


russ
Alexander Mukhanchikov
russ
Alexander Mukhanchikov

В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво.
Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.

Не совсем понял как такое возможно, когда в квике системное время 13:30:00, значит свеча 13:00 уже завершилась разве не так? И если прошла сделка в 13:30:01 значит она уже идет в новую свечу. Я сейчас говорю не о своих сделках, а вообще о всех сделках.


Сделка прошла в 13:29:59, в квике из-за тормозов отобразилась как совершённая в 13:30:02 (время что она исполнена отобразилось как 13:29:59), по DDE пришла в робота в 13:30:03.
И это - довольно стандартная ситуация.

Прикольно, не знал такого, что ж буду думать.
Вот только что опять глюк такой был, свеча закрылась и после этого 18 секунд не было сделок вообще, в итоге сообщение о закрытии свечи пришло через 18 секунд. Придется, вернуться назад на TimeFrameStrategy.
Спасибо за помощь.


Это не глюк.
Почему так - объяснил выше.
Thanks:

freelancer

Avatar
Date: 2/8/2012
Reply


А как вы отличаете свечи, пришедшие при запуске стратегии, от только что пришедших в робота ?
Thanks:

Garic

Avatar
Date: 2/8/2012
Reply


freelancer
А как вы отличаете свечи, пришедшие при запуске стратегии, от только что пришедших в робота ?


У меня событие CandleFinished(candles) разбито на два, каждое из которых выдаёт только одну свечу (вместо IEnumerable), стратегии используют непосредственно эти события
- AnyCandleFinished - вызывается для каждой свечи из candles
- LastCandleFinished - вызывается только для candles.last() если это свеча не старше 5 минут от QuikTerminal.MarketTime

Первое - используется для всяких расчётов и индикаторов.
Второе - для входа/выхода в позицию.

Заодно отсекается возможность получения стратегией несколько свечей (у меня рэндж бары) одновременно из-за лагов, и как следствие - открытие/закрытие левых позиций.

Ничего лучше придумать не удалось.
Thanks:

freelancer

Avatar
Date: 2/19/2012
Reply


А если у вас ТФ = 1мин ? То как тогда ?
Нужен универсальный код, для любого ТФ (> 1 мин например)
Thanks:
1 2  >

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

loading
clippy