Alexander
|
Дата: 08.02.2012
russ Пытаюсь переходить на событийную модель, в связи с чем такой вопрос появился. Почему сначала отрабатывается событие новой свечи, а потом появляется событие предыдущей свечи. Это доставляет следующие проблемы. У меня стратегия работает по закрытию свечи, допустим сейчас идет свеча 13:00, рабочий ТФ 30 минут, так вот по идее я должен входить сразу как свеча закончилась, т.е. в 13:30:00. А событийная модель завершение свечи считает тогда, когда началась новая, а новая может начаться в 13:30:23 допустим, т.е. после того как закончилась свеча 13:00 первая сделка пошла через 23 секунды после начала, соответственно за 23 секунды стакан может поменяться и вход у меня будет совсем другой чем в бэктесте. Можно ли это как-то исправить, или мне нужно возвращаться к TimeFrameStrategy где я могу этот момент урегулировать. Спасибо. Какие предложения? Учитывайте, что у вас поток сделок заканчивается не ровно в 13:29:59, он может придти и в 13:30:01 со сделками совершёнными в 13:29:59.
|
|
Спасибо:
|
|
|
|
|
russ
|
Дата: 08.02.2012
|
|
|
|
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. Не уверен насколько это правильно, но и существующее решение не совсем подходит для малоликвидных рынков (у нас когда дикий сон на рынке иногда вообще бывает нет сделок по пару минут). З.Ы. Еще можно пользователю дать самому настраивать лаг после которого должно приходить событие о закрытии свечи.
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 08.02.2012
|
|
|
|
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 минут - пользуйтесь таймфреймами.
|
|
Спасибо:
|
|
|
|
|
russ
|
Дата: 08.02.2012
Alexander Mukhanchikov В вашем предложении может возникнуть ситуация, что сделка, совершённая в 13:29:58 или 13:29:59 придёт в 13:30:03 и уже будет отнесена к новой 5-минутке, что совсем криво. Если нужно отсекать по 5 минут - пользуйтесь таймфреймами.
Не совсем понял как такое возможно, когда в квике системное время 13:30:00, значит свеча 13:00 уже завершилась разве не так? И если прошла сделка в 13:30:01 значит она уже идет в новую свечу. Я сейчас говорю не о своих сделках, а вообще о всех сделках.
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 08.02.2012
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. И это - довольно стандартная ситуация.
|
|
Спасибо:
|
|
|
|
|
russ
|
Дата: 08.02.2012
|
|
|
|
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. Спасибо за помощь.
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 08.02.2012
|
|
|
|
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. Спасибо за помощь. Это не глюк. Почему так - объяснил выше.
|
|
Спасибо:
|
|
|
|
|
freelancer
|
Дата: 08.02.2012
А как вы отличаете свечи, пришедшие при запуске стратегии, от только что пришедших в робота ?
|
|
Спасибо:
|
|
|
|
|
Garic
|
Дата: 08.02.2012
freelancer А как вы отличаете свечи, пришедшие при запуске стратегии, от только что пришедших в робота ? У меня событие CandleFinished(candles) разбито на два, каждое из которых выдаёт только одну свечу (вместо IEnumerable), стратегии используют непосредственно эти события - AnyCandleFinished - вызывается для каждой свечи из candles - LastCandleFinished - вызывается только для candles.last() если это свеча не старше 5 минут от QuikTerminal.MarketTime Первое - используется для всяких расчётов и индикаторов. Второе - для входа/выхода в позицию. Заодно отсекается возможность получения стратегией несколько свечей (у меня рэндж бары) одновременно из-за лагов, и как следствие - открытие/закрытие левых позиций. Ничего лучше придумать не удалось.
|
|
Спасибо:
|
|
|
|
|
freelancer
|
Дата: 19.02.2012
А если у вас ТФ = 1мин ? То как тогда ? Нужен универсальный код, для любого ТФ (> 1 мин например)
|
|
Спасибо:
|
|
|
|