Проведение сделок по определенной цене

Проведение сделок по определенной цене
Atom
11/2/2011
InsiderHSE


Имеется ли возможность при тестировании на исторических данных заключать сделки по определенной цене? Как я понимаю, по умолчанию происходит генерация стаканов и мэтчинг заявок. Хочется ускорить процедуру тестирования, отказавшись от генерации стаканов (а в лучшем случае, еще и подгрузки сделок), совершая сделки, например, по цене открытия свечи, используя заранее сгенерированные свечи.




Thanks:


Char

Avatar
Date: 11/2/2011
Reply


Как понимаю основная проблема исторического тестирования все-же не геренрация стаканов а некий "мусор от прошлых сделок" Я ускорял тестирование засовывая в эмулятор по несколько стратегий и ограничивая время тестирования, (я говорю про быстрые стратегии). Для генерации сделок использовалось квотирование, и если перезапускать эмулятор раз в несколько часов то все происходило быстрее. При профайлинге эмулятора дот трейсом примерно 1/3 времени тратилась на слип и примерно 1/3 на вейт(в смысле синхронизацию). Из чего делаю вывод что что-то не так с ивентами в датском королевстве. поправьте меня если я не прав.

Thanks:

InsiderHSE

Avatar
Date: 11/2/2011
Reply


Char: Как понимаю основная проблема исторического тестирования все-же не геренрация стаканов а некий "мусор от прошлых сделок" Я ускорял тестирование засовывая в эмулятор по несколько стратегий и ограничивая время тестирования, (я говорю про быстрые стратегии). Для генерации сделок использовалось квотирование, и если перезапускать эмулятор раз в несколько часов то все происходило быстрее. При профайлинге эмулятора дот трейсом примерно 1/3 времени тратилась на слип и примерно 1/3 на вейт(в смысле синхронизацию). Из чего делаю вывод что что-то не так с ивентами в датском королевстве. поправьте меня если я не прав.

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

Thanks:

Char

Avatar
Date: 11/2/2011
Reply


Ну у нас с вами разное понялие "скорости" , меня вполне устраивает что маркет эмулятор стартует около 20 секунд и около 2-3х минут проходит день на реальных данных с глубиной стакана 50 на стратегии вида. с 16-22% загрузкой проца при шести ядрах.

public class PerfStrategy:Strategy { protected override void OnStarting() { Trader.MarketTimeChanged += new Action(Trader_MarketTimeChanged ); }
    void Trader_MarketTimeChanged()
    {
        var md = Trader.GetMarketDepth(Security);
        Thread.Sleep(1);
    }
}

Но, если добавить в стратегию какое-либо исполнения сделок, скорость тестирования геометрически замедляется. Так что вопрос не в истории (ИМХО) З.Ы. Еще добавка, если добавить стратегии, тестирование замедляется далеко не арифметически.

Thanks:

InsiderHSE

Avatar
Date: 11/2/2011
Reply


Если стратегия на часвых свечках, то для тестирования нужен период как минимум несколько месяцев, и 2-3 минуты на день кажутся вечностью, тем более что ее нужно прогонять с различными параметрами. Кстати,Вы используете сохраненные стаканы или сгенерированные? Столкнулся с тем, что по сгенерированным стаканам сделки происходят по существенно лучшим ценам, чем когда бот на реале торгует.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/3/2011
Reply


InsiderHSE: Имеется ли возможность при тестировании на исторических данных заключать сделки по определенной цене? Как я понимаю, по умолчанию происходит генерация стаканов и мэтчинг заявок. Хочется ускорить процедуру тестирования, отказавшись от генерации стаканов (а в лучшем случае, еще и подгрузки сделок), совершая сделки, например, по цене открытия свечи, используя заранее сгенерированные свечи.

  1. Сохраните свечки как сделки через Storage API (цена закрытие == цене сделки). Естественно, отдельная папка, чтобы не перетереть настоящие сделки.
  2. Сделайте генерацию стакана с глубиной 1.
Thanks:


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

loading
clippy