//private static Timer _timer2 = // new Timer(CheckSubs, null, 1000, 1000); //private static void CheckSubs(object state) //{ // var brokenSubs = Level2List.Where(x => x.Level2Data.Count == 0).ToList(); // foreach (var sub in brokenSubs) // { // TXmlConnector.ConnectorSendCommand( // ConnectorCommands.SubUnsubCommand("subscribe", "quotes", sub.Board, sub.Seccode)); // } //} private static void ClearSubs(object state) { var windows = _dispatcher.Invoke(() => Application.Current.Windows); List <IAnchor> list = new List <IAnchor>(); foreach (Window window in windows) { var context = _dispatcher.Invoke(() => window.DataContext); if (context is IAnchor) { list.Add((IAnchor)context); } } Level2Subscription[] arr = new Level2Subscription[Level2List.Count]; Level2List.CopyTo(arr, 0); foreach (var level2Subscription in arr) { var sub = list.Count(c => c.Board == level2Subscription.Board && c.Seccode == level2Subscription.Seccode); if (sub == 0) { TXmlConnector.ConnectorSendCommand( ConnectorCommands.SubUnsubCommand("unsubscribe", "quotes", level2Subscription.Board, level2Subscription.Seccode)); var subscription = level2Subscription; Level2List.TryTake(out subscription); } } }
private void ChartWindow_OnClosing(object sender, CancelEventArgs e) { var cmd = ConnectorCommands.SubUnbubTics("unsubscribe_ticks", _board, _seccode, "1", "true"); TXmlConnector.ConnectorSendCommand(cmd); TXmlConnector.SendNewTicks -= TicksToCandles; }
public void GetInfo() { string cmd; if (!MainWindowViewModel.IsConnected || CurrentClient == null) { return; } //if mct - request mct portfolio if (ShowPortfolioMCT) { cmd = $"<command id=\"get_portfolio_mct\" client=\"{CurrentClient.Id}\" />"; TXmlConnector.ConnectorSendCommand(cmd); } else { cmd = $"<command id=\"get_united_portfolio\" client=\"{CurrentClient.Id}\" />"; var res = TXmlConnector.ConnectorSendCommand(cmd); var orderResult = (OrderResult) new XmlSerializer(typeof(OrderResult)).Deserialize(new StringReader(res)); //check if getting united portfolio is possible if (orderResult.Success == "false") { //if impossible - get mct portfolio for this session ShowPortfolioMCT = true; cmd = $"<command id=\"get_portfolio_mct\" client=\"{CurrentClient.Id}\" />"; TXmlConnector.ConnectorSendCommand(cmd); } } }
//History request private void GetHistory() { UpdateWindowArgs(new ChartArgs(SelectedTimeframe, DaysBack, ToggleTrendlines)); int count = 0; //Max candles per day for each period switch (_periodId) { case 1: count = 600; break; case 2: count = 120; break; case 3: count = 40; break; case 4: count = 10; break; case 5: count = 1; break; } TXmlConnector.ConnectorSendCommand( $"<command id=\"gethistorydata\"><security><board>{Board}</board><seccode>{Seccode}</seccode></security><period>{_periodId}</period><count>{count + _daysBack * count}</count><reset>true</reset></command>"); TXmlConnector.SendNewCandles += ProcessCandles; }
//private static Timer _timer2 = new Timer(CheckSubs, null, 1000, 1000); //private static void CheckSubs(object state) //{ // var brokenSubs = TickList.Where(x => x.Ticks.Count == 0).ToList(); // foreach (var sub in brokenSubs) // { // sub.Tradeno = 1; // } // TXmlConnector.ConnectorSendCommand(ReturnTickSubsXml()); // foreach (var sub in brokenSubs) // { // sub.Tradeno = 0; // } //} private static void ClearSubs(object state) { var windows = _dispatcher.Invoke(() => Application.Current.Windows); List <IAnchor> list = new List <IAnchor>(); foreach (Window window in windows) { var context = _dispatcher.Invoke(() => window.DataContext); if (context is IAnchor) { list.Add((IAnchor)context); } } TickSubscription[] arr = new TickSubscription[TickList.Count]; TickList.CopyTo(arr, 0); foreach (var tickSubscription in arr) { var sub = list.Count(c => c.Board == tickSubscription.Board && c.Seccode == tickSubscription.Seccode); if (sub == 0) { var subscription = tickSubscription; TickList.TryTake(out subscription); TXmlConnector.ConnectorSendCommand(ReturnTickSubsXml()); } } }
private void CancelOrderAction() { var cmd = $"<command id=\"cancelorder\"><transactionid>{SelectedOrder.Transactionid}</transactionid></command>"; TXmlConnector.ConnectorSendCommand($"<command id=\"cancelorder\"><transactionid>{SelectedOrder.Transactionid}</transactionid></command>"); }
//Closing event. Uninitialize dll, disconnect, close all windows. public void OnWindowClosing(object sender, CancelEventArgs e) { //if (Status == "Status: Disconnected") //{ // // return; //} //e.Cancel = true;if (_isConnected) IsShuttingDown = true; Connection.Stop(new TimeSpan(0, 0, 0, 100)); SecVm = null; foreach (Window window in Application.Current.Windows) { if (window.GetType() != typeof(MainWindow) && window.GetType().Namespace.Split('.')[0] != "Microsoft") { //var context = window.DataContext as IWindow; //if (context != null) // context.IsManuallyClosed = false if (window is IRememberPlacement) { ((IRememberPlacement)window).IsManuallyClosed = false; } window.Close(); } } TXmlConnector.ConnectorSendCommand("<command id=\"disconnect\"/>"); Application.Current.Shutdown(); //TXmlConnector.ConnectorUnInitialize(); }
private void SendOrders() { Task.Run(() => { var result = string.Empty; foreach (var order in Orders) { if (!order.Mkt) { result = TXmlConnector.ConnectorSendCommand( $"<command id=\"neworder\"><security><board>{order.Board}</board><seccode>{order.Seccode}</seccode></security><client>{order.Client}</client><union>{order.Union}</union><price>{order.Price}</price><quantity>{order.Size}</quantity><buysell>{order.BuySell}</buysell></command>"); } else { result = TXmlConnector.ConnectorSendCommand("<command id=\"neworder\"><security><board>" + order.Board + "</board><seccode>" + order.Seccode + "</seccode></security><client>" + order.Client + "</client><union>" + order.Union + "</union><quantity>" + order.Size + "</quantity><buysell>" + order.BuySell + "</buysell><bymarket/>" + "</command>"); } } }); SaveToFile(); }
private void GetHistory() { int count = 0; switch (_periodId) { case 1: count = 600; break; case 2: count = 120; break; case 3: count = 40; break; case 4: count = 10; break; } TXmlConnector.ConnectorSendCommand( $"<command id=\"gethistorydata\"><security><board>{_board}</board><seccode>{_seccode}</seccode></security><period>{_periodId}</period><count>{count + _daysBack * count}</count><reset>true</reset></command>"); TXmlConnector.SendNewCandles += ProcessCandles; }
public AllTradesCandlestickViewModel(string board, string seccode, List <DataForCandlestick> data) { Closing = new Command(arg => WindowClosing()); Title = $"Size selector {seccode}: {string.Join(", ", data.Select(item => item.Quantity))}"; Seccode = seccode; TXmlConnector.ConnectorSendCommand( $"<command id=\"gethistorydata\"><security><board>{board}</board><seccode>{seccode}</seccode></security><period>2</period><count>120</count><reset>true</reset></command>"); TXmlConnector.SendNewCandles += ProcessCandles; foreach (var dataForCandlestick in data) { foreach (var tradeItem in dataForCandlestick.Data) { if (tradeItem.Buysell == "B") { BuySeries.Append(DateTime.Parse(tradeItem.Time), tradeItem.Price); } else { SellSeries.Append(DateTime.Parse(tradeItem.Time), tradeItem.Price); } } } }
public UnitedPortfolioViewModel() { ConfirmCommand = new Command(arg => Refresh()); var cmd = $"<command id=\"get_united_portfolio\" client=\"{ClientInfo.Id}\" />"; TXmlConnector.SendNewUnitedPortfolio += XmlConnector_OnSendUnitesPortfolio; TXmlConnector.ConnectorSendCommand(cmd); }
private void DetailsEvent(object sender, DataGridRowDetailsEventArgs e) { var news = (Inside_MMA.Models.News)e.Row.Item; //if (news.NewsBody == null) TXmlConnector.ConnectorSendCommand( $"<command id=\"get_news_body\" news_id=\"{news.Id}\"/>"); }
public void OnWindowClosing(object sender, CancelEventArgs e) { var vm = ((VisiFireChart)sender).DataContext as VisiFireChartViewModel; _subscriptions.RemoveAll(item => item.Board == vm._board && item.Seccode == vm._seccode); TXmlConnector.ConnectorSendCommand(ConnectorCommands.SubscribeTicks(SecurityForTicks.ReturnSecuritiesXml(_subscriptions))); TXmlConnector.SendNewTicks -= vm.TicksToCandles; }
public static void UnsubAll() { foreach (var subscription in Level2List) { TXmlConnector.ConnectorSendCommand( ConnectorCommands.SubUnsubCommand("unsubscribe", "quotes", subscription.Board, subscription.Seccode)); var level2Subscription = subscription; Level2List.TryTake(out level2Subscription); } }
public static void RefreshSub(string board, string seccode) { Task.Run(() => { var sub = TickList.FirstOrDefault(x => x.Board == board && x.Seccode == seccode); _dispatcher.Invoke(() => sub.TradeItems.Clear()); sub.Sorted = false; sub.Tradeno = 1; TXmlConnector.ConnectorSendCommand(ReturnTickSubsXml()); sub.Tradeno = 0; }); }
// отключение коннектора от сервера Транзак public static void Transaq_Disconnect() { DisconnectingReflect(); string cmd = "<command id=\"disconnect\"/>"; log.WriteLog("SendCommand: " + cmd); TXmlConnector.statusDisconnected.Reset(); string res = TXmlConnector.ConnectorSendCommand(cmd); log.WriteLog("ServerReply: " + res); }
private async void PlaceOrder(object param) { var client = ClientSelector.GetClient(Board); var usecredit = UseCredit ? "<usecredit/>" : ""; var res1 = TXmlConnector.ConnectorSendCommand("<command id=\"neworder\"><security><board>" + Board + "</board><seccode>" + Seccode + "</seccode></security><client>" + client[0] + "</client>" + "<union>" + client[1] + "</union>" + "<quantity>" + Size + "</quantity>" + "<buysell>" + param + "</buysell>" + "<bymarket/>" + usecredit + "</command>"); OpenTradingWindows(); var res2 = string.Empty; var orderResult1 = (OrderResult)_serializer.Deserialize(new StringReader(res1)); if (StopType == "Stop spread") { var direction = param.ToString() == "B" ? "S" : "B"; var activationPrice = direction == "B" ? _bestBuy + StoporderSpread : _bestSell - StoporderSpread; res2 = TXmlConnector.ConnectorSendCommand( $"<command id=\"newstoporder\"><security><board>{Board}</board><seccode>{Seccode}</seccode></security><client>{client[0]}</client><union>{client[1]}</union><buysell>{direction}</buysell><stoploss><activationprice>{activationPrice}</activationprice><bymarket/><quantity>{Size}</quantity>{usecredit}</stoploss></command>"); } if (StopType == "Manual stop") { var direction = param.ToString() == "B" ? "S" : "B"; var activationPrice = direction == "B" ? BuyPrice : SellPrice; res2 = TXmlConnector.ConnectorSendCommand( $"<command id=\"newstoporder\"><security><board>{Board}</board><seccode>{Seccode}</seccode></security><client>{client[0]}</client><union>{client[1]}</union><buysell>{direction}</buysell><stoploss><activationprice>{activationPrice}</activationprice><bymarket/><quantity>{Size}</quantity>{usecredit}</stoploss></command>"); } if (orderResult1.Success == "true") { await Dialog.ShowMessageAsync(this, "Message", $"Success. Transaction ID - {orderResult1.TransactionId}"); } else { await Dialog.ShowMessageAsync(this, "Warning", orderResult1.Message); } if (res2.IsNullOrEmpty()) { return; } var orderResult2 = (OrderResult)_serializer.Deserialize(new StringReader(res2)); if (orderResult2.Success == "true") { await Dialog.ShowMessageAsync(this, "Message", $"Success. Transaction ID - {orderResult2.TransactionId}"); } else { await Dialog.ShowMessageAsync(this, "Warning", orderResult2.Message); } }
public static void EditStoporder(string id, double price) { var editedStoporder = _stoporders.First(s => s.Transactionid == id); TXmlConnector.ConnectorSendCommand( $"<command id=\"cancelstoporder\"><transactionid>{editedStoporder.Transactionid}</transactionid></command>"); var res = TXmlConnector.ConnectorSendCommand(ConnectorCommands.NewStopLoss(editedStoporder.Board, editedStoporder.Seccode, editedStoporder.Client, ClientSelector.GetClient(editedStoporder.Board)[1], editedStoporder.Buysell, price.ToString(), editedStoporder.Stoploss[0].Orderprice ?? "", editedStoporder.Stoploss[0].Quantity, editedStoporder.Stoploss[0].IsByMarket, editedStoporder.Stoploss[0].Usecredit != "no")); }
private Candle[] _candleArray; // это массив свечек public ChartWindow(string board, string seccode, int timeframe) //окно загружается. { _board = board; _seccode = seccode; _timeframe = timeframe; TXmlConnector.SendNewTicks += TicksToCandles; var cmd = ConnectorCommands.SubUnbubTics("subscribe_ticks", board, seccode, "1", "true"); TXmlConnector.ConnectorSendCommand(cmd); InitializeComponent(); // вызываем метод для создания чарта CreateChart(); }
public static void EditOrder(string id, double price) { var editedOrder = _orders.First(o => o.Transactionid == id); var useCredit = editedOrder.Board != "FUT" ? "<usecredit/>" : ""; TXmlConnector.ConnectorSendCommand( $"<command id=\"cancelorder\"><transactionid>{id}</transactionid></command>"); var res = TXmlConnector.ConnectorSendCommand("<command id=\"neworder\"><security><board>" + editedOrder.Board + "</board><seccode>" + editedOrder.Seccode + "</seccode></security><client>" + editedOrder.Client + "</client><union>" + editedOrder.Union + "</union><price>" + price + "</price><quantity>" + editedOrder.Quantity + "</quantity><buysell>" + editedOrder.Buysell + "</buysell>" + useCredit + "</command>"); }
private void Refresh() { //var cmd = IsClientChecked // ? $"<command id=\"get_united_portfolio\" client=\"{UnionOrClient}\" />" // : $"<command id=\"get_united_portfolio\" union=\"{UnionOrClient}\" />"; UnitedPortfolioDataGridRows.Clear(); UnitedPortfolioSecurityDataGridRowses.Clear(); AssetDataGridRowses.Clear(); MoneyDataGridRowses.Clear(); ValuePartDataGridRowses.Clear(); TXmlConnector.SendNewUnitedPortfolio += XmlConnector_OnSendUnitesPortfolio; TXmlConnector.ConnectorSendCommand($"<command id=\"get_united_portfolio\" client=\"{ClientInfo.Id}\" />"); }
public void CancelAllStopordersMethod() { Task.Run(() => { var orders = ClientStoporders.ToArray(); foreach (var order in orders) { if (order.Status != "matched") { TXmlConnector.ConnectorSendCommand( $"<command id=\"cancelstoporder\"><transactionid>{order.Transactionid}</transactionid></command>"); } Thread.Sleep(250); } }); }
private static void AddTick(string board, string seccode) { var sub = TickList.FirstOrDefault(x => x.Board == board && x.Seccode == seccode); if (sub == null) { sub = new TickSubscription { Board = board, Seccode = seccode, Tradeno = 1 }; TickList.Add(sub); TXmlConnector.ConnectorSendCommand(ReturnTickSubsXml()); sub.Tradeno = 0; } }
public static void WatchlistSub(List <Security> list) { foreach (var sec in list) { if (!TickList.Select(t => t.Seccode).Contains(sec.Seccode)) { TickList.Add(new TickSubscription { Board = sec.Board, Seccode = sec.Seccode, Tradeno = 1 }); } } TXmlConnector.ConnectorSendCommand(ReturnTickSubsXml()); foreach (var subscription in TickList) { subscription.Tradeno = 0; } }
public static ObservableCollection <Level2Item> AddLevel2Subscribtion(string board, string seccode) { var subscription = Level2List.FirstOrDefault(x => x.Board == board && x.Seccode == seccode); if (subscription == null) { subscription = new Level2Subscription { Board = board, Seccode = seccode }; Level2List.Add(subscription); TXmlConnector.ConnectorSendCommand( ConnectorCommands.SubUnsubCommand("subscribe", "quotes", subscription.Board, subscription.Seccode)); } return(subscription.Level2Data); }
public VisiFireChartViewModel(string board, string seccode) { _board = board; _seccode = seccode; TXmlConnector.SendNewTicks += TicksToCandles; var sub = new SecurityForTicks { Board = board, Seccode = seccode, Tradeno = "1" }; _subscriptions.Add(new SecurityForTicks { Board = board, Seccode = seccode, Tradeno = "1" }); var cmd = ConnectorCommands.SubscribeTicks(SecurityForTicks.ReturnSecuritiesXml(_subscriptions)); TXmlConnector.ConnectorSendCommand(cmd); _subscriptions.Last().Tradeno = "0"; }
private async void Confirm_OnClick(object sender, RoutedEventArgs e) { var result = TXmlConnector.ConnectorSendCommand( $"<command id=\"change_pass\" oldpass=\"{OldPass.Password}\" newpass=\"{NewPass.Password}\"/>"); if (result == "<result success=\"true\"/>") { await this.ShowMessageAsync("Result", "Password successfully changed"); Close(); } else { await this.ShowMessageAsync("Result", result); } }
public async void ShiftLeftClickStopOrder() { if (SelectedData == null) { return; } var price = SelectedData.Price; var buysell = SelectedData.BuySell == "buy" ? "S" : "B"; var clientInfo = ClientSelector.GetClient(Board); var clientId = clientInfo == null ? "-" : clientInfo[0]; var size = Level2Settings.Default.Size; var res = await Dialog.ShowMessageAsync(this, "Stoporder", $"{Board} {Seccode}\r\nActivation price: {price}\r\nSize: {size}\r\nType: {buysell}\r\nClient: {clientId}", MessageDialogStyle.AffirmativeAndNegative); if (res == MessageDialogResult.Negative) { return; } var str = TXmlConnector.ConnectorSendCommand($"<command id=\"newstoporder\"><security><board>{Board}</board><seccode>{Seccode}</seccode></security><client>{clientInfo[0]}</client><union>{clientInfo[1]}</union><buysell>{buysell}</buysell><stoploss><activationprice>{price}</activationprice><bymarket/><quantity>{size}</quantity>{UseCreditString}</stoploss></command>"); }
/////////////////////////////////////////////////////////////////////// /// TRANSAQ METHODS /////////////////////////////////////////////////////////////////////// public static void Transaq_Connect() { ConnectingReflect(); // формирование текста команды string cmd = "<command id=\"connect\">"; cmd = cmd + "<login>" + sLogin + "</login>"; cmd = cmd + "<password>" + sPassword + "</password>"; cmd = cmd + "<host>" + sTransaqServerIP + "</host>"; cmd = cmd + "<port>" + sTransaqServerPort + "</port>"; cmd = cmd + "<rqdelay>100</rqdelay>"; cmd = cmd + "<session_timeout>" + session_timeout.ToString() + "</session_timeout> "; cmd = cmd + "<request_timeout>" + request_timeout.ToString() + "</request_timeout>"; cmd = cmd + "</command>"; // отправка команды log.WriteLog("Transaq_Connect:::ServerRequest " + cmd); TXmlConnector.statusDisconnected.Reset(); string res = TXmlConnector.ConnectorSendCommand(cmd); log.WriteLog("Transaq_Connect:::ServerReply " + res); }
static void Main(string[] args) { loadSettings(); loadEventHandlers(); log.StartLogging(sAppDir + "log" + DateTime.Now.ToString("yyMMdd") + ".txt"); TXmlConnector.statusTimeout = session_timeout * 1000; TXmlConnector.ConnectorSetCallback(OnNewFormData, OnNewSecurity, OnNewTimeframe, OnNewStatus); TXmlConnector.FormReady = true; if (TXmlConnector.ConnectorInitialize(sLogPath, 3)) { TXmlConnector.statusDisconnected.Set(); } OportunityMonitor.init(); OportunityMonitor.PositionPublisherCallback(PositionPublisherCall); MyTcpServer tcpServer = new MyTcpServer(); tcpServer.start(); }