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); } } }
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()); } }
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); }
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); }
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); }
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); }
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); } }
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); } } }