Beispiel #1
0
        public InputTranParser(LuaFixTransactionMessageAdapter transAdapter, FixMessageAdapter messAdapter, List<Security> securities)
        {
            _transAdapter = transAdapter;
            _messAdapter = messAdapter;
            _securities = securities;

            _watcher = new FileSystemWatcher(_tranFilePath, "*.tri");

            _tranKeys = new List<TransactionKey>
            {
                new TransIdKey(),
                new AccountKey(),
                new ClientCodeKey(),
                new ClassCodeKey(),
                new SecCodeKey(),
                new ActionKey(),
                new OperationKey(),
                new PriceKey(),
                new StopPriceKey(),
                new QuantityKey(),
                new TypeKey(),
                new OrderKeyKey(),
                new OriginalTransIdKey(),
                new CommentKey()
            };
        }
        public InputTranParser(LuaFixTransactionMessageAdapter transAdapter, FixMessageAdapter messAdapter, List <Security> securities)
        {
            _transAdapter = transAdapter;
            _messAdapter  = messAdapter;
            _securities   = securities;

            _watcher = new FileSystemWatcher(_tranFilePath, "*.tri");

            _tranKeys = new List <TransactionKey>
            {
                new TransIdKey(),
                new AccountKey(),
                new ClientCodeKey(),
                new ClassCodeKey(),
                new SecCodeKey(),
                new ActionKey(),
                new OperationKey(),
                new PriceKey(),
                new StopPriceKey(),
                new QuantityKey(),
                new TypeKey(),
                new OrderKeyKey(),
                new OriginalTransIdKey(),
                new CommentKey()
            };
        }
Beispiel #3
0
        public MainWindow()
        {
            InitializeComponent();

            ConnectCommand = new DelegateCommand(OnConnect, CanOnConnect);
            UnloadingCommand = new DelegateCommand(Unloading, CanUnloading);
            DeleteSubscriptionCommand = new DelegateCommand(DeleteSubscription, CanDeleteSubscription);
            ParsingCommand = new DelegateCommand(Parsing, CanParsing);

            _securities = new List<Security>();

            _transAdapter = new LuaFixTransactionMessageAdapter(new MillisecondIncrementalIdGenerator())
            {
                Login = "******",
                Password = "******".To<SecureString>(),
                Address = QuikTrader.DefaultLuaAddress,
                TargetCompId = "StockSharpTS",
                SenderCompId = "quik",
            };

            _messAdapter = new LuaFixMarketDataMessageAdapter(new MillisecondIncrementalIdGenerator())
            {
                Login = "******",
                Password = "******".To<SecureString>(),
                Address = QuikTrader.DefaultLuaAddress,
                TargetCompId = "StockSharpMD",
                SenderCompId = "quik",
            };

            _messAdapter.AddSupportedMessage(MessageTypes.Connect);

            ((IMessageAdapter)_messAdapter).NewOutMessage += OnNewOutMessage;
        }
