Ejemplo n.º 1
0
        public void SplitCancelCopy()
        {
            lasto = new OrderImpl();
            oc    = 0;
            cancels.Clear();
            ost = new OversellTracker();
            ost.SendOrderEvent  += new OrderDelegate(ost_SendOrderEvent);
            ost.SendDebugEvent  += new DebugDelegate(rt.d);
            ost.SendCancelEvent += new LongDelegate(ost_SendCancelEvent);

            ost.Split = true;
            // take a position
            ost.GotPosition(new PositionImpl("TST", 100, 300));
            // over sell
            Order o = new SellMarket("TST", 500);

            o.id = 5;
            ost.sendorder(o);
            // verify that only flat was sent
            Assert.AreEqual(2, oc);
            Assert.AreEqual(-200, lasto.size);
            // make sure we've not canceled
            Assert.AreEqual(0, cancels.Count);
            // cancel original order
            ost.sendcancel(5);
            // ensure two cancels sent
            Assert.AreEqual(2, cancels.Count);
            // ensure different cancels
            Assert.AreEqual(5, cancels[0]);
            Assert.AreNotEqual(5, cancels[1]);

            // do it again

            // take a position
            ost.GotPosition(new PositionImpl("TST", 100, 300));

            // over sell
            o    = new SellMarket("TST", 500);
            o.id = 10;
            ost.sendorder(o);
            // verify that only flat was sent
            Assert.AreEqual(4, oc);
            Assert.AreEqual(-200, lasto.size);
            // make sure we've not canceled
            Assert.AreEqual(2, cancels.Count);
            // cancel original order
            ost.sendcancel(10);
            // ensure two cancels sent
            Assert.AreEqual(4, cancels.Count);
            // ensure different cancels
            Assert.AreEqual(10, cancels[2]);
            Assert.AreNotEqual(10, cancels[3]);
        }
Ejemplo n.º 2
0
 public void TestOverSellDrop()
 {
     lasto = new OrderImpl();
     oc    = 0;
     ost   = new OversellTracker();
     ost.SendOrderEvent += new OrderDelegate(ost_SendOrderEvent);
     ost.SendDebugEvent += new DebugDelegate(rt.d);
     // take a position
     ost.GotPosition(new PositionImpl("TST", 100, 300));
     // over sell
     ost.sendorder(new SellMarket("TST", 500));
     // verify that only flat was sent
     Assert.AreEqual(1, oc);
     Assert.AreEqual(-300, lasto.size);
 }
Ejemplo n.º 3
0
        public void TestOverBuyAdjust()
        {
            lasto = new OrderImpl();
            oc    = 0;
            ost   = new OversellTracker();
            ost.SendOrderEvent += new OrderDelegate(ost_SendOrderEvent);
            ost.SendDebugEvent += new DebugDelegate(rt.d);

            ost.Split = true;
            // take a position
            ost.GotPosition(new PositionImpl("TST", 100, -300));
            // over sell
            ost.sendorder(new BuyMarket("TST", 500));
            // verify that flat and adjustment were sent
            Assert.AreEqual(2, oc);
            Assert.AreEqual(200, lasto.size);
        }
Ejemplo n.º 4
0
        public void SplitWithPartialFillRoundMinsize100()
        {
            lasto = new OrderImpl();
            oc    = 0;
            ost   = new OversellTracker();
            ost.SendOrderEvent += new OrderDelegate(ost_SendOrderEvent);
            ost.SendDebugEvent += new DebugDelegate(rt.d);
            ost.MinLotSize      = 100;

            ost.Split = true;
            // take a position
            ost.GotPosition(new PositionImpl("TST", 100, 58));
            // over sell
            Order o = new SellMarket("TST", 100);

            o.id = 1;
            ost.sendorder(o);
            // verify that flat and adjustment were sent
            Assert.AreEqual(1, oc);
            Assert.AreEqual(-100, lasto.size);
        }
