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

Проект "Битва роботов". Шаг 4. Эмулятор "пьяного трейдера".

В прошлый раз я унифицировал виртуальную биржу и улучшил интерфейс. Сейчас же приступаю к следующему этапу: написание эмуляторов трейдеров. Все эмуляторы трейдеров, в том числе и биржевые роботы, будут потомками класса AbstractTrader:

    /// <summary>

    /// Абстрактный класс торгового робота (эмулятора трейдера)

    /// </summary>

    public abstract class AbstractTrader

    {

 

        /// <summary>

        /// Драйвер биржевого терминала

        /// </summary>

        public ITerminalDriver driver;

 

        /// <summary>

        /// Обработчик кванта времени, который система предоставляет роботу для торговли

        /// </summary>

        public abstract void handle_trade();

    }

 

А вот как выглядит простейший робот, просто выставляющий заявки по рандому (случайным образом):

    /// <summary>

    /// Эмулятор трейдера, который высталвяет заявки по рандому

    /// </summary>

    public class RandomTrader : AbstractTrader

    {

        /// <summary>

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

        /// </summary>

        public string account;

 

        /// <summary>

        /// Драйвер биржевого терминала

        /// </summary>

        public ITerminalDriver driver;

 

        /// <summary>

        /// Максимальная цена, по которой он высталвяет заявки

        /// </summary>

        public int maxPrice=200;

 

        /// <summary>

        /// Максимльаное количество инструментов в выставляемой заявке

        /// </summary>

        public int maxCount = 10;

 

        private Random rnd;

 

        public RandomTrader()

        {

            rnd = new Random();

        }

 

        /// <summary>

        /// Обработчик кванта времени, который система предоставляет роботу для торговли

        /// </summary>

        public override void handle_trade()

        {

            List<StockItem> items = (driver as IAddTerminalDriver).getItems();

            StockOrderInfo info = new StockOrderInfo();

            info.account = account;

            info.count = rnd.Next(1, maxCount);

            info.price = rnd.Next(1, maxPrice);

            info.ticker = items[rnd.Next(items.Count)].ticker;

            if (rnd.Next(100) >= 50) info.type = "buy"; else info.type = "sell";

            info.stopType = "";

            ResultSendOrder res = driver.sendOrder(info);

        }

 

Этот алгоритм (когда заявки выставляться случайно) я обозвал "пьяный трейдер".

 

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

 

Проект "Битва роботов". Шаг 4. Эмулятор "пьяного трейдера".

 

Сначала идет активная торговля. Потом она останавливается (такая же картина наблюдалась когда я тестировал ядро биржи скриптом на шаге 2).Но тут, по крайней мере, сразу видно, почему встает торговля: в стакане одни заявки на покупку, на продажу практически нет. Ничего удивительного, шорты то пока запрещены, вот и не дает биржа выставлялт роботам заявки на продажу - они пытаются продать больше, чем у них есть.

Оживить торговлю в данному случае вижу следующими способами:

  • Разрешить шорты. Тогда придется писать блок контроля маржи.

  • Удалять заявки, которые долго висят. Это явно несколько оживит торговлю.

  • Добавить иные торговые алгоритмы. Разумеется, это я собираюсь сделать в ближайшее время.

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