public void SetSecurity(string board, string seccode) { if (Seccode == seccode) { return; } TickDataHandler.UnsubscribeFromTicksEvent(TicksToCandles); TXmlConnector.SendNewCandles -= ProcessCandles; OhlcDataSeries.Clear(); XyDataSeries.Clear(); StockChartAnnotations = new AnnotationCollection(); Board = board; Seccode = seccode; _lastCandle = null; Task.Run(() => GetHistory()); BubbleSeries.Clear(); GetBubbleData(); var volumes = TickDataHandler.AddChartSubscription(Board, Seccode, TicksToCandles); HorizontalVolumesBuy = volumes[0]; HorizontalVolumesSell = volumes[1]; UpdateWindowInstrument(); DragStep = Application.Current.Dispatcher .Invoke(() => MainWindowViewModel.SecVm._secList .First(s => s.Board == Board && s.Seccode == Seccode).Minstep); GetOrders(); }
public void Initialize() { var tradeItems = TickDataHandler.AddAllTradesSubsribtion(Board, Seccode); tradeItems.CollectionChanged += TradeItemsOnCollectionChanged; Initialized = true; }
public void Uninitialize() { if (!Initialized) { return; } var tradeItems = TickDataHandler.AddAllTradesSubsribtion(Board, Seccode); tradeItems.CollectionChanged -= TradeItemsOnCollectionChanged; }
private static void RunRegression() { currentProcessIndex++; while (isRun) { //get the batch of jobs to be processed var jobs = _dataManager.GetPendingRegressionJobs(); foreach (var job in jobs) { Console.WriteLine("Staring to process regression job with id: {0}", job.RegressionJobId); //process the new job currentJob = job; m_RegressionEndFlagEvent.Reset(); runners = new List <TradingModelRunner>(); pnl = 0; m_JobStat = new RegressionJobStat(); m_JobStat.InstrumentCode = currentJob.InstrumentCode; m_JobStat.JobId = currentJob.RegressionJobId; //set up consumers tickDataSubscriber = new TickDataSubscriber(); tickDataHandler = new TickDataHandler(tickDataSubscriber); moneyManager = new MoneyManager.MoneyManager(100000, .01); barDataHandler = new BarDataHandler(tickDataHandler, job.RegressionBarInterval.Value); dailyPriceBarDataHandler = new DailyPriceBarDataHandler(job.InstrumentCode, job.RegressionStartDate.Value, job.RegressionEndDate.Value, tickDataHandler); dailyPriceBarDataHandler.Fill(); //creates new instance of runner StartTradeModelRunner(currentJobIndex, job.InstrumentCode, job.RegressionEndDate.Value); //start feeder historicalDataFeeder.Start(mktTickDataPublisher, new FeederProperties { InstrumentCode = job.InstrumentCode, StartDate = job.RegressionStartDate, EndDate = job.RegressionEndDate }, () => { }); currentProcessIndex++; //setting 30 minutes timeout m_RegressionEndFlagEvent.WaitOne(TimeSpan.FromMinutes(30)); } } //get regression from db and run them synchronously }
public void SetSecurity(string board, string seccode) { if (board == Board && seccode == Seccode) { return; } Board = board; Seccode = seccode; if (Board == "MCT") { Level2DataHandler.AddLevel2Subscribtion(Board, Seccode); } AllTrades = TickDataHandler.AddAllTradesSubsribtion(Board, Seccode); UpdateWindowInstrument(); }
//~BaseAlert() //{ // Debug.WriteLine(GetType() + " disposed"); //} //initializing enables an alert (subs to events) public void Initialize() { if (Board == "MCT") { Time = DateTime.UtcNow; } else { Time = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")); } var tradeItems = TickDataHandler.AddAllTradesSubsribtion(Board, Seccode); tradeItems.CollectionChanged += TradeItemsOnCollectionChanged; OnInitialize(); _initialized = true; }
public AllTradesSimpleViewModel(string board, string seccode, Window window, int id = 0) { Window = window; Closing = new Command(arg => WindowClosing()); Board = board; Seccode = seccode; if (Board == "MCT") { Level2DataHandler.AddLevel2Subscribtion(Board, Seccode); } AllTrades = TickDataHandler.AddAllTradesSubsribtion(Board, Seccode); Id = id; if (Id == 0) { SaveWindow(); } SubscribeToWindowEvents(); }
public TradingModelRunner( int reference, ITradeModel tradeModel, int jobId, string instrumentCode, DateTime regressionEndDate, BarDataHandler barDataHandler, TickDataHandler tickDataHandler, DailyPriceBarDataHandler dailyPriceBarDataHandler, BarCompleted callBackBarCompleted, EntrySignalReceived callBackEntrySignalReceived, TradePositionCloseReceived callBackTradePositionCloseReceived, RegressionJobFinished callbackRegressionJobFinished, TickDataUpdateReceived callbackTickDataUpdateReceived, IMoneyManager moneyManager) { m_ref = reference; m_TradingModel = tradeModel; m_BarDataHandler = barDataHandler; m_TickDataHandler = tickDataHandler; m_DailyBarDataHandler = dailyPriceBarDataHandler; m_jobId = jobId; m_instrumentCode = instrumentCode; m_RegressionEndDate = regressionEndDate; m_moneyMgr = moneyManager; CallbackOnEntrySignalReceived = callBackEntrySignalReceived; CallbackTradePositionCloseReceived = callBackTradePositionCloseReceived; CallbackRegressionJobFinished = callbackRegressionJobFinished; CallbackBarCompleted = callBackBarCompleted; CallbackTickDataUpdateReceived = callbackTickDataUpdateReceived; m_SignalState = TradingModelSignalState.TradeSignal; m_TradingModel.SetHandlers(barDataHandler, tickDataHandler, dailyPriceBarDataHandler, moneyManager); m_BarDataHandler.BarDataCreatedCompleted += OnBarDataCreatedCompleted; m_TickDataHandler.OnRealTimeTickDataUpdate += OnRealTimeTickDataUpdate; m_TickDataHandler.OnRealTimeTickDataDateChange += OnRealTimeTickDataDateChange; }
public SciChartViewModel(string board, string seccode, Window window, int id = 0, int daysBack = 0, string selectedTimeFrame = "5 mins", bool toggleTrendlines = true) { Board = board; Seccode = seccode; Window = window; Id = id; if (Id == 0) { SaveWindow(); } SubscribeToWindowEvents(); VolumesWidth = Width / 2; Closing = new Command(arg => WindowClosing()); ChangePeriod = new Command(arg => GetHistory()); PlaceOrderCommand = new Command(arg => PlaceOrder()); PlaceStopOrderCommand = new Command(arg => PlaceStopOrder()); CopyCommand = new Command(arg => Copy()); AddToWatchlistCommand = new Command(AddToWatchList); PriceAlertCommand = new Command(arg => AddPriceAlert()); _timer = new Timer(GetBubbleData, null, 1000, 2000); var volumes = TickDataHandler.AddChartSubscription(Board, Seccode, TicksToCandles); HorizontalVolumesBuy = volumes[0]; HorizontalVolumesSell = volumes[1]; DaysBack = daysBack; SelectedTimeframe = selectedTimeFrame; ToggleTrendlines = toggleTrendlines; //_stockChartAnnotations = new AnnotationCollection(); //sub to stoporders manager OrderManager.NotifyStoporderAdded += NewStoporder; OrderManager.NotifyStoporderDeleted += DeleteStoporder; OrderManager.NotifyOrderAdded += NewOrder; OrderManager.NotifyOrderDeleted += DeleteOrder; //set dragstep DragStep = Application.Current.Dispatcher .Invoke(() => MainWindowViewModel.SecVm._secList .First(s => s.Board == Board && s.Seccode == Seccode).Minstep); GetOrders(); }
private void XmlConnector_OnSendNewStatus(string data) { var status = (ServerStatus)_statusXml.Deserialize(new StringReader(data)); if (status.Recover == "true") { Status = "Status: Reconnecting..."; IsReconnecting = true; Animate = false; return; } if (status.Connected != "true") { if (IsShuttingDown) { //TXmlConnector.ConnectorUnInitialize(); //Application.Current.Shutdown(); return; } MenuItemConnectCommand = new Command(arg => Show_LoginForm()); //set command to open LoginForm MenuItemConnectText = "Connect"; //change text Status = "Status: Disconnected"; //change status string //_dialogCoordinator.ShowMessageAsync(this, "Connection status", "Connection lost"); //disable menu buttons InfoEnabled = false; TradeEnabled = false; Animate = false; SecVm = new SecuritiesViewModel(); ClientTradesViewModel = new ClientTradesViewModel(); ClientOrdersViewModel = new ClientOrdersViewModel(); //close windows Application.Current.Dispatcher.Invoke(() => { foreach (Window window in Application.Current.Windows) { if (window.GetType() != typeof(MainWindow) && window.GetType().Namespace.Split('.')[0] != "Microsoft") { window.Close(); } } }); //clear clients ClientsViewModel.Clients.Clear(); //clear subs Level2DataHandler.UnsubAll(); TickDataHandler.UnsubAll(); } else { MenuItemConnectCommand = new Command(arg => Disconnect()); //set command to disconnect Status = "Status: Connected"; //change text MenuItemConnectText = "Disconnect"; //change status string //enable menu buttons InfoEnabled = true; TradeEnabled = true; Animate = true; //Application.Current.Dispatcher.Invoke(() => { // if (!CheckIfWindowIsOpened(typeof(Clients))) // { // _clientsViewModel.Timer.Start(); // new Clients { DataContext = _clientsViewModel }.Show(); // } // }); //if reconnecting, do not restore windows if (!IsReconnecting) { OpenSavedWindows(); } ClientsViewModel.GetInfo(); IsReconnecting = false; //reconnected at this point } IsConnected = status.Connected == "true"; MenuItemConnectEnabled = true; //enable it after status change IsActive = false; }
private void InitializeWatchlist(string name) { SecList = new ObservableCollection <Security>(); Name = name; var xml = new XmlSerializer(typeof(List <Security>)); var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Inside MMA\\settings\\watchlists\\" + name; WatchListPath = path; List <Security> list = new List <Security>(); try { using ( var file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { list = (List <Security>)xml.Deserialize(file); } } catch { } string error = string.Empty; foreach (var security in list) { if (Securities.FirstOrDefault(s => s.Seccode == security.Seccode) != null) { SecList.Add(security); } else { error += security.Seccode + ","; } } if (error != string.Empty) { Task.Run(() => { SpinWait.SpinUntil(() => Dialog != null); Dialog.ShowMessageAsync(this, "Warning", "The following instruments were not found: " + error.TrimEnd(',')); var serializer = new XmlSerializer(typeof(List <Security>)); using (var file = File.Open(WatchListPath, FileMode.Open, FileAccess.ReadWrite)) { var data = (List <Security>)serializer.Deserialize(file); foreach (var s in error.Split(',')) { data.RemoveWhere(sec => sec.Seccode == s); } file.SetLength(0); serializer.Serialize(file, data); file.Close(); } }); } //Task.Run(() => ////{ //// if (_firstBoot) //// Thread.Sleep(3000); // TickDataHandler.WatchlistSub(SecList.ToList()); //}); TickDataHandler.WatchlistSub(SecList.ToList()); }