Ejemplo n.º 5
0
        public bool Start()
        {
            try
            {
                if (_connected)
                {
                    return(true);
                }
                ost                 = new OversellTracker(pt);
                ost.Split           = OversellSplit;
                ost.SendOrderEvent += new OrderDelegate(ost_SendOrderEvent);
                ost.SendDebugEvent += new DebugDelegate(ost_SendDebugEvent);
                debug(Util.TLSIdentity());
                debug("Attempting to start: " + PROGRAM);
                // basic structures needed for operation
                stiEvents = new STIEvents();
                stiOrder  = new STIOrderMaint();
                stiPos    = new STIPosition();
                stiQuote  = new STIQuote();
                stiBook   = new STIBook();
                stiApp    = new STIApp();
                _bw       = new Thread(new ParameterizedThreadStart(background));
                _runbg    = true;
                _bw.Start();
                ptt.GotCancelEvent += new LongDelegate(tl.newCancel);
                ptt.GotFillEvent   += new FillDelegate(tl.newFill);
                ptt.GotOrderEvent  += new OrderDelegate(tl.newOrder);
                ptt.SendDebugEvent += new DebugDelegate(ptt_SendDebugEvent);
                ptt.UseBidAskFills  = isPaperTradeUsingBidAsk;

                stiEvents.OnSTIShutdown += new _ISTIEventsEvents_OnSTIShutdownEventHandler(stiEvents_OnSTIShutdown);
                stiEvents.SetOrderEventsAsStructs(true);

                stiEvents.OnSTIOrderUpdate    += new _ISTIEventsEvents_OnSTIOrderUpdateEventHandler(stiEvents_OnSTIOrderUpdate);
                stiEvents.OnSTIOrderUpdateXML += new _ISTIEventsEvents_OnSTIOrderUpdateXMLEventHandler(stiEvents_OnSTIOrderUpdateXML);
                stiEvents.OnSTITradeUpdate    += new _ISTIEventsEvents_OnSTITradeUpdateEventHandler(stiEvents_OnSTITradeUpdate);
                stiEvents.OnSTITradeUpdateXML += new _ISTIEventsEvents_OnSTITradeUpdateXMLEventHandler(stiEvents_OnSTITradeUpdateXML);
                stiPos.OnSTIPositionUpdate    += new _ISTIPositionEvents_OnSTIPositionUpdateEventHandler(stiPos_OnSTIPositionUpdate);
                stiPos.OnSTIPositionUpdateXML += new _ISTIPositionEvents_OnSTIPositionUpdateXMLEventHandler(stiPos_OnSTIPositionUpdateXML);
                stiQuote.OnSTIQuoteUpdate     += new _ISTIQuoteEvents_OnSTIQuoteUpdateEventHandler(stiQuote_OnSTIQuoteUpdate);
                stiQuote.OnSTIQuoteSnap       += new _ISTIQuoteEvents_OnSTIQuoteSnapEventHandler(stiQuote_OnSTIQuoteSnap);
                stiEvents.OnSTIOrderRejectMsg += new _ISTIEventsEvents_OnSTIOrderRejectMsgEventHandler(stiEvents_OnSTIOrderRejectMsg);
                stiEvents.OnSTIOrderRejectXML += new _ISTIEventsEvents_OnSTIOrderRejectXMLEventHandler(stiEvents_OnSTIOrderRejectXML);
                stiEvents.OnSTIOrderReject    += new _ISTIEventsEvents_OnSTIOrderRejectEventHandler(stiEvents_OnSTIOrderReject);
                stiQuote.OnSTIQuoteUpdateXML  += new _ISTIQuoteEvents_OnSTIQuoteUpdateXMLEventHandler(stiQuote_OnSTIQuoteUpdateXML);
                stiQuote.OnSTIQuoteSnapXML    += new _ISTIQuoteEvents_OnSTIQuoteSnapXMLEventHandler(stiQuote_OnSTIQuoteSnapXML);
                stiPos.GetCurrentPositions();

                tl.newAcctRequest        += new StringDelegate(tl_newAcctRequest);
                tl.newProviderName        = Providers.Sterling;
                tl.newSendOrderRequest   += new OrderDelegateStatus(tl_gotSrvFillRequest);
                tl.newPosList            += new PositionArrayDelegate(tl_gotSrvPosList);
                tl.newRegisterSymbols    += new SymbolRegisterDel(tl_newRegisterSymbols);
                tl.newOrderCancelRequest += new LongDelegate(tl_OrderCancelRequest);
                tl.newFeatureRequest     += new MessageArrayDelegate(tl_newFeatureRequest);
                tl.newUnknownRequest     += new UnknownMessageDelegate(tl_newUnknownRequest);
                tl.newImbalanceRequest   += new VoidDelegate(tl_newImbalanceRequest);
                tl.SendDebugEvent        += new DebugDelegate(tl_SendDebugEvent);
                stiApp.SetModeXML(UseXmlMode);
                string trader = stiApp.GetTraderName().ToUpper();
                debug("trader: " + trader);
                if (!accts.Contains(trader))
                {
                    accts.Add(trader);
                    debug("accounts: " + string.Join(",", Accounts));
                }

                if (VerboseDebugging)
                {
                    debug("Verbose Mode On.");
                }
                if (isPaperTradeEnabled)
                {
                    debug("Papertrading enabled.");
                }
            }
            catch (Exception ex)
            {
                debug(ex.Message + ex.StackTrace);
                _connected = false;
                return(false);
            }
            debug(PROGRAM + " started.");
            _connected = true;
            return(_connected);
        }