Esempio n. 1
0
        private static void ConditionSamples(EClientSocket client, int nextOrderId)
        {
            //! [order_conditioning_activate]
            Order mkt = OrderSamples.MarketOrder("BUY", 100);

            //Order will become active if conditioning criteria is met
            mkt.ConditionsCancelOrder = true;
            mkt.Conditions.Add(OrderSamples.PriceCondition(208813720, "SMART", 600, false, false));
            mkt.Conditions.Add(OrderSamples.ExecutionCondition("EUR.USD", "CASH", "IDEALPRO", true));
            mkt.Conditions.Add(OrderSamples.MarginCondition(30, true, false));
            mkt.Conditions.Add(OrderSamples.PercentageChangeCondition(15.0, 208813720, "SMART", true, true));
            mkt.Conditions.Add(OrderSamples.TimeCondition("20160118 23:59:59", true, false));
            mkt.Conditions.Add(OrderSamples.VolumeCondition(208813720, "SMART", false, 100, true));
            client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), mkt);
            //! [order_conditioning_activate]

            //Conditions can make the order active or cancel it. Only LMT orders can be conditionally canceled.
            //! [order_conditioning_cancel]
            Order lmt = OrderSamples.LimitOrder("BUY", 100, 20);

            //The active order will be cancelled if conditioning criteria is met
            lmt.ConditionsCancelOrder = true;
            lmt.Conditions.Add(OrderSamples.PriceCondition(208813720, "SMART", 600, false, false));
            client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), lmt);
            //! [order_conditioning_cancel]
        }
Esempio n. 2
0
        private static void marketDepthOperations(EClientSocket client)
        {
            /*** Requesting the Deep Book ***/
            //! [reqmarketdepth]
            client.reqMarketDepth(2001, ContractSamples.EurGbpFx(), 5, false, null);
            //! [reqmarketdepth]
            Thread.Sleep(2000);
            /*** Canceling the Deep Book request ***/
            //! [cancelmktdepth]
            client.cancelMktDepth(2001, false);
            //! [cancelmktdepth]

            /*** Requesting the Deep Book ***/
            //! [reqmarketdepth]
            client.reqMarketDepth(2002, ContractSamples.EuropeanStock(), 5, true, null);
            //! [reqmarketdepth]
            Thread.Sleep(5000);
            /*** Canceling the Deep Book request ***/
            //! [cancelmktdepth]
            client.cancelMktDepth(2002, true);
            //! [cancelmktdepth]

            /*** Requesting Market Depth Exchanges ***/
            Thread.Sleep(2000);
            //! [reqMktDepthExchanges]
            client.reqMktDepthExchanges();
            //! [reqMktDepthExchanges]
        }
Esempio n. 3
0
        private static void BracketSample(EClientSocket client, int nextOrderId)
        {
            //BRACKET ORDER
            //! [bracketsubmit]
            List <Order> bracket = OrderSamples.BracketOrder(nextOrderId++, "BUY", 100, 30, 40, 20);

            foreach (Order o in bracket)
            {
                client.placeOrder(o.OrderId, ContractSamples.EuropeanStock(), o);
            }
            //! [bracketsubmit]
        }
Esempio n. 4
0
        private static void historicalDataRequests(EClientSocket client)
        {
            /*** Requesting historical data ***/
            //! [reqhistoricaldata]
            String queryTime = DateTime.Now.AddMonths(-6).ToString("yyyyMMdd HH:mm:ss");

            client.reqHistoricalData(4001, ContractSamples.EurGbpFx(), queryTime, "1 M", "1 day", "MIDPOINT", 1, 1, false, null);
            client.reqHistoricalData(4002, ContractSamples.EuropeanStock(), queryTime, "10 D", "1 min", "TRADES", 1, 1, false, null);
            //! [reqhistoricaldata]
            Thread.Sleep(2000);
            /*** Canceling historical data requests ***/
            client.cancelHistoricalData(4001);
            client.cancelHistoricalData(4002);
        }
Esempio n. 5
0
        private static void HedgeSample(EClientSocket client, int nextOrderId)
        {
            //F Hedge order
            //! [hedgesubmit]
            //Parent order on a contract which currency differs from your base currency
            Order parent = OrderSamples.LimitOrder("BUY", 100, 10);

            parent.OrderId = nextOrderId++;
            //Hedge on the currency conversion
            Order hedge = OrderSamples.MarketFHedge(parent.OrderId, "BUY");

            //Place the parent first...
            client.placeOrder(parent.OrderId, ContractSamples.EuropeanStock(), parent);
            //Then the hedge order
            client.placeOrder(nextOrderId++, ContractSamples.EurGbpFx(), hedge);
            //! [hedgesubmit]
        }
