Показаны сообщения с ярлыком Monitor. Показать все сообщения
Показаны сообщения с ярлыком Monitor. Показать все сообщения

четверг, 6 ноября 2014 г.

Monitor версия 2.3
Проблема:
Method Run.SQLout
Иногда вылетает в Exception: "Bad Connection" при обращении к Command.ExecuteReader();

Connection ‘НЕ’ OPEN возникает из-за этого:

06.11.2014 11:21:38 : MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
   в MySql.Data.MySqlClient.MySqlPool.GetConnection()
   в MySql.Data.MySqlClient.MySqlConnection.Open()

   в Monitor.ConnectionsPool.SQLConnect() в C:\Monitor\Monitor23\Monitor\WindowsFormsApplication2\Library.cs:строка 390 
  

Добавлена проверка на ConnetctionState.Open в Run.Sqlout
и проверка на Reader != null в

UpdateDeals();
WorkStrats();



вторник, 7 октября 2014 г.

Monitor Development Requirements

Monitor Development Requirements

1. Формировать (вычислять PnL) портфель по ИК Форум
2. Показывать RoundTrip для всех MTC
3. Считать PnL непрерывно ( и после Клиринга)
4. Считать PnL не из Quikа, а самостоятельно.

пятница, 3 октября 2014 г.

Robot2Sql


Описание класса  Robot2SQL используемого для закачки необходимой монитору информации в базу данных. Автор Н.Андронов.

·         Методы вызываемые 1 раз при инициализации стратегии или инструмента которым стратегия торгует.

Robot2SQL.Initialize(string Name, long AlgoID, string Account, string Comment)Robot2SQL.InitializeInstrument(string Name, string Instrument)


·         Методы которые вызываются сколь угодно часто в соответсвующим местах робота. Спама транзакций в базу не произойдет, эти значения будут обновлятся не чаще чем один раз в Robot2SQL.TimeDelay = 10000; милисекунд. это значение можно менять.

Robot2SQL.UpdatePLtoday(string Name, double PLtoday)
Robot2SQL.UpdatePLtotal(string Name, double PLtotal)
Robot2SQL.UpdatePingTime(string Name)
Robot2SQL.UpdateDataTime(string Name)


·      Методы которые вызываются по факту произошедшего события.

Robot2SQL.UpdatePosition(string Name, string Instrument, int Position)
Robot2SQL.UpdateLastDeal(string Name, DateTime DTdeal, string Instrument, int Size)
Robot2SQL.UpdateRoundTrip(string Name, double RoundTrip)


Robot2SQL.UpdateTrade(string Name, long tradeID, string Ticker, DateTime DT, double Price, int Amount, double Volume)

Monitor. Структура БД

Структура БД. Monitor. Автор Н.Андронов
Deals:
SELECT
    `Deals`.`tradeID`,
    `Deals`.`StratName`,
    `Deals`.`Ticker`,
    `Deals`.`Time`,
    `Deals`.`Price`,
    `Deals`.`Amount`,
    `Deals`.`Volume`
FROM `Monitor`.`Deals`;

QuikPositions
SELECT
    `QuikPositions1`.`Account`,
    `QuikPositions1`.`Instrument`,
    `QuikPositions1`.`Amount`,
    `QuikPositions1`.`SecCode`,
    `QuikPositions1`.`Type`,
    `QuikPositions1`.`Margin`,
    `QuikPositions1`.`Value`
FROM `Monitor`.`QuikPositions1`;

Strategies
SELECT
     `strategies`.`StratName`,
    `strategies`.`AlgoID`,
    `strategies`.`User`,
    `strategies`.`Account`,
    `strategies`.`Client`,
    `strategies`.`CompName`,
    `strategies`.`Comment`,
    `strategies`.`StartTime`,
    `strategies`.`PingTime`,
    `strategies`.`DataTime`,
    `strategies`.`PLtoday`,
    `strategies`.`PLtotal`,
    `strategies`.`LastDealTime`,
    `strategies`.`LastDealInstrument`,
    `strategies`.`LastDealSize`,
    `strategies`.`RoundTrip`,
    `strategies`.`Instrument1`,
    `strategies`.`Position1`,
    `strategies`.`Instrument2`,
    `strategies`.`Position2`,
    `strategies`.`Instrument3`,
    `strategies`.`Position3`,
    `strategies`.`Instrument4`,
    `strategies`.`Position4`,
    `strategies`.`Instrument5`,
    `strategies`.`Position5`
FROM `Monitor`.`strategies`;


Строки подключения к MySql

 public static string SQLServerName = "192.168.1.19";
    public static string SQLDataBaseName = "Monitor";
    public static string SQLLogin = "root";
    public static string SQLPassword = "*********";
    public static string TableNameForStrategies = "strategies";

четверг, 2 октября 2014 г.

Monitor от Андронова Николая.

Компоненты:
MySql.Data - https://www.nuget.org/packages/MySql.Data/
ObjectListView - http://sourceforge.net/projects/objectlistview/
SparkleLibrary - http://objectlistview.sourceforge.net/cs/animations.html
TeeChart - http://www.steema.com/

Work()
UpdateDeals() - 60 секунд
CalculatePL() - 10, 30 секунд

Основной цикл:
/// Основной рабочий цикл класса включает в себя
/// 1. считывание данных из базы
/// 2. репликацию в коллекцию источник данных для формы
/// 3. проверку на то работает ли биржа и генерацию звука и е-мейл сообщений в случае проблем
Work:
{
///проверка того что биржа работает
CheckMarket()
///  Закачка данных из SQL
WorkStrats()
{
Добавляет Новые Стратегии в Процессе работы без Рестарта
}
/// Реплицирует данные из коллекции закачанной из SQL в ту которая выводится в форме.
/// Репликация отделена от закачки и коллекции разделены для того чтоб
/// потенциальные лаги при закачке из базы денных не вносили задержку в обработке формы.
Replicate()
}

// Метод подкачивает из базы данных сделки для всех стратегий.
UpdateDeals()

читает сделки из БД через 60 секунд

long tradeID = Reader.GetInt64("tradeID");
                    string StratName = Reader.GetString("StratName");
                    string Ticker = Reader.GetString("Ticker");
                    DateTime DT = Reader.GetDateTime("Time");
                    double Price = Reader.GetDouble("Price");
                    int Amount = Reader.GetInt32("Amount");
                    double Volume = Reader.GetDouble("Volume");
                 
                    LastUpdatedTime = DT;