API2::DATA_TYPES::PRICE API2::Test2::Context::getPrice() { if(_userParams._priceType == FrontEndParameters::BestBid) return reqQryMarketData(_Instrument->getSymbolId())->getBidPrice(0); else if(_userParams._priceType == FrontEndParameters::BestAsk) return reqQryMarketData(_Instrument->getSymbolId())->getAskPrice(0); else return reqQryMarketData(_Instrument->getSymbolId())->getLastTradePrice(); }
void SampleStrategy::onMarketDataEvent(UNSIGNED_LONG symbolId) { API2::DATA_TYPES::PRICE price = reqQryMarketData(symbolId)->getBidPrice(1); API2::DATA_TYPES::QTY qty = _instrument->getStaticData()->marketLot*100; if(_orderWrapper->getLastQuotedPrice() == price) return; #ifdef BENCHMARK_NEW_ORDERS HFT_Start_Timer_Define _orderWrapper->reset(); HFT_Record_Timer(_LNResetOrder); sendNewOrder(price,qty); return; #endif if(_orderWrapper->_isReset) { sendNewOrder(price,qty); } API2::DATA_TYPES::OrderStatus status = reqQryOrderStatus(_orderWrapper->_orderId); // DEBUG_VARSHOW(reqQryDebugLog(), "Order Status:", status); switch(status) { case API2::CONSTANTS::RSP_OrderStatus_FILLED: case API2::CONSTANTS::RSP_OrderStatus_FROZEN: case API2::CONSTANTS::RSP_OrderStatus_CANCELED: sendNewOrder(price,qty); break; case API2::CONSTANTS::RSP_OrderStatus_REPLACED: sendCancelOrder();break; case API2::CONSTANTS::RSP_OrderStatus_CONFIRMED: case API2::CONSTANTS::RSP_OrderStatus_PARTIALLY_FILLED: case API2::CONSTANTS::RSP_OrderStatus_REPLACE_REJECTED: case API2::CONSTANTS::RSP_OrderStatus_CANCEL_REJECTED: sendReplaceOrder(price);break; } }