Esempio n. 6
0
        private static void tickByTickOperations(EClientSocket client)
        {
            /*** Requesting tick-by-tick data (only refresh) ***/
            //! [reqtickbytick]
            client.reqTickByTickData(19001, ContractSamples.USStockAtSmart(), "Last", 0, false);
            client.reqTickByTickData(19002, ContractSamples.USStockAtSmart(), "AllLast", 0, false);
            client.reqTickByTickData(19003, ContractSamples.USStockAtSmart(), "BidAsk", 0, true);
            client.reqTickByTickData(19004, ContractSamples.EurGbpFx(), "MidPoint", 0, false);
            //! [reqtickbytick]

            Thread.Sleep(10000);

            //! [canceltickbytick]
            client.cancelTickByTickData(19001);
            client.cancelTickByTickData(19002);
            client.cancelTickByTickData(19003);
            client.cancelTickByTickData(19004);
            //! [canceltickbytick]

            Thread.Sleep(5000);

            /*** Requesting tick-by-tick data (historical + refresh) ***/
            //! [reqtickbytick]
            client.reqTickByTickData(19005, ContractSamples.EuropeanStock(), "Last", 10, false);
            client.reqTickByTickData(19006, ContractSamples.EuropeanStock(), "AllLast", 10, false);
            client.reqTickByTickData(19007, ContractSamples.EuropeanStock(), "BidAsk", 10, false);
            client.reqTickByTickData(19008, ContractSamples.EurGbpFx(), "MidPoint", 10, true);
            //! [reqtickbytick]

            Thread.Sleep(10000);

            //! [canceltickbytick]
            client.cancelTickByTickData(19005);
            client.cancelTickByTickData(19006);
            client.cancelTickByTickData(19007);
            client.cancelTickByTickData(19008);
            //! [canceltickbytick]
        }
