void CAutoTrader::GetServer_UpdateTrades() { try { TradeRecord *td = NULL; int gtTotal=0,i; td=server_q->TradesGet(>Total); std::set<int>set_tempClosed_Orders,set_resultClosed_Orders; std::set<int>::iterator itgetcticket; bool isCLoseevent=false; CString sFormat,str,closeOrderInfo; AutoTraderInstance=(CAutoTrader*)pObject; for( i=0;i<gttotal;i++)> { //if((td[i].cmd==0 || td[i].cmd==1)) //{ set_tempClosed_Orders.insert(td[i].order); // } } std::set_difference(set_primaryClosed_Orders.begin(), set_primaryClosed_Orders.end(), set_tempClosed_Orders.begin(), set_tempClosed_Orders.end(),std::inserter(set_resultClosed_Orders, set_resultClosed_Orders.end())); //deallocate_container(set_primaryClosed_Orders); set_primaryClosed_Orders.clear(); set_primaryClosed_Orders=set_tempClosed_Orders; for( itgetcticket = set_resultClosed_Orders.begin(); itgetcticket != set_resultClosed_Orders.end(); itgetcticket++ ) { if(*itgetcticket>0) { CString str; str.Format("%d",*itgetcticket); s_closeTrades=str.AllocSysString(); AutoTraderInstance->Fire_Server_closeorders(s_closeTrades); SysFreeString(s_closeTrades); itmap_TradeRecords=map_TradeRecords.find(*itgetcticket); if(itmap_TradeRecords!=map_TradeRecords.end()) { itmap_ClientmanagedRecords = map_ClientmanagedRecords.find(str); if (itmap_ClientmanagedRecords != map_ClientmanagedRecords.end()) { server_closedordernos.push(*itgetcticket); if(itmap_TradeRecords->second.cmd==0) { client_closeorder_buy(csClient_User,itmap_ClientmanagedRecords->second,itmap_TradeRecords->second.volume,itmap_TradeRecords->second.symbol,itmap_ClientmanagedRecords->first); } else { client_closeorder_sell(csClient_User,itmap_ClientmanagedRecords->second,itmap_TradeRecords->second.volume,itmap_TradeRecords->second.symbol,itmap_ClientmanagedRecords->first); } } str.Empty(); std::map<int,traderecord>::iterator itmap_TradeRecordsDel=itmap_TradeRecords; ++itmap_TradeRecords; map_TradeRecords.erase(itmap_TradeRecordsDel); } isCLoseevent=true; } } set_tempClosed_Orders.clear(); set_resultClosed_Orders.clear(); if(isCLoseevent) return;
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)