示例#1
0
        void dopositionupdate(ref structSTIPositionUpdate structPositionUpdate)
        {
            // symbol
            string sym = structPositionUpdate.bstrSym;
            // size
            int size = (structPositionUpdate.nSharesBot - structPositionUpdate.nSharesSld) + structPositionUpdate.nOpeningPosition;
            // price
            decimal price = size == 0 ? 0 :Math.Abs((decimal)structPositionUpdate.fPositionCost / size);
            // closed pl
            decimal cpl = (decimal)structPositionUpdate.fReal;
            // account
            string ac = structPositionUpdate.bstrAcct;
            // build position
            Position p = new PositionImpl(sym, price, size, cpl, ac);

            // track it
            pt.NewPosition(p);
            // track account
            if (!accts.Contains(ac))
            {
                accts.Add(ac);
            }
            if (VerboseDebugging)
            {
                debug("new position recv: " + p.ToString());
            }
        }
示例#2
0
 void stiPos_OnSTIPositionUpdate(ref structSTIPositionUpdate structPositionUpdate)
 {
     if (UseXmlMode)
     {
         return;
     }
     dopositionupdate(ref structPositionUpdate);
 }
示例#3
0
 void stiPos_OnSTIPositionUpdateXML(ref string bstrPosition)
 {
     try
     {
         XmlSerializer           xs = new XmlSerializer(typeof(SterlingLib.structSTIPositionUpdate));
         structSTIPositionUpdate q  = (structSTIPositionUpdate)xs.Deserialize(new System.IO.StringReader(bstrPosition));
         dopositionupdate(ref q);
     }
     catch (Exception ex)
     {
         debug("Error deserializing position: " + bstrPosition);
         debug(ex.Message + ex.StackTrace);
     }
 }
        private void SessionOnStiPositionUpdate(ref structSTIPositionUpdate msg)
        {
            var message = new PositionChangeMessage
            {
                PortfolioName = msg.bstrAcct,
                SecurityId    = new SecurityId {
                    SecurityCode = msg.bstrSym, BoardCode = "All"
                },
            };

            message.TryAdd(PositionChangeTypes.RealizedPnL, (decimal)msg.fReal);
            message.TryAdd(PositionChangeTypes.BeginValue, (decimal)msg.nOpeningPosition);
            message.TryAdd(PositionChangeTypes.CurrentValue, (decimal)(msg.nOpeningPosition + (msg.nSharesBot - msg.nSharesSld)));
            message.TryAdd(PositionChangeTypes.Commission, (decimal)msg.fPositionCost);

            SendOutMessage(message);
        }
示例#5
0
        void stiPos_OnSTIPositionUpdate(ref structSTIPositionUpdate structPositionUpdate)
        {
            // symbol
            string sym = structPositionUpdate.bstrSym;
            // size
            int size = structPositionUpdate.nSharesBot - structPositionUpdate.nSharesSld + structPositionUpdate.nOpeningPosition;
            // price
            decimal price = Math.Abs((decimal)structPositionUpdate.fPositionCost / size);
            // closed pl
            decimal cpl = (decimal)structPositionUpdate.fReal;
            // account
            string ac = structPositionUpdate.bstrAcct;
            // build position
            Position p = new PositionImpl(sym, price, size, cpl, ac);

            // track it
            pt.NewPosition(p);
            // track account
            if (!accts.Contains(ac))
            {
                accts.Add(ac);
            }
        }
		private void SessionOnStiPositionUpdate(ref structSTIPositionUpdate msg)
		{
			var message = new PositionChangeMessage
			{
				PortfolioName = msg.bstrAcct,
				SecurityId = new SecurityId { SecurityCode = msg.bstrSym, BoardCode = AssociatedBoardCode },
			};

			message.TryAdd(PositionChangeTypes.RealizedPnL, (decimal)msg.fReal);
			message.TryAdd(PositionChangeTypes.BeginValue, (decimal)msg.nOpeningPosition);
			message.TryAdd(PositionChangeTypes.CurrentValue, (decimal)(msg.nOpeningPosition + (msg.nSharesBot - msg.nSharesSld)));
			message.TryAdd(PositionChangeTypes.Commission, (decimal)msg.fPositionCost);

			SendOutMessage(message);
		}
