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() { 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 { // 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(); } }
private void DisconnectBtn_Click(object sender, EventArgs e) { try { if (!Bossa.Connected) { Debug.WriteLine("\nNot connected!"); return; } Bossa.Disconnect(); } catch (Exception ex) { ex.PrintError(); } }
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(); } }
/// <summary> /// Główna funkcja programu. /// </summary> /// <param name="args"> /// lista przekazanych parametrów: podawane po spacji symbole kolejnych intrumentów /// </param> public static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Nie podano parametrów, włączam przykładową listę instrumentów..."); args = new[] { "WIG20", "KGHM", "FW20M12" }; } try { // podłączenie naszego handlera pod zdarzenie aktualizacji danych Bossa.OnUpdate += Bossa_OnUpdate; // aktywacja subskrypcji dla wybranych instrumentów // (praktycznie wystarczy dowolne odwołanie do danego symbolu na liście Instruments[...], // automatycznie uwzględnia również wszelkie instrumenty znajdujące się już na rachunku) foreach (var symbol in args) { Console.WriteLine("dodaję: {0}", symbol); Bossa.Instruments[symbol].UpdatesEnabled = true; } Console.WriteLine(); // uruchomienie połączenia z NOL'em Bossa.ConnectNOL3(); // czekamy na naciśnięcie dowolnego klawisza (w tle będzie odpalał Bossa_OnUpdate) Console.ReadKey(true); // zakończenie połączenia z NOL'em Bossa.Disconnect(); } catch (Exception e) { // przechwycenie ew. błędów (np. komunikacji z NOL'em) - wyświetlenie komunikatu Console.WriteLine(e.Message); } }