Exemplo n.º 1
0
        public IBApp.IBAppClasses.PlaceOrder placeOrder;         // PlaceOrder class variable

        // Linking system events and handlers
        public Form1()
        {
            InitializeComponent();             // Form components init

            // Instances
            ibClient        = new IBClient(signal);
            contractManager = new ContractManager(ibClient, fundamentalsOutput, contractDetailsGrid);
            contractSearch  = new IBAppClasses.ContractSearch(ibClient);

            // Events
            ibClient.Error            += ibClient_Error;
            ibClient.NextValidId      += ibClient_NextValidId;                                                                          // For log messages
            ibClient.ContractDetails  += (reqId, contractDetails) => HandleMessage(new ContractDetailsMessage(reqId, contractDetails)); //  Request contract details https://interactivebrokers.github.io/tws-api/contract_details.html#gsc.tab=0
            ibClient.ConnectionClosed += ibClient_ConnectionClosed;                                                                     // Update UI when disconnect button is clicked

            // Order
            placeOrder = new IBAppClasses.PlaceOrder(ibClient);             // New instance
        }
Exemplo n.º 2
0
        public Form1()
        {
            InitializeComponent();

            ChromeDriver.Navigate().GoToUrl("https://profit.ly/profiding");             // Go to URL file:///D:/1/profitly.html https://profit.ly/profiding

            // listView1 setup
            listView1.View      = View.Details;
            listView1.GridLines = true;             // Horizoltal lines
            listView1.Columns.Add("Time:");
            listView1.Columns[0].Width = 60;
            listView1.Columns.Add("Source:", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Message:");
            listView1.Columns[2].Width = 400;

            // listView2 setup
            listView2.View      = View.Details;
            listView2.GridLines = true;             // Horizoltal lines
            listView2.Columns.Add("Time:");
            listView2.Columns[0].Width = 60;
            listView2.Columns.Add("Source:", -2, HorizontalAlignment.Left);
            listView2.Columns.Add("Message:");
            listView2.Columns[2].Width = 400;

            // listView3 setup
            listView3.View      = View.Details;
            listView3.GridLines = true;             // Horizoltal lines
            listView3.Columns.Add("Time:");
            listView3.Columns[0].Width = 60;
            listView3.Columns.Add("Message:");
            listView3.Columns[1].Width = 200;

            logz = new ListViewLogging();


            // Broker connector
            ibClient = new IBClient(signal);
            //contractManager = new ContractManager(ibClient, fundamentalsOutput, contractDetailsGrid);
            contractSearch = new IBApp.IBAppClasses.ContractSearch(ibClient);             // The class which search for the given contract
            placeOrder     = new IBApp.IBAppClasses.PlaceOrder(ibClient);

            // Event handlers
            ibClient.Error            += ibClient_Error;
            ibClient.ContractDetails  += (reqId, contractDetails) => HandleMessage(new ContractDetailsMessage(reqId, contractDetails)); //  Request contract details https://interactivebrokers.github.io/tws-api/contract_details.html#gsc.tab=0
            ibClient.ConnectionClosed += ibClient_ConnectionClosed;                                                                     // Update UI when disconnect button is clicked

            // Order events
            ibClient.NextValidId += ibClient_NextValidId;             // Receives next valid order id. Will be invoked automatically upon successfull API client connection. Used for sending connection status

            ibClient.OrderStatus += (orderId, status, filled, remaining, avgFillPrice, permId, parentId, lastFillPrice, clientId, whyHeld) =>
                                    HandleMessage(new OrderStatusMessage(orderId, status, filled, remaining, avgFillPrice, permId, parentId, lastFillPrice, clientId, whyHeld));
            ibClient.OpenOrder    += (orderId, contract, order, orderState) => HandleMessage(new OpenOrderMessage(orderId, contract, order, orderState));
            ibClient.OpenOrderEnd += () => HandleMessage(new OpenOrderEndMessage());

            // Search and contract details
            ibClient.ContractDetails    += (reqId, contractDetails) => HandleMessage(new ContractDetailsMessage(reqId, contractDetails)); // This method will provide all the contracts matching the contract provided.It can also be used to retrieve complete options and futures chains.
            ibClient.ContractDetailsEnd += (reqId) => HandleMessage(new ContractDetailsEndMessage());                                     // After all contracts matching the request were returned, this method will mark the end of their reception

            // Execution details
            ibClient.ExecDetails    += (reqId, contract, execution) => HandleMessage(new ExecutionMessage(reqId, contract, execution));
            ibClient.ExecDetailsEnd += reqId => addTextToBox("ExecDetailsEnd. " + reqId + "\n");

            // Comission
            ibClient.CommissionReport += commissionReport => HandleMessage(new CommissionMessage(commissionReport));

            // FUndamential and historical data
            ibClient.FundamentalData += (reqId, data) => HandleMessage(new FundamentalsMessage(data));
            ibClient.HistoricalData  += (reqId, date, open, high, low, close, volume, count, WAP, hasGaps) =>
                                        HandleMessage(new HistoricalDataMessage(reqId, date, open, high, low, close, volume, count, WAP, hasGaps));

            // Positoon
            ibClient.Position += (account, contract, pos, avgCost) => HandleMessage(new PositionMessage(account, contract, pos, avgCost));             // provides the portfolio's open positions.
        }