Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Тесты торговых стратегий на C# (платный раздел) arrow Тесты торговых стратегий на C#. Урок 19. Эксперименты с генетическим алгоритмом. Продолжение.
01.03.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Тесты торговых стратегий на C#. Урок 19. Эксперименты с генетическим алгоритмом. Продолжение. Печать E-mail
Автор megabax   
18.02.2014 г.
New Page 1

Тесты торговых стратегий на C#. Урок 19. Эксперименты с генетическим алгоритмом. Продолжение.

Что бы смотреть урок полностью, а так же скачать исходники к уроку, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Сегодня мы проведем еще один эксперимент с оптимизацией стратегии методом генетического алгоритма: оптимизируем стратегию на одном периоде времени, а тестировать будем на другом (на том же самом инструменте и тех же самых таймфреймах). Для реализации этой идеи мы в класс TradeSystemTester  добавим поля для задания интервала:

...

        /// <summary>

        /// Начало интервала тестирования

        /// </summary>

        public DateTime beg_date_time { get; set; }

 

        /// <summary>

        /// Конец интервала тестирования

        /// </summary>

        public DateTime end_date_time { get; set; }

...

И переделываем у него  метод simulation:

        /// <summary>

        /// Симуляция торговой стратегии

        /// </summary>

        public void simulation(double BegCash, string LogFile, string PortLogFile)

        {

           

...          

...Для реализации самого алгоритма разделения временного периода оптимизации и тестирования предусмотрим класс  DinamicOptimizationTest. В этом классе реализуем метод, который последовательно оптимизируем стратегию, протестирует, потом снова оптимизирует и протестирует уже на другом интервале и так далее, до самого конца указанного периода времени. Вот этот класс:

    /// <summary>

    /// Элемент статистики динамической оптимизации

    /// </summary>

    public class DinamicOptimizationItem

    {

        /// <summary>

        /// Начало интервала оптимизации

        /// </summary>

        public DateTime beg_date_time_optimization { get; set; }

 

        /// <summary>

        /// Конец интервала оптимизации

        /// </summary>

        public DateTime end_date_time_optimization { get; set; }

 

 ...

...Используя данную программу, я протестировал стратегию на акциях Газпром, дневные таймфреймы, период с 01.01.2008 по 31.12.2013. Период оптимизации 365 дней, период тестирования 100 дней. Дни календарные. Размер депозита 500 рублей, тест имитировал торговлю одной акцией. Всего в период проверки вошло три интервала.

...

...Тест прогонял несколько раз, в силу того, что генетический алгоритм это рандомный процесс, каждый раз результаты получались разные:

Начало периода оптимизации Конец периода оптимизации  Результат, % Начало периода тестирования  Конец периода тестирования Результат
01.01.2008 0:00  31.12.2010 0:00:00 21,96311  31.12.2010 0:00:00  31.12.2011 0:00:00 0
31.12.2008 0:00  31.12.2011 0:00:00 0  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 0  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 5,315166  31.12.2010 0:00:00  31.12.2011 0:00:00 0
31.12.2008 0:00  31.12.2011 0:00:00 0,991166  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 0,72328  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 48,06095  31.12.2010 0:00:00  31.12.2011 0:00:00 4,543028
31.12.2008 0:00  31.12.2011 0:00:00 0  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 0  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 33,32798  31.12.2010 0:00:00  31.12.2011 0:00:00 4,543028
31.12.2008 0:00  31.12.2011 0:00:00 0  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 0  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 0  31.12.2010 0:00:00  31.12.2011 0:00:00 0
31.12.2008 0:00  31.12.2011 0:00:00 0  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 0  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 33,35902  31.12.2010 0:00:00  31.12.2011 0:00:00 0
31.12.2008 0:00  31.12.2011 0:00:00 0  31.12.2011 0:00:00  30.12.2012 0:00:00 0
31.12.2009 0:00  30.12.2012 0:00:00 4,461102  30.12.2012 0:00:00  30.12.2013 0:00:00 0
01.01.2008 0:00  31.12.2010 0:00:00 5,98515  31.12.2010 0:00:00  31.12.2011 0:00:00 -19,9867
31.12.2008 0:00  31.12.2011 0:00:00 1,66115  31.12.2011 0:00:00  30.12.2012 0:00:00 -4,10367
31.12.2009 0:00  30.12.2012 0:00:00 0  30.12.2012 0:00:00  30.12.2013 0:00:00 0

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

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 


 

 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги