Как устроено тестирование стратегии?~/topic/3293/kak-ustroeno-testirovanie-strategii/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T06:22:53Zhttps://stocksharp.com/images/logo.pnghttps://stocksharp.com/posts/m/23486/Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая...2013-01-16T03:50:47Z2013-01-16T03:50:47Zesperhttps://stocksharp.com/users/5990/info@stocksharp.com<div class="quote"><span class="quotetitle">FlashPlayer <a href="https://stocksharp.com/posts/m/23373/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая: сделки --> стаканы --> ордерлог.</div></div><br />Не обязательно, тестер может производить эмуляцию и по сделкам. Стаканы могут быть, а могут и эмулироваться по сделкам. Если есть ордерлог, то тогда и сделки и стаканы будут строиться по нему, причем это будут реальные данные.<br /><div class="quote"><span class="quotetitle">FlashPlayer <a href="https://stocksharp.com/posts/m/23373/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Есть тогда еще несколько вопросов:<br /> 1. Вот есть у меня только сделки. Если я не пропишу дополнительно о необходимости генерирования стакана по ним - стратегия никаких данных не получит?<br /> 2. Есть у меня только стаканы. Они имеют периодичность (ну раз в минуту предположим). Что будет, если я эту периодичность отдельно не озвучу. Ее вообще по идее озвучивать не надо? <br /> 3. Если есть ордерлог - автоматом используется он? Никаких доп настроек не надо? Просто видел какую то настройку в примере, при создании тестера, UseMarketDepth вроде. Коммент там стоит - если нужна более точная прогонка по стакану, включите эту настройку. Она меня смутила - что именно она включает?<br /> 4. Если я хочу запустить стратегию не в начале работы тестера, а скажем в определенное время в истории, я должен подписаться на событие обновления времени в тестере - и проверять, когда оно стало таким, каким мне надо - запустить страту?<br /> 5. Очень важный вопрос. Как в тестере реализовано понимание, что прошла моя сделка? В целом, я осознаю, что есть только один единственный способ - если у нас стояла заявка на уровне цены, и лучшие котировки полностью стали выше(или ушли полностью ниже) этого уровеня цены, то вот тогда только считается, что наша заявка исполнена. При таком алгоритме - какой бы ни был объем нашей заявки, он исполняется сразу и весь. Частичного исполнения не бывает. Правильно ли я понимаю, что именно такой алгоритм используется в S#?</div></div><br />1. Нет, не получит.<br />2. Данные просто читаются с той переодичностью, с которой они есть.<br />3. Нет, для использования ордерлога надо выставить UseOrderLog, для использования стаканов UseMarketDepth. Но, если используется ордерлог, то стаканы и сделки автоматически не используются.<br />4. Да.<br />5. То как заявка будет исполнена зависит от многих факторов, таких как тип заявки, настройки эмулятора. Например, если кидается заявка по рынку, то он может собрать несколько строк в стакане и будет несколько сделок.<br /><br />Данный вопрос, впрочем как и весь топик, стоило разместить в разделе Тестирование.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/23373/Эспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая...2013-01-14T07:46:17Z2013-01-14T07:46:17ZFlashPlayerhttps://stocksharp.com/users/16669/info@stocksharp.comЭспер, спасибо. То есть получается, что тестеру все таки необходимы стаканы. И иеархия выходит такая: сделки --> стаканы --> ордерлог. <br /><br />Есть тогда еще несколько вопросов:<br /> 1. Вот есть у меня только сделки. Если я не пропишу дополнительно о необходимости генерирования стакана по ним - стратегия никаких данных не получит?<br /> 2. Есть у меня только стаканы. Они имеют периодичность (ну раз в минуту предположим). Что будет, если я эту периодичность отдельно не озвучу. Ее вообще по идее озвучивать не надо? <br /> 3. Если есть ордерлог - автоматом используется он? Никаких доп настроек не надо? Просто видел какую то настройку в примере, при создании тестера, UseMarketDepth вроде. Коммент там стоит - если нужна более точная прогонка по стакану, включите эту настройку. Она меня смутила - что именно она включает?<br /> 4. Если я хочу запустить стратегию не в начале работы тестера, а скажем в определенное время в истории, я должен подписаться на событие обновления времени в тестере - и проверять, когда оно стало таким, каким мне надо - запустить страту?<br /> 5. Очень важный вопрос. Как в тестере реализовано понимание, что прошла моя сделка? В целом, я осознаю, что есть только один единственный способ - если у нас стояла заявка на уровне цены, и лучшие котировки полностью стали выше(или ушли полностью ниже) этого уровеня цены, то вот тогда только считается, что наша заявка исполнена. При таком алгоритме - какой бы ни был объем нашей заявки, он исполняется сразу и весь. Частичного исполнения не бывает. Правильно ли я понимаю, что именно такой алгоритм используется в S#?<br /><br />Спасибо.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/23368/А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - ...2013-01-14T05:07:22Z2013-01-14T05:07:22Zesperhttps://stocksharp.com/users/5990/info@stocksharp.com<div class="quote"><span class="quotetitle">FlashPlayer <a href="https://stocksharp.com/posts/m/23348/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - используй этот же эмулятор трейдер. Запускаю стратегию. Что в этот момент технически происходит? В дополнительном потоке заново запускается эмулятор трейдер от времени старта до стопа, но теперь исполняя стратегию?</div></div><br />Нет, эмулятор заново не запускается. Запустится только стратегия и, если эмулятор еще работает, стратегия начнет получать данные с текущего времени в эмуляторе.<br /><div class="quote"><span class="quotetitle">FlashPlayer <a href="https://stocksharp.com/posts/m/23348/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии?</div></div><br />Да, есть разница в том, когда запускать стратегию. Сам запуск стратегии лучше делать либо перед запуском эмулятора, либо у эмулятора есть событие изменения состояния и необходимо запускать стратегии когда он становится Started.<br /><div class="quote"><span class="quotetitle">FlashPlayer <a href="https://stocksharp.com/posts/m/23348/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">И еще один вопрос. При тестировании на исторических данных тестер всегда тестирует на стаканах? То есть если я имею из истории - только трейды - он из них постарается сделать стаканы и на них тестировать? Ведь как тестировать на трейдах - непонятно. А если есть ордерлог и трейды - чтобы тестер тестил на стаканах, построенных на ордерлоге, я должен это дополнительно указать - в противном случае он будет стараться строить стаканы по трейдам, так? То есть интересует - как устроены умолчания. Что по умолчанию берется для тестинга - какой тип сохраненной истории.</div></div><br />Эмулятор использует все доступные данные, причем набор доступных данных определяется для каждого дня истории. Если нет записанных стаканов и необходимо генерировать их по сделкам, то необходимо зарегистрировать TrendMarketDepthGenerator для инструмента и указать UseMarketDepths, если есть записанные стаканы, то просто указать UseMarketDepths. Если для инструмента есть ордерлог, то трейды и стаканы автоматически не используются.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/23348/Подскажите пожалуйста такой момент: Предположим, я хочу протестировать какую-то стратегию на историч...2013-01-12T22:55:44Z2013-01-12T22:59:05ZFlashPlayerhttps://stocksharp.com/users/16669/info@stocksharp.comПодскажите пожалуйста такой момент:<br /><br />Предположим, я хочу протестировать какую-то стратегию на исторических данных. Создаю эмулятор трейдер, подсасываюсь к сохраненной истории. Запускаю эмулятор трейдер. Если просто его запустить - он пробежится от старт тайма до стоп тайма, отреагировав на все подписанные события (сделки, заявки итп итд) ну и остановится. А теперь, я дополнительно создам стратегию (пусть даже пустую), и в настройках стратегии скажу ей - используй этот же эмулятор трейдер. Запускаю стратегию. Что в этот момент технически происходит? В дополнительном потоке заново запускается эмулятор трейдер от времени старта до стопа, но теперь исполняя стратегию? То есть вопрос больше вот в чем - эмулятор запустить все равно нужно, но важно ли когда я запускаю стратегию? Не получится ли так, что я запускаю стратегию почти одновременно с эмулятором, но чуть позже и она не с старт тайма начинает работать, а с того времени, которое было в эмуляторе на момент запуска стратегии? <br /><br /><br />И еще один вопрос. При тестировании на исторических данных тестер всегда тестирует на стаканах? То есть если я имею из истории - только трейды - он из них постарается сделать стаканы и на них тестировать? Ведь как тестировать на трейдах - непонятно. А если есть ордерлог и трейды - чтобы тестер тестил на стаканах, построенных на ордерлоге, я должен это дополнительно указать - в противном случае он будет стараться строить стаканы по трейдам, так? То есть интересует - как устроены умолчания. Что по умолчанию берется для тестинга - какой тип сохраненной истории.<br /><br />Заранее спасибо за ответ.Copyright @ StockSharp Platform LLC 2010 - 2024