示例#7
0
 void stiPos_OnSTIPositionUpdate(ref structSTIPositionUpdate structPositionUpdate)
 {
     if (UseXmlMode)
         return;
     dopositionupdate(ref structPositionUpdate);
 }
示例#8
0
 void dopositionupdate(ref structSTIPositionUpdate structPositionUpdate)
 {
     // symbol
     string sym = structPositionUpdate.bstrSym;
     // size
     int size = (structPositionUpdate.nSharesBot - structPositionUpdate.nSharesSld) + structPositionUpdate.nOpeningPosition;
     // price
     decimal price = size == 0 ? 0 :Math.Abs((decimal)structPositionUpdate.fPositionCost / size);
     // closed pl
     decimal cpl = (decimal)structPositionUpdate.fReal;
     // account
     string ac = structPositionUpdate.bstrAcct;
     // build position
     Position p = new PositionImpl(sym, price, size, cpl, ac);
     // track it
     pt.NewPosition(p);
     // track account
     if (!accts.Contains(ac))
         accts.Add(ac);
     if (VerboseDebugging)
         debug("new position recv: " + p.ToString());
 }
示例#9
0
        void dopositionupdate(ref structSTIPositionUpdate structPositionUpdate)
        {
            // symbol
            string ssym = structPositionUpdate.bstrSym;
            string sym = ssym;
            if (UseSubscribedSymbolForNotify)
            {
                sym = getfullsymbolname(ssym);
            }
            if (!UseSubscribedSymbolForNotify || (sym == ssym))
            {
                // only do for non-equities
                if (structPositionUpdate.bstrInstrument == "O")
                    sym = ssym + " "+SecurityType.OPT;
                else if (structPositionUpdate.bstrInstrument == "X")
                    sym = ssym + " " + SecurityType.CASH;
                else if (structPositionUpdate.bstrInstrument == "F")
                    sym = ssym + " " + SecurityType.FUT;
            }

            // size
            int size = (structPositionUpdate.nSharesBot - structPositionUpdate.nSharesSld) + structPositionUpdate.nOpeningPosition;
            // price
            decimal price = size == 0 ? 0 :Math.Abs((decimal)structPositionUpdate.fPositionCost / size);
            // closed pl
            decimal cpl = (decimal)structPositionUpdate.fReal;
            // account
            string ac = structPositionUpdate.bstrAcct;
            // build position
            Position p = new PositionImpl(sym, price, size, cpl, ac);
            // track it
            bool adjust = false;
            if (_posupdatelimit && _receivedorder)
                ;
            else
            {
                pt.NewPosition(p);
                adjust = true;
            }
            if (RegSHOShorts)
                sho.GotPosition(p);
            // track account
            if (!accts.Contains(ac))
                accts.Add(ac);
            if (VerboseDebugging)
                debug("new position recv: " + p.ToString()+" info: "+pt[p.Symbol,ac]+" acct: "+ac);
        }
示例#10
0
 void stiPos_OnSTIPositionUpdate(ref structSTIPositionUpdate structPositionUpdate)
 {
     // symbol
     string sym = structPositionUpdate.bstrSym;
     // size
     int size = structPositionUpdate.nSharesBot - structPositionUpdate.nSharesSld + structPositionUpdate.nOpeningPosition;
     // price
     decimal price = Math.Abs((decimal)structPositionUpdate.fPositionCost / size);
     // closed pl
     decimal cpl = (decimal)structPositionUpdate.fReal;
     // account
     string ac = structPositionUpdate.bstrAcct;
     // build position
     Position p = new PositionImpl(sym, price, size, cpl, ac);
     // track it
     pt.NewPosition(p);
     // track account
     if (!accts.Contains(ac))
         accts.Add(ac);
 }