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

Дневник разработчика торговой стратегии. Шаг 19. Попытка симуляции стратегии на нейросети.

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

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


На этом шаге я решил взять исходники из урока "Тесты торговых стратегий на C#. Урок 23. Эксперимент по улучшению существующей стратегии." (этот урок находиться в цикле уроков (Тесты торговых стратегий на C#) и исходники из урока Практика нейронных сетей. Урок 11. Обучение многослойного персептрона, который находиться в цикле уроков Практика нейронных сетей, что бы соединить их начать эксперименты по обучению нейронной сети торговать на бирже.

Для симуляции в программу тестирования стратегий я добавил класс StrategyNeuralNet:

    /// <summary>

    /// Стратегия на нейронной сети

    /// </summary>

    [DisplayName("Нейросеть 1")]

    [Serializable]

    public class StrategyNeuralNet : AbstractSignaler, ITradeSystem, IStrategyEdit

    {

        /// <summary>

        /// Драйвер торгового терминала или эмулятора

        /// </summary>

        public ITerminalDriver driver { get; set; }

 

        /// <summary>

        /// Нейросеть

        /// </summary>

        public NeuralNet net;

 

        /// <summary>

        /// Финансовый инструмент, которым мы торгуем

        /// </summary>

        public string ticker;

 

        /// <summary>

        /// Режим торгов

        /// </summary>

        public string market;

 

        /// <summary>

        /// Объем инструмента, которым торгуем

        /// </summary>

        public int count_trade;

 

 

        /// <summary>

        /// Номер торгового счета

        /// </summary>

        public string account { get; set; }

 

        /// <summary>

        /// Количество свечей, по истечению которых мы переобучаем нейросеть

        /// </summary>

        public int study_limit=100;

 

        /// <summary>

        /// Количество свечей, которые участвуют в расчете сигнала

        /// </summary>

        public int study_count = 30;

 

        /// <summary>

        /// Количество свечей в обучающей матрице

        /// </summary>

        public int study_matrix = 100;

 

... 

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

...

... Ну, и наконец, расчет сигнала:

        /// <summary>

        /// Получить сигнал по заданному номеру свечи

        /// </summary>

        /// <param name="index">Номер свечи, начиная с первой, счет идет с нуля</param>

        /// <returns>1 если сигнал на покупку, -1 если на продажу, 0 если нет сигнала</returns>

        public override int GetSignal(int index)

        {

            set_inputs(index);

            net.compute();

            if (net.outputs[0] >= 0.9999) return 1; else return -1;

        }

И так, тестирование. Генерим котировки:

Дневник разработчика торговой стратегии. Шаг 19. Попытка симуляции стратегии на нейросети.

В таблице видно, что они действительно изменяются по синусоидальному  закону:

Дневник разработчика торговой стратегии. Шаг 19. Попытка симуляции стратегии на нейросети.

Создаем стратегию, редактируем нейронную сеть этой стратегии, в ней пока будет всего один слой и один нейрон в слое:

Дневник разработчика торговой стратегии. Шаг 19. Попытка симуляции стратегии на нейросети.

Этот нейрон имеет 120 входов, так как мы у нас в обучение участвуют 30 свечей, пока мы учитываем только 4 поля этих свечей open, close, high, low. Синапсы пока нам не нужны - несчем связывать единственный нейрон.

И так, пробуем проверить и видим, что симуляция идет очень долго. "Ковыряние" в отладчике показало, что нейросеть просто не обучается и алгоритм обучения запускается на каждой свече, а он весьма долгий.

Но это уже следующий шаг. Я долго думал, где же описать этот шаг, в цикле Тесты торговых стратегий на C# или в Дневник разработчика биржевого робота? И вот что я решил: все идеи торговых стратегий, а так же их изменения и результаты тестирования на прибыльность будут публиковать в этом цикле уроков - Дневник разработчика биржевого робота. А вот отчет о процессе отглючивания и улучшение самой программы тестирования буду публиковать в Тесты торговых стратегий на C#. Если у меня возникнет идея улучшить саму нейросеть или провести с ней эксперимент без привязки к бирже - то отчеты об этих действиях буду публиковать в Практика нейронных сетей

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