public void 매도완료처리및종목대기상태전환() { log.Info("매도완료처리및종목대기상태전환 start"); // tbl_stock_myorderlist 에서 불러옴 List <StockMyOrder> 매도완료업데이트대상 = dacStock.매도완료업데이트대상조회(inqDate); log.Info("매도완료업데이트대상 count:" + 매도완료업데이트대상.Count); for (int i = 0; i < 매도완료업데이트대상.Count; i++) { List <StockOrder> orderList = dacStock.tbl_stock_order_주문조회(inqDate, 매도완료업데이트대상[i].stockCode, "매도", "요청중"); if (orderList == null || orderList.Count < 1) { continue; } StockOrder 매도요청중인주문 = orderList[0]; if (매도요청중인주문 == null) { continue; } log.Info("매도완료업데이트대상: " + JsonConvert.SerializeObject(매도완료업데이트대상[i])); log.Info("매도요청중인주문: " + JsonConvert.SerializeObject(매도요청중인주문)); int qty = Util.GetInt(매도완료업데이트대상[i].Qty); int price = Util.GetInt(매도완료업데이트대상[i].Price); int orderQty = Util.GetInt(매도요청중인주문.Qty); int orderPrice = Util.GetInt(매도요청중인주문.Price); // 주문번호가 다르면 제외 if (!string.IsNullOrWhiteSpace(매도요청중인주문.orderNo) && !매도요청중인주문.orderNo.Equals(매도완료업데이트대상[i].orderNo)) { log.Info("주문번호 다름"); continue; } // 수량이나 가격이 다를 경우 제외 if (qty != orderQty || price != orderPrice) { log.Info("수량 or 금액 다름 "); continue; } log.Info("매도완료업데이트 진행"); 매도요청중인주문.ConfirmQty = 매도완료업데이트대상[i].confirmQty; 매도요청중인주문.ConfirmPrice = 매도완료업데이트대상[i].confirmPrice; 매도요청중인주문.Status = "완료"; if (string.IsNullOrWhiteSpace(매도요청중인주문.orderNo)) { 매도요청중인주문.orderNo = 매도완료업데이트대상[i].orderNo; } // tbl_stock_order 업데이트 dacStock.주문정보업데이트_byOrderSeq(매도요청중인주문); // myOrderList 에 동기화필드업데이트 dacStock.주문내역동기화완료처리(매도완료업데이트대상[i].seq); // tbl_stock_target 업데이트 dacStock.주식상태대기로변경(inqDate, 매도완료업데이트대상[i].stockCode, 매도완료업데이트대상[i].confirmQty, 매도완료업데이트대상[i].confirmPrice); if (qty * price > 0) { TotalBalance += qty * price; // 세금제외 TotalBalance -= (int)(qty * price * 0.0033); } // 그 사이 추가매수요청이 있을 수 있기때문에 이 요청을 취소한다. subBiz.매수요청건조회및취소(inqDate, 매도완료업데이트대상[i].stockCode, string.Empty); } log.Info("매도완료처리및종목대기상태전환 end"); }