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

Тесты торговых стратегий на C#. Урок 11. Оптимизация торговой стратегии

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

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


Исходники у уроку можно скачать в платном разделе.

Сначала мы попробуем оптимизировать параметры стратегии "в лоб" - тоесть, тупым переборам всех возможных значений в заданном диапазоне с заданным шагом. Затем, если нас не удовлетворит скорость работы алгоритма, будем придумывать что то другое, например, применим генетический алгоритм.

И так, для начала мы создадим класс TradeSystemOptimizer...

...

... Объясняю, как это класс работает. Для запуска процесса оптимизации мы вызываем метод Optimize, указав ему в качестве параметра начальное значение денежных средств...

 

...

 

 

...теперь делаем кнопочку, что бы проверить нашу программу*:

Тесты торговых стратегий на C#. Урок 11. Оптимизация торговой стратегии

 

И пишем обработчик нажатия на эту кнопочку:

        private void btnOptimize_Click(object sender, EventArgs e)

        {

            //диалог открытия файла

            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)

            {

                PriceSource source = new PriceSource();

 

                //загрузим файл

                source.LoadFromTextFile(openFileDialog.FileName);

 

 

                MovingAverage MAShort = new MovingAverage(); // TODO: инициализация подходящего значения

                MovingAverage MALong = new MovingAverage(); // TODO: инициализация подходящего значения

 

                //установим параметры

                MAShort.setSource(source);

                MAShort.Periods = 3;

                MALong.setSource(source);

                MALong.Periods = 5;

 

                MACrossTradeSystem system = new MACrossTradeSystem();

                system.count_trade = 1;

                system.MAFast = MAShort;

                system.MASlow = MALong;

 

                TradeSystemTester tester = new TradeSystemTester(source);

                tester.system = system;

                tester.techCosts = 0.1;

 

                TradeSystemOptimizer optimizer=new TradeSystemOptimizer();

                optimizer.tester = tester;

                optimizer.parameters.Add(new OptimizingParameter("MAFastPeriod", 3, 20, 1));

                optimizer.parameters.Add(new OptimizingParameter("MASlowPeriod", 5, 20, 1));

                optimizer.LogFile = "c:\\1\\opt.txt";

                optimizer.Optimize(10000);

 

                lbRes.Items.Clear();

                foreach (OptimizingParameter par in optimizer.parameters)

                {

                    lbRes.Items.Add(par.name+" "+par.result);

                }

 

                MessageBox.Show(optimizer.result.ToString());

            }

 

Обратите внимание, что параметры оптимизации мы передаем в классе OptimizingParameter, где имя параметра задается в виде текстовой строки, а диапазон и шаг в виде чисел. Такой способ задания параметров позволяет метод SetParametr нашего класса оптимизации ...

 

....

 

И так, проведем оптимизации. Программа выдаст нам наибольшее значение стоимости портфеля и параметры, при которых имеет место это значение:

Тесты торговых стратегий на C#. Урок 11. Оптимизация торговой стратегии

 

Как узнать, что программа оптимизирует правильно? Очень просто, произвести эмуляцию по оптимизируемым параметрам, результат должен быть одинаков. Кроме того, мы можем заглянуть в лог оптимизации**:

 

Тесты торговых стратегий на C#. Урок 11. Оптимизация торговой стратегии

 

Насчет скорости работы. Брал дневные интервалы за пять лет. Считает довольно быстро, несколько секунд. Но количество данных у нас пока не большое, да и вариантов не сильно много. Так что в будущем, наверняка нам придется оптимизировать сам процесс оптимизации. Но решение на счет будем принимать, когда займемся форвардным тестированием торговой стратегии.

А на сегодня все, до новых встреч.

 


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

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


 

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