예제 #1
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
 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();
            }
        }
예제 #6
0
        /// <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);
            }
        }