public void Execute() { try { // podpięcie zdarzenia zmiany notowań Bossa.OnUpdate += HandleBossaUpdate; // włączenie odbioru notowań dla wybranych instrumentów // (wystarczy samo odwołanie się do konkretnego obiektu 'Bossa.Instruments[...]') Bossa.Instruments["KGHM"].UpdatesEnabled = true; Bossa.Instruments["WIG20"].UpdatesEnabled = true; Bossa.Instruments["FW20M12"].UpdatesEnabled = true; // własnoręczne przygotowanie obiektu do komunikacji z NOL'em... var client = new NolClient(); // i podpięcie się bezpośrednio do jednego z jego wewnętrznych zdarzeń client.SessionStatusMsgEvent += HandleSessionStatusMsgEvent; // uruchomienie połączenia (to zamiast standardowego "ConnectNOL3") Bossa.Connect(client); // w tle odbieramy zdarzenia i wyświetlamy bieżące notowania Console.WriteLine("Press any key... to exit"); Console.ReadKey(true); } finally { Bossa.OnUpdate -= HandleBossaUpdate; Bossa.Disconnect(); Bossa.Clear(); } }
public void Execute() { // połączenie z NOLem, zalogowanie użytkownika Bossa.ConnectNOL3(); try { // podpięcie zdarzenia zmiany notowań Bossa.OnUpdate += HandleBossaUpdate; // włączenie odbioru notowań dla wybranych instrumentów // (wystarczy samo odwołanie się do konkretnego obiektu 'Bossa.Instruments[...]') Bossa.Instruments["KGHM"].UpdatesEnabled = true; Bossa.Instruments["WIG20"].UpdatesEnabled = true; Bossa.Instruments["FW20M12"].UpdatesEnabled = true; // w tle odbieramy zdarzenia i wyświetlamy notowania... na początek ze szczegółami... Console.WriteLine("Press any key... to disable OHLC details (Esc - exit)"); if (Console.ReadKey(true).Key == ConsoleKey.Escape) { return; } showStats = false; // wystarczy już tych "statystyk" sesji, bez tego będzie czytelniej // w tle odbieramy zdarzenia i wyświetlamy bieżące notowania Console.WriteLine("Press any key... to exit"); Console.ReadKey(true); } finally { Bossa.OnUpdate -= HandleBossaUpdate; Bossa.Disconnect(); Bossa.Clear(); } }
public void Execute() { // połączenie z NOLem, zalogowanie użytkownika Bossa.ConnectNOL3(); try { // tu powinniśmy chwilę zaczekać, aż NOL przyśle nam "wyciąg" Console.WriteLine("Press any key... to read account info"); Console.ReadKey(true); Console.WriteLine(); // wyświetlenie informacji o dostępnych rachunkach foreach (var account in Bossa.Accounts) { Trace.WriteLine(string.Format("Account: {0}", account.Number)); Trace.WriteLine(string.Format("- porfolio value: {0}", account.PortfolioValue)); Trace.WriteLine(string.Format("- deposit blocked: {0}", account.DepositBlocked)); Trace.WriteLine(string.Format("- available funds: {0}", account.AvailableFunds)); Trace.WriteLine(string.Format("- available cash: {0}", account.AvailableCash)); // spis papierów wartościowych na danym rachunku if (account.Papers.Count > 0) { Trace.WriteLine("- papers: "); foreach (var paper in account.Papers) { Trace.WriteLine(string.Format(" {0,5} x {1}", paper.Quantity, paper.Instrument)); } } // spis aktywnych zleceń na tym rachunku if (account.Orders.Count > 0) { Trace.WriteLine("- orders: "); foreach (var order in account.Orders) { Trace.WriteLine(string.Format(" {0}: {1} {2} x {3} - {4}", order.Instrument, order.Side, order.Quantity, order.Price, order.StatusReport)); } } Trace.WriteLine(""); } Console.WriteLine("Press any key... to exit"); Console.ReadKey(true); } finally { Bossa.Disconnect(); Bossa.Clear(); } }
public void Execute() { // połączenie z NOLem, zalogowanie użytkownika Bossa.ConnectNOL3(); try { // podpięcie zdarzenia, po którym będziemy mogli odczytać nowy stan rachunku Bossa.OnUpdate += HandleBossaUpdate; // w tle odbieramy zdarzenia i wyświetlamy informacje o zmienionym stanie rachunku Console.WriteLine("Press any key... to exit"); Console.ReadKey(true); } finally { Bossa.OnUpdate -= HandleBossaUpdate; Bossa.Disconnect(); Bossa.Clear(); } }