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

Тесты торговых стратегий на C#. Урок 41. Разработка стратегии Прокариот-1.

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

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


На уроке Дневник разработчика торговой стратегии. Шаг 43. Идея стратегии Прокариот-1 я озвучил идею стратегии Прокариот-1. Сейчас мы эту стратегию будем разрабатывать. Начнем с того, что разработаем класс ProkaryotesTrader:

    /// <summary>

    /// Трейдер одноклеточной стратегии Прокариот-1

    /// </summary>

    [Serializable]

    public class ProkaryotesTrader : Trader, ICloneTrader

    {

Как видим, он является предком базового класса и поддерживает интерфейс ICloneTrader - как вы уже знаете из моих предыдущих уроков, этот интерфейс нужен для того, что бы трейдер мог быть клонирован - получена его идентичная копия, но не ссылка, а новый самостоятельный объект. Для чего это вы тоже знаете - что бы всю стратегию можно было так же клонировать, затем конвертировать ее в ген, мутировать его и получить стратегию с другими параметрами, дабы потом все эти клоны стратегий подвергнуть отбору через генетический алгоритм. Все это тоже вам известно. Я лишь напоминаю, а так же сообщаю это для тех, кто начал читать этот цикл уроков с этого данного урока.

Идем дальше. ...

......Те поля, которые будут редактироваться в диалоге, помечены атрибутом FieldDisplayInfo, что бы их отобразил дизайнер форм. Дизайнер форм - это такая мощная штука, описанная в C# и ООП для профессионалов. Урок 13. Пишем дизайнер форм, которая позволяет  автоматически генерировать форму для редактирования данных. ...

...

...Продолжим писать ProkaryotesTrader, метод GetSignal, он реализует стартегию Шип (см. Тесты торговых стратегий на C#. Урок 36. Стратегия "Шип" и Тесты торговых стратегий на C#. Урок 37. В стратегию "Шип" добавили стоп приказы)...

...

Новый конструктор так же не нужен, так как сгодиться и тот, что у ArchaeraFourth. А вот другие методы, работающие непосредственно с объектами типа "Трейдре", необходимо переопределить. Начнем с  create_traders:

        /// <summary>

        /// Создать трейдеров

        /// </summary>

        protected override void create_traders()

        {

            ProkaryotesTrader trader = new ProkaryotesTrader();

            manager.add_trader(trader);

        }

Метод создания формы диалога редактирования мы тоже переопределяем, на этот раз, кажется, раз и навсегда, по идее, с введением дизайнера форм в дочерних классах его переопределять не понадобиться:

        /// Создать форму диалога редактирования

        /// </summary>

        /// <returns>Объект формы</returns>

        protected override Form create_edit_form()

        {

            Form form = new Form();

            form.Width = 500;

            return form;

        }

Класс заполнения формы:

        /// <summary>

        /// Заполнить форму диалога редактирования

        /// </summary>

        /// <param name="a_form">Заполняемая форма</param>

        /// <returns>Объект формы</returns>

        protected override void fill_edit_form(Form a_form)

        {

            designer = new Designer();

            designer.label_wide = 250;

            ProkaryotesTrader trader = (manager.traders[0] as ProkaryotesTrader);

            designer.fill_form(trader.lwf_filter, a_form,false);

            designer.fill_form(trader, a_form,true);

 

            a_form.Text = ToString();

 

            //Кнопка ОК

            Button btn=new Button();

            btn.Left=designer.curr_x+150;

            btn.Top=designer.curr_y+20;

            btn.DialogResult = DialogResult.OK;

            btn.Text = "OK";

            a_form.Controls.Add(btn);

 

            //Кнопка Cancel

            btn = new Button();

            btn.Left = designer.curr_x+250;

            btn.Top = designer.curr_y + 20;

            btn.DialogResult = DialogResult.Cancel;

            btn.Text = "Cancel";

            a_form.Controls.Add(btn);

        }

Обратите внимание, что метод fill_form вызывается у дизайнера форм два раза, для самого класса трейдера и для LWF фильтра. Но в дизайнере форм, в том что  взят из C# и ООП для профессионалов. Урок 13. Пишем дизайнер форм, такое не предусмотрено. Поэтому сам класс Designer, точнее его метод fill_form  надо чуть чуть подправить (изменения выделены маркером)...

...

...Теперь можно переходить к тестированию:

Тесты торговых стратегий на C#. Урок 41. Разработка стратегии Прокариот-1.

Вот результат оптимизации:

Тесты торговых стратегий на C#. Урок 41. Разработка стратегии Прокариот-1.

Надо сказать, что в популяции было 200 мест, оптимизация происходила за 200 итераций, процесс шел всего пару минут:

Тесты торговых стратегий на C#. Урок 41. Разработка стратегии Прокариот-1.

 


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

 

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