Beispiel #4
0
        public MainWindow()
        {
            InitializeComponent();

            ConnectCommand            = new DelegateCommand(OnConnect, CanOnConnect);
            UnloadingCommand          = new DelegateCommand(Unloading, CanUnloading);
            DeleteSubscriptionCommand = new DelegateCommand(DeleteSubscription, CanDeleteSubscription);
            ParsingCommand            = new DelegateCommand(Parsing, CanParsing);

            _securities = new List <Security>();

            _transAdapter = new LuaFixTransactionMessageAdapter(new MillisecondIncrementalIdGenerator())
            {
                Login        = "******",
                Password     = "******".To <SecureString>(),
                Address      = QuikTrader.DefaultLuaAddress,
                TargetCompId = "StockSharpTS",
                SenderCompId = "quik",
            };

            _messAdapter = new LuaFixMarketDataMessageAdapter(new MillisecondIncrementalIdGenerator())
            {
                Login        = "******",
                Password     = "******".To <SecureString>(),
                Address      = QuikTrader.DefaultLuaAddress,
                TargetCompId = "StockSharpMD",
                SenderCompId = "quik",
            };

            _messAdapter.AddSupportedMessage(MessageTypes.Connect);

            ((IMessageAdapter)_messAdapter).NewOutMessage += OnNewOutMessage;
        }
        private void ConnectClick(object sender, RoutedEventArgs e)
        {
            if (!_isConnected)
            {
                if (Connector == null)
                {
                    var isDde = IsDde.IsChecked == true;

                    if (SmartLogin.Text.IsEmpty())
                    {
                        MessageBox.Show(this, LocalizedStrings.Str2965);
                        return;
                    }
                    if (SmartPassword.Password.IsEmpty())
                    {
                        MessageBox.Show(this, LocalizedStrings.Str2966);
                        return;
                    }
                    if (isDde && QuikPath.Text.IsEmpty())
                    {
                        MessageBox.Show(this, LocalizedStrings.Str2967);
                        return;
                    }

                    // создаем агрегирующее подключение (+ сразу инициализируем настройки переподключения)
                    Connector = InitReconnectionSettings(new Connector());

                    // добавляем подключения к SmartCOM и Quik
                    var quikTs = new LuaFixTransactionMessageAdapter(Connector.TransactionIdGenerator)
                    {
                        Login                = "******",
                        Password             = "******".To <SecureString>(),
                        Address              = QuikTrader.DefaultLuaAddress,
                        TargetCompId         = "StockSharpTS",
                        SenderCompId         = "quik",
                        ExchangeBoard        = ExchangeBoard.Forts,
                        Version              = FixVersions.Fix44_Lua,
                        RequestAllPortfolios = true,
                        MarketData           = FixMarketData.None,
                        TimeZone             = TimeHelper.Moscow
                    };
                    var quikMd = new FixMessageAdapter(Connector.TransactionIdGenerator)
                    {
                        Login                = "******",
                        Password             = "******".To <SecureString>(),
                        Address              = QuikTrader.DefaultLuaAddress,
                        TargetCompId         = "StockSharpMD",
                        SenderCompId         = "quik",
                        ExchangeBoard        = ExchangeBoard.Forts,
                        Version              = FixVersions.Fix44_Lua,
                        RequestAllSecurities = true,
                        MarketData           = FixMarketData.MarketData,
                        TimeZone             = TimeHelper.Moscow
                    };
                    quikMd.RemoveTransactionalSupport();

                    Connector.Adapter.InnerAdapters[quikMd] = 1;
                    Connector.Adapter.InnerAdapters[quikTs] = 1;

                    var smartCom = new SmartComMessageAdapter(Connector.TransactionIdGenerator)
                    {
                        Login    = SmartLogin.Text,
                        Password = SmartPassword.Password.To <SecureString>(),
                        Address  = SmartAddress.SelectedAddress,
                    };
                    Connector.Adapter.InnerAdapters[smartCom] = 0;

                    // очищаем из текстового поля в целях безопасности
                    //SmartPassword.Clear();

                    var logManager = new LogManager();
                    logManager.Listeners.Add(new FileLogListener("sample.log"));
                    logManager.Sources.Add(Connector);

                    // подписываемся на событие успешного соединения
                    Connector.Connected += () =>
                    {
                        // возводим флаг, что соединение установлено
                        _isConnected = true;

                        // разблокируем кнопку Экспорт
                        this.GuiAsync(() => ChangeConnectStatus(true));
                    };

                    // подписываемся на событие разрыва соединения
                    Connector.ConnectionError += error => this.GuiAsync(() =>
                    {
                        // заблокируем кнопку Экспорт (так как соединение было потеряно)
                        ChangeConnectStatus(false);

                        MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
                    });

                    // подписываемся на ошибку обработки данных (транзакций и маркет)
                    Connector.Error += error =>
                                       this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

                    // подписываемся на ошибку подписки маркет-данных
                    Connector.MarketDataSubscriptionFailed += (security, type, error) =>
                                                              this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(type, security)));

                    Connector.NewSecurities += securities => _securitiesWindow.SecurityPicker.Securities.AddRange(securities);
                    Connector.NewOrders     += orders => _ordersWindow.OrderGrid.Orders.AddRange(orders);

                    // подписываемся на событие о неудачной регистрации заявок
                    Connector.OrdersRegisterFailed += OrdersFailed;
                    // подписываемся на событие о неудачном снятии заявок
                    Connector.OrdersCancelFailed += OrdersFailed;

                    // подписываемся на событие о неудачной регистрации стоп-заявок
                    Connector.StopOrdersRegisterFailed += OrdersFailed;
                    // подписываемся на событие о неудачном снятии стоп-заявок
                    Connector.StopOrdersCancelFailed += OrdersFailed;

                    // устанавливаем поставщик маркет-данных
                    _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

                    ShowSecurities.IsEnabled = ShowOrders.IsEnabled = true;
                }

                Connector.Connect();
            }
            else
            {
                Connector.Disconnect();
            }
        }
        private void QuikConnectionMouseDoubleClick(object sender, RoutedEventArgs e)
        {
            if (_connector == null)
            {
                _connector = new Connector();

                if (QuikCheckBox.IsChecked == true)
                {
                    var quikTs = new LuaFixTransactionMessageAdapter(_connector.TransactionIdGenerator)
                    {
                        Login                = "******",
                        Password             = "******".To <SecureString>(),
                        Address              = "localhost:5001".To <EndPoint>(),
                        TargetCompId         = "StockSharpTS",
                        SenderCompId         = "quik",
                        ExchangeBoard        = ExchangeBoard.Forts,
                        Version              = FixVersions.Fix44,
                        RequestAllPortfolios = true,
                        MarketData           = FixMarketData.None,
                        UtcOffset            = TimeHelper.Moscow.BaseUtcOffset
                    };
                    var quikMd = new FixMessageAdapter(_connector.TransactionIdGenerator)
                    {
                        Login                = "******",
                        Password             = "******".To <SecureString>(),
                        Address              = "localhost:5001".To <EndPoint>(),
                        TargetCompId         = "StockSharpMD",
                        SenderCompId         = "quik",
                        ExchangeBoard        = ExchangeBoard.Forts,
                        Version              = FixVersions.Fix44,
                        RequestAllSecurities = true,
                        MarketData           = FixMarketData.MarketData,
                        UtcOffset            = TimeHelper.Moscow.BaseUtcOffset
                    };
                    _connector.Adapter.InnerAdapters[quikMd.ToChannel(_connector, "Quik MD")] = 1;
                    _connector.Adapter.InnerAdapters[quikTs.ToChannel(_connector, "Quik TS")] = 1;
                }

                if (SmartComCheckBox.IsChecked == true)
                {
                    var smartCom = new SmartComMessageAdapter(_connector.TransactionIdGenerator)
                    {
                        Login    = Login.Text,
                        Password = Password.Password.To <SecureString>(),
                        Address  = Address.SelectedAddress,
                    };
                    _connector.Adapter.InnerAdapters[smartCom.ToChannel(_connector, "SmartCOM")] = 0;
                }

                if (PlazaCheckBox.IsChecked == true)
                {
                    var pool = new PlazaConnectionPool();

                    _connector.Adapter.InnerAdapters[new PlazaTransactionMessageAdapter(_connector.TransactionIdGenerator, pool)
                                                     {
                                                         ConnectionPoolSettings =
                                                         {
                                                             IsCGate = true,
                                                         }
                                                     }.ToChannel(_connector, "Plaza TS")] = 0;
                    _connector.Adapter.InnerAdapters[new PlazaStreamMessageAdapter(_connector.TransactionIdGenerator, pool)
                                                     {
                                                         ConnectionPoolSettings =
                                                         {
                                                             IsCGate = true,
                                                         }
                                                     }.ToChannel(_connector, "Plaza MD")] = 0;
                }

                if (_connector.Adapter.InnerAdapters.Count == 0)
                {
                    MessageBox.Show(this, LocalizedStrings.Str2971);
                    return;
                }

                _securityProvider = new FilterableSecurityProvider(_connector);

                _connector.ConnectionError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959));
                _connector.Connect();
            }
            else
            {
                Disconnect();
            }
        }