Esempio n. 7
0
        private static void orderOperations(EClientSocket client, int nextOrderId)
        {
            /*** Requesting the next valid id ***/
            //! [reqids]
            //The parameter is always ignored.
            client.reqIds(-1);
            //! [reqids]
            //Thread.Sleep(1000);
            /*** Requesting all open orders ***/
            //! [reqallopenorders]
            client.reqAllOpenOrders();
            //! [reqallopenorders]
            //Thread.Sleep(1000);
            /*** Taking over orders to be submitted via TWS ***/
            //! [reqautoopenorders]
            client.reqAutoOpenOrders(true);
            //! [reqautoopenorders]
            //Thread.Sleep(1000);
            /*** Requesting this API client's orders ***/
            //! [reqopenorders]
            client.reqOpenOrders();
            //! [reqopenorders]
            //Thread.Sleep(1000);
            //BracketSample(client, nextOrderId);

            /*** Placing/modifying an order - remember to ALWAYS increment the nextValidId after placing an order so it can be used for the next one!
             *          Note if there are multiple clients connected to an account, the order ID must also be greater than all order IDs returned for orders to orderStatus and openOrder to this client.
             ***/
            //! [order_submission]
            client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.TrailingStopLimit("BUY", 1, 5, 5, 110));
            //! [order_submission]

            //! [faorderoneaccount]
            Order faOrderOneAccount = OrderSamples.MarketOrder("BUY", 100);

            // Specify the Account Number directly
            faOrderOneAccount.Account = "DU119915";
            client.placeOrder(nextOrderId++, ContractSamples.USStock(), faOrderOneAccount);
            //! [faorderoneaccount]

            //! [faordergroupequalquantity]
            Order faOrderGroupEQ = OrderSamples.LimitOrder("SELL", 200, 2000);

            faOrderGroupEQ.FaGroup  = "Group_Equal_Quantity";
            faOrderGroupEQ.FaMethod = "EqualQuantity";
            client.placeOrder(nextOrderId++, ContractSamples.SimpleFuture(), faOrderGroupEQ);
            //! [faordergroupequalquantity]

            //! [faordergrouppctchange]
            Order faOrderGroupPC = OrderSamples.MarketOrder("BUY", 0);;

            // You should not specify any order quantity for PctChange allocation method
            faOrderGroupPC.FaGroup      = "Pct_Change";
            faOrderGroupPC.FaMethod     = "PctChange";
            faOrderGroupPC.FaPercentage = "100";
            client.placeOrder(nextOrderId++, ContractSamples.EurGbpFx(), faOrderGroupPC);
            //! [faordergrouppctchange]

            //! [faorderprofile]
            Order faOrderProfile = OrderSamples.LimitOrder("BUY", 200, 100);

            faOrderProfile.FaProfile = "Percent_60_40";
            client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), faOrderProfile);
            //! [faorderprofile]

            //! [modelorder]
            Order modelOrder = OrderSamples.LimitOrder("BUY", 200, 100);

            modelOrder.Account   = "DF12345";    // master FA account number
            modelOrder.ModelCode = "Technology"; // model for tech stocks first created in TWS
            client.placeOrder(nextOrderId++, ContractSamples.USStock(), modelOrder);
            //! [modelorder]

            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.Block("BUY", 50, 20));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.BoxTop("SELL", 10));
            //client.placeOrder(nextOrderId++, ContractSamples.FutureComboContract(), OrderSamples.ComboLimitOrder("SELL", 1, 1, false));
            //client.placeOrder(nextOrderId++, ContractSamples.StockComboContract(), OrderSamples.ComboMarketOrder("BUY", 1, true));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionComboContract(), OrderSamples.ComboMarketOrder("BUY", 1, false));
            //client.placeOrder(nextOrderId++, ContractSamples.StockComboContract(), OrderSamples.LimitOrderForComboWithLegPrices("BUY", 1, new double[]{10, 5}, true));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.Discretionary("SELL", 1, 45, 0.5));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.LimitIfTouched("BUY", 1, 30, 34));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.LimitOnClose("SELL", 1, 34));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.LimitOnOpen("BUY", 1, 35));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketIfTouched("BUY", 1, 30));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketOnClose("SELL", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketOnOpen("BUY", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketOrder("SELL", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketToLimit("BUY", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtIse(), OrderSamples.MidpointMatch("BUY", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.MarketToLimit("BUY", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.Stop("SELL", 1, 34.4));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.StopLimit("BUY", 1, 35, 33));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.StopWithProtection("SELL", 1, 45));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.SweepToFill("BUY", 1, 35));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.TrailingStop("SELL", 1, 0.5, 30));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.TrailingStopLimit("BUY", 1, 2, 5, 50));
            //client.placeOrder(nextOrderId++, ContractSamples.NormalOption(), OrderSamples.Volatility("SELL", 1, 5, 2));



            //NOTE: the following orders are not supported for Paper Trading
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.AtAuction("BUY", 100, 30.0));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.AuctionLimit("SELL", 10, 30.0, 2));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.AuctionPeggedToStock("BUY", 10, 30, 0.5));
            //client.placeOrder(nextOrderId++, ContractSamples.OptionAtBOX(), OrderSamples.AuctionRelative("SELL", 10, 0.6));
            //client.placeOrder(nextOrderId++, ContractSamples.SimpleFuture(), OrderSamples.MarketWithProtection("BUY", 1));
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(), OrderSamples.PassiveRelative("BUY", 1, 0.5));

            //208813720 (GOOG)
            //client.placeOrder(nextOrderId++, ContractSamples.USStock(),
            //    OrderSamples.PeggedToBenchmark("SELL", 100, 33, true, 0.1, 1, 208813720, "ISLAND", 750, 650, 800));

            //STOP ADJUSTABLE ORDERS
            //Order stpParent = OrderSamples.Stop("SELL", 100, 30);
            //stpParent.OrderId = nextOrderId++;
            //client.placeOrder(stpParent.OrderId, ContractSamples.EuropeanStock(), stpParent);
            //client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), OrderSamples.AttachAdjustableToStop(stpParent, 35, 32, 33));
            //client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), OrderSamples.AttachAdjustableToStopLimit(stpParent, 35, 33, 32, 33));
            //client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), OrderSamples.AttachAdjustableToTrail(stpParent, 35, 32, 32, 1, 0));

            //Order lmtParent = OrderSamples.LimitOrder("BUY", 100, 30);
            //lmtParent.OrderId = nextOrderId++;
            //client.placeOrder(lmtParent.OrderId, ContractSamples.EuropeanStock(), lmtParent);
            //Attached TRAIL adjusted can only be attached to LMT parent orders.
            //client.placeOrder(nextOrderId++, ContractSamples.EuropeanStock(), OrderSamples.AttachAdjustableToTrailAmount(lmtParent, 34, 32, 33, 0.008));
            //TestAlgoSamples(client, nextOrderId);
            //Thread.Sleep(30000);
            //! [cancelorder]
            client.cancelOrder(nextOrderId - 1);
            //! [cancelorder]
            /*** Cancel all orders for all accounts ***/
            //! [reqglobalcancel]
            client.reqGlobalCancel();
            //! [reqglobalcancel]
            /*** Request the day's executions ***/
            //! [reqexecutions]
            client.reqExecutions(10001, new ExecutionFilter());
            //! [reqexecutions]
        }