void TWS_TLServer::tickPrice( TickerId tickerId, TickType tickType, double price, int canAutoExecute) { if ((tickerId>=0)&&(tickerId<(TickerId)stockticks.size()) && needStock(stockticks[tickerId].sym)) { time_t now; time(&now); CTime ct(now); TLTick k; k.date = (ct.GetYear()*10000) + (ct.GetMonth()*100) + ct.GetDay(); k.time = (ct.GetHour()*10000)+(ct.GetMinute()*100)+ct.GetSecond(); k.sym = stockticks[tickerId].sym; if (tickType==LAST) { stockticks[tickerId].trade = price; k.trade = price; k.size = stockticks[tickerId].size; } else if (tickType==BID) { stockticks[tickerId].bid = price; k.bid = stockticks[tickerId].bid; k.bs = stockticks[tickerId].bs; } else if (tickType==ASK) { stockticks[tickerId].ask = price; k.ask = stockticks[tickerId].ask; k.os = stockticks[tickerId].os; } else return; // not relevant tick info if (k.isValid() && needStock(k.sym)) this->SrvGotTick(k); } }
void TLServer_IP::SrvGotTick(TLTick tick) { if (tick.sym=="") return; for (uint i = 0; i<stocks.size(); i++) for (uint j = 0; j<stocks[i].size(); j++) { if (stocks[i][j]==tick.sym) TLSend(TICKNOTIFY,tick.Serialize(),client[i]); } }
void TLServer_WM::SrvGotTick(TLTick tick) { // if tick has no symbol index, send it old way if (tick.symid<0) { for (uint i = 0; i<stocks.size(); i++) for (uint j = 0; j<stocks[i].size(); j++) { if (stocks[i][j]==tick.sym) TLSend(TICKNOTIFY,tick.Serialize(),i); } return; } // otherwise get only clients by their index clientindex symclients = symclientidx[tick.symid]; for (uint i = 0; i<symclients.size(); i++) { TLSend(TICKNOTIFY,tick.Serialize(),symclients[i]); } }
void TWS_TLServer::tickSize( TickerId tickerId, TickType tickType, int size) { if ((tickerId>=0)&&(tickerId<(TickerId)stockticks.size()) && needStock(stockticks[tickerId].sym)) { time_t now; time(&now); CTime ct(now); TLTick k; k.date = (ct.GetYear()*10000) + (ct.GetMonth()*100) + ct.GetDay(); k.time = (ct.GetHour()*10000)+(ct.GetMinute()*100) + ct.GetSecond(); k.sym = stockticks[tickerId].sym; TLSecurity sec = TLSecurity::Deserialize(k.sym); bool hundrednorm = sec.type== STK; if (tickType==LAST_SIZE) { stockticks[tickerId].size = hundrednorm ? size*100 : size; k.trade = stockticks[tickerId].trade; k.size = stockticks[tickerId].size; } else if (tickType==BID_SIZE) { stockticks[tickerId].bs = size; k.bid = stockticks[tickerId].bid; k.bs = stockticks[tickerId].bs; } else if (tickType==ASK_SIZE) { stockticks[tickerId].os = size; k.ask= stockticks[tickerId].ask; k.os = stockticks[tickerId].os; } else return; // not relevant tick info if (k.isValid() && needStock(k.sym)) this->SrvGotTick(k); } }
void TWS_TLWM::tickSize( TickerId tickerId, TickType tickType, int size) { if ((tickerId>-1)&&(tickerId<stocktickers.size()) && needStock(stocktickers[tickerId])) { time_t now; time(&now); CTime ct(now); TLTick k; k.date = (ct.GetYear()*10000) + (ct.GetMonth()*100) + ct.GetDay(); k.time = (ct.GetHour()*100)+ct.GetMinute(); k.sec = ct.GetSecond(); k.sym = stocktickers[tickerId]; if (tickType==LAST_SIZE) { stockticks[tickerId].size = size*100; k.trade = stockticks[tickerId].trade; k.size = stockticks[tickerId].size; } else if (tickType==BID_SIZE) { stockticks[tickerId].bs = size; k.bid = stockticks[tickerId].bid; k.bs = stockticks[tickerId].bs; } else if (tickType==ASK_SIZE) { stockticks[tickerId].os = size; k.ask= stockticks[tickerId].ask; k.os = stockticks[tickerId].os; } else return; // not relevant tick info if (k.isValid() && needStock(k.sym)) this->SrvGotTick(k); } }