void tl_newRegisterStocks(string msg) { // make sure logged in if (!login()) { return; } // get symbols string[] sym = msg.Split(','); // look for new symbols foreach (string s in sym) { if (!havestock(s)) // if it's new { // get a subscription GTStock m_stock1 = m_session.CreateStock(s); // hook events m_stock1.HookExecMsgOpenPosition(new GTStock.PFNOnExecMsgOpenPosition(OnStockExecMsgOpenPosition)); m_stock1.HookExecMsgTrade(new GTStock.PFNOnExecMsgTrade(OnStockExecMsgTrade)); m_stock1.HookExecMsgPending(new GTStock.PFNOnExecMsgPending(OnStockExecMsgPending)); m_stock1.HookExecMsgSending(new GTStock.PFNOnExecMsgSending(OnStockExecMsgSending)); m_stock1.HookExecMsgCancel(new GTStock.PFNOnExecMsgCancel(OnStockExecMsgCancel)); m_stock1.HookExecMsgReject(new GTStock.PFNOnExecMsgReject(OnStockExecMsgReject)); m_stock1.HookExecMsgRejectCancel(new GTStock.PFNOnExecMsgRejectCancel(OnStockExecMsgRejectCancel)); m_stock1.HookSendingOrder(new GTStock.PFNOnSendingOrder(OnStockSendingOrder)); m_stock1.HookGotQuotePrint(new GTStock.PFNOnGotQuotePrint(OnStockExecMsgPrint)); m_stock1.HookGotQuoteLevel2(new GTStock.PFNOnGotQuoteLevel2(OnStockGotQuoteLevel2)); m_stock1.HookOnBestAskPriceChanged(new GTStock.PFNOnBestAskPriceChanged(OnStockGotBestAsk)); m_stock1.HookOnBestBidPriceChanged(new GTStock.PFNOnBestBidPriceChanged(OnStockGotBestBid)); // save subscription _stk.Add(m_stock1); } } }
protected virtual int OnStockGotQuoteLevel2(UInt32 hStock, GTSession.GTLevel232 level232) { return(0); GTStock stock = new GTStock(hStock); if (stock.GetAskLevel2Count() > 0 && stock.GetBidLevel2Count() > 0) { if (stock.GetAskLevel2Item(0).dblPrice < stock.GetBidLevel2Item(0).dblPrice) { //string str = "L1:" + level132.szStock + " " + level132.dblBidPrice + " " + level132.dblAskPrice; string str = "BID: " + stock.GetBidLevel2Item(0).dblPrice + " " + "ASK: " + stock.GetAskLevel2Item(0).dblPrice; //listMsg.Items.Insert(0, str); } } return(0); }
void tl_newSendOrderRequest(Order o) { GTSession.GTOrder32 order = new GTSession.GTOrder32(); order.szStock = o.symbol; //order.place = o.ex; order.szAccountID = o.Account; order.chSide = o.side ? 'B' : 'S'; order.dblPrice = (double)o.price; order.dblStopLimitPrice = (double)o.stopp; order.dwShare = o.UnsignedSize; // this should be order id order.dwUserData = o.id == 0 ? OrderImpl.Unique : o.id; // send order GTStock stock = m_session.GetStock(o.symbol); int err = stock.PlaceOrder(order); if (err != 0) { debug("error " + err.ToString() + " sending: " + o.ToString()); } }
protected virtual int OnStockGotQuoteLevel2(UInt32 hStock, GTSession.GTLevel232 level232) { return 0; GTStock stock = new GTStock(hStock); if (stock.GetAskLevel2Count() > 0 && stock.GetBidLevel2Count() > 0) if (stock.GetAskLevel2Item(0).dblPrice < stock.GetBidLevel2Item(0).dblPrice) { //string str = "L1:" + level132.szStock + " " + level132.dblBidPrice + " " + level132.dblAskPrice; string str = "BID: " + stock.GetBidLevel2Item(0).dblPrice + " " + "ASK: " + stock.GetAskLevel2Item(0).dblPrice; //listMsg.Items.Insert(0, str); } return 0; }