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

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

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

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

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

 

        private void button2_Click(object sender, EventArgs e)

        {

            string path = "C:\\1\\om\\";

            Random rnd = new Random();

            StockOrder order;

            StringBuilder sb1 = new StringBuilder();

            StringBuilder sb2 = new StringBuilder();

            for (int i = 1; i < 1000000; i++)

            {

                order = new StockOrder();

                order.volume = rnd.Next(1, 10);

                order.price = rnd.Next(1,100);

                order.state = OrderState.active;

                if (rnd.Next(100) >= 50)

                {

                    order.operation = OrderOperation.buy;

                }

                else

                {

                    order.operation = OrderOperation.sell;

                }

                if (rnd.Next(100) >= 50)

                {

                    order.ticker = stock.tickers[0];

                }

                else

                {

                    order.ticker = stock.tickers[1];

                }

                order.account=stock.accounts[rnd.Next(3)];

                stock.putOrder(order);

            }

            for (int i = 1; i < (stock.tickers[0].orderManager as Glass).ticks.Count; i++)   

            {

                sb1.AppendFormat("{0}; {1};\n", i, (stock.tickers[0].orderManager as Glass).ticks[i].ToString());

            }

            System.IO.File.WriteAllText(path+"log1.txt", sb1.ToString());

            for (int i = 1; i < (stock.tickers[1].orderManager as Glass).ticks.Count; i++)

            {

                sb2.AppendFormat("{0}; {1};\n", i, (stock.tickers[1].orderManager as Glass).ticks[i].ToString());

            }

            System.IO.File.WriteAllText(path + "log2.txt", sb2.ToString());

        }

 

Получилось довольно таки забавно: сначала есть движения, а потом нет. И самих тиков не так уж и много, при чем, они мало зависят от количества циклов выставления заявки. Тоесть, если я делаю 1000 циклов и 1000000 циклов, количество тиков примерно одинаковое:

 

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

Газпром

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

Сбербанк

 

 

Я думаю, такое поведение модели можно объяснить тем, что денежные средства перетекают со счета на счет и на этом торговля заканчивается. Эту догадку, конечно, надо проверить. Для этого я решил построить еще и график изменения стоимости портфеля и баланса  виртуальных трейдеров. Получилось, что у одного трейдера деньги уменьшились наполовину, у другого увеличились на 50%, у третьего почти не изменились:

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

Проект "Битва роботов". Шаг 2. Реализация взаиморасчетов на виртуальной бирже

 

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

Следующим шагом будет создание драйвера вирутуальной биржи на основе интерфейса ITerminalDriver(см. анонсы к урокам Пишем биржевого робота на C# (платный раздел))

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