//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); } } }
public async void CloseBalanceMethod() { MessageDialogResult result = await _dialogCoordinator.ShowMessageAsync(this, "Are you sure?", "Are you sure you want to close all positions?", MessageDialogStyle.AffirmativeAndNegative); if (result == MessageDialogResult.Affirmative) { foreach (var row in UnitedPortfolioSecurityDataGridRowses) { string res; var security = MainWindowViewModel.SecVm.SecList .First(x => x.Secid == row.Secid); var client = ClientSelector.GetClient(security.Board); if (row.Balance > 0) { res = ConnectorCommands.PlaceMktOrder(security.Board, security.Seccode, client[0], client[1], row.Balance / security.Lotsize, "S", false); } if (row.Balance < 0) { res = ConnectorCommands.PlaceMktOrder(security.Board, security.Seccode, client[0], client[1], Math.Abs(row.Balance / security.Lotsize), "B", false); } } } }
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 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 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 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 void Closing() { TXmlConnector.SendNewQuotes -= XmlConnector_OnSendNewQuotes; TXmlConnector.SendNewAllTrades -= XmlConnector_OnSendNewTrades; var atsub = new Security { Board = Board, Seccode = Seccode }; AllTradesSubs.Remove(atsub); if (!AllTradesSubs.Contains(atsub)) { ConnectorCommands.SubUnsubCommand("unsubscribe", "alltrades", Board, Seccode); } UnsubscribeFromWindowEvents(); CloseWindow(); GC.Collect(); }
public LogBookViewModel(string board, string seccode, Window window, int id = 0) { Window = window; ClosingCommand = new Command(arg => Closing()); ResetCommand = new Command(arg => Reset()); Board = board; Seccode = seccode; _level2Items = Level2DataHandler.AddLevel2Subscribtion(Board, Seccode); TXmlConnector.SendNewQuotes += XmlConnector_OnSendNewQuotes; Level2Subs.Add(new Security { Board = Board, Seccode = Seccode }); TXmlConnector.ConnectorSendCommand( ConnectorCommands.SubUnsubCommand("subscribe", "alltrades", Board, Seccode)); TXmlConnector.SendNewAllTrades += XmlConnector_OnSendNewTrades; AllTradesSubs.Add(new Security { Board = Board, Seccode = Seccode }); Id = id; if (Id == 0) { SaveWindow(); } SubscribeToWindowEvents(); var args = GetWindowArgs() as LogBookArgs; if (args == null) { UpdateWindowArgs(new LogBookArgs { Alert = false, Ratio = 2, Size = 1, TriggerDelta = 0.5 }); return; } Coef = args.Ratio; Size = args.Size; IsAlerting = args.Alert; TriggerDelta = args.TriggerDelta; }