Exemplo n.º 1
0
        void PST_OnPosition(object sender, TalTrade.Toolkit.Domain.DataEventArgs <PositionRecord> e)
        {
            if (e.Count == 0)
            {
                debug("GOT NO POSITIONS FOR TODAY");
            }
            else
            {
                debug("GOT TODAY'S POSITIONS");
                foreach (PositionRecord pos in e)
                {
                    var p = new PositionImpl(pos.DispName, decimal.Parse(pos.AverageLong.Value.ToString()), Convert.ToInt32(pos.Longpos.GetValueOrDefault()));
                    pt.NewPosition(p);

                    //debug("  --> {0}.{1}.{2}.{3}",
                    //    pos.Bank,
                    //    pos.Branch,
                    //    pos.Customer,
                    //    pos.Deposit);

                    //debug("      Symbol {0}, AcctType {1}",
                    //    pos.DispName, pos.AcctType);
                    //debug("      Intraday Long = {0}@{1}",
                    //    pos.Longpos, pos.AverageLong);
                    //debug("      Intraday Short = {0}@{1}",
                    //    pos.Shortpos, pos.AverageShort);
                }
            }
        }
Exemplo n.º 2
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());
            }
        }
Exemplo n.º 3
0
        public void NewPosition()
        {
            const string s = "IBM";
            Position     p = new PositionImpl(s, 80, 500);

            PositionTracker pt = new PositionTracker();

            Assert.IsTrue(pt[s].isFlat);
            pt.NewPosition(p);
            Assert.AreEqual(500, pt[s].Size);
        }
Exemplo n.º 4
0
        void m_Session_OnPositionMessage(object sender, BWPosition positionMsg)
        {
            string  sym   = positionMsg.Symbol;
            int     size  = positionMsg.Size;
            decimal price = (decimal)positionMsg.Price;
            decimal cpl   = (decimal)positionMsg.CloseProfit;
            //string ac = positionMsg.UserID.ToString();
            Position p = new PositionImpl(sym, price, size, cpl, _acct);

            pt.NewPosition(p);
        }
Exemplo n.º 5
0
        void BlackBox_GrayBoxOrderExecuteEventMy(object ob, GrayBoxAPI.BBEventArgs e)
        {
            UpdateOrderStatus(e);
            Order o = new OrderImpl();

            OrderList.TryGetValue(e.BBXid, out o);

            Position p = new PositionImpl(o.symbol, (decimal)e.Price, e.Quantity, (decimal)e.Price, o.Account);

            string orderside = o.side ? "BUY" : "SELL";

            debug("Order executed " + o.id + " " + o.symbol + " " + orderside + " " + o.size);

            pt.NewPosition(p);
        }
Exemplo n.º 6
0
        public void NewPosition()
        {
            string        s       = "IBM";
            ForexSecurity ts      = new ForexSecurity(s);
            IAccount      account = new SimAccount("TEST");

            account.Securities.AddSecurity(ts);
            PositionImpl p = new PositionImpl(ts, 80, 500, 0, account);

            PositionTracker pt = new PositionTracker(account);

            Assert.True(pt[s].IsFlat);
            pt.NewPosition(p);
            Assert.Equal(500, pt[s].Size);
        }
Exemplo n.º 7
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);
            }
        }
Exemplo n.º 8
0
        void PositionCache_CacheEvent(int action, int row)
        {
            int     err    = 0;
            object  cv     = new object();
            decimal dv     = 0;
            String  symbol = string.Empty;
            decimal pl     = 0.00M;
            decimal value  = 0.00M;
            int     size   = 0;
            string  acct   = string.Empty;

            if (action == 1)
            {
                try
                {
                    v("for position submit row: " + row.ToString());
                    int i = row != 0 ? row - 1 : row;
                    _positionCache.VBGetCell(i, "SYMBOL", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        symbol = cv.ToString();
                    }
                    _positionCache.VBGetCell(i, "PANDL", ref cv, ref err);
                    if (!(cv == null))
                    {
                        if (decimal.TryParse(cv.ToString(), out dv))
                        {
                            pl = dv;
                        }
                    }
                    _positionCache.VBGetCell(i, "ACCOUNT", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        acct = cv.ToString();
                    }
                    _positionCache.VBGetCell(i, "SYMBOLPOSITION", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        int val;
                        if (int.TryParse(cv.ToString(), out val))
                        {
                            size = val;
                        }
                    }
                    _positionCache.VBGetCell(i, "ACCOUNTSYMBOLVALUE", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        if (decimal.TryParse(cv.ToString(), out dv))
                        {
                            value = dv;
                        }
                    }
                    Position p = new PositionImpl(symbol, value, size, pl, acct);
                    pt.NewPosition(p);
                    v("new position: " + p.ToString());
                    // track account
                    if (!accts.Contains(acct))
                    {
                        accts.Add(acct);
                    }
                }
                catch (Exception exc)
                {
                    debug(exc.Message);
                }
            }
            else
            {
                try
                {
                    v("for position submit row: " + row.ToString());
                    int i = row;
                    _positionCache.VBGetCell(i, "SYMBOL", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        symbol = cv.ToString();
                    }
                    _positionCache.VBGetCell(i, "PANDL", ref cv, ref err);
                    if (!(cv == null))
                    {
                        if (decimal.TryParse(cv.ToString(), out dv))
                        {
                            pl = dv;
                        }
                    }
                    _positionCache.VBGetCell(i, "ACCOUNT", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        acct = cv.ToString();
                    }
                    _positionCache.VBGetCell(i, "SYMBOLPOSITION", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        int val;
                        if (int.TryParse(cv.ToString(), out val))
                        {
                            size = val;
                        }
                    }
                    _positionCache.VBGetCell(i, "ACCOUNTSYMBOLVALUE", ref cv, ref err);
                    v("getcellerr: " + err.ToString());
                    if (!(cv == null))
                    {
                        if (decimal.TryParse(cv.ToString(), out dv))
                        {
                            value = dv;
                        }
                    }
                    Position p = new PositionImpl(symbol, value, size, pl, acct);
                    pt.NewPosition(p);
                    v(p.ToString());
                    // track account
                    if (!accts.Contains(acct))
                    {
                        accts.Add(acct);
                    }
                }
                catch (Exception exc)
                {
                    debug(exc.Message);
                }
            }
        }