Example #1
0
        public void 손절완료처리및종목제외전환()
        {
            log.Info("손절완료처리및종목제외전환 start");
            // tbl_stock_myorderlist 에서 불러옴
            List <StockMyOrder> 매도정정대상 = dacStock.매도정정대상조회(inqDate);

            for (int i = 0; i < 매도정정대상.Count; i++)
            {
                log.Info("손절완료처리및종목제외전환 : " + JsonConvert.SerializeObject(매도정정대상[i]));

                if (string.IsNullOrWhiteSpace(매도정정대상[i].confirmQty) || "0".Equals(매도정정대상[i].confirmQty))
                {
                    log.Info("confirmQty is 0");
                    continue;
                }

                if (매도정정대상[i].confirmPrice == null)
                {
                    매도정정대상[i].confirmPrice = "0";
                }

                if (string.IsNullOrWhiteSpace(매도정정대상[i].confirmPrice) || "0".Equals(매도정정대상[i].confirmPrice))
                {
                    log.Info("confirmPrice is 0");
                    continue;
                }

                List <StockOrder> orderList = dacStock.tbl_stock_order_주문조회(inqDate, 매도정정대상[i].stockCode, "매도정정", "요청중");

                if (orderList == null || orderList.Count < 1)
                {
                    log.Info("해당 order 없음");
                    continue;
                }

                StockOrder order = orderList[0];

                if (매도정정대상[i].Qty == null)
                {
                    매도정정대상[i].Qty = "0";
                }
                if (string.IsNullOrWhiteSpace(order.Qty))
                {
                    order.Qty = "0";
                }

                int myOrderQty = int.Parse(매도정정대상[i].Qty);
                int orderQty   = int.Parse(order.Qty);

                if (myOrderQty != orderQty)
                {
                    log.Info("Qty 다름");
                    continue;
                }

                if (매도정정대상[i].Price == null)
                {
                    매도정정대상[i].Price = "0";
                }
                if (string.IsNullOrWhiteSpace(order.Price))
                {
                    order.Price = "0";
                }

                int myOrderPrice = int.Parse(매도정정대상[i].Price);
                int orderPrice   = int.Parse(order.Price);

                if (myOrderPrice != orderPrice)
                {
                    log.Info("Price 다름");
                    continue;
                }

                if (string.IsNullOrWhiteSpace(order.orderNo))
                {
                    log.Info("주문번호가 없어서 myorderlist 에서 주문번호 업데이트");
                    dacStock.주문번호업데이트_bySeq(order.Seq, 매도정정대상[i].orderNo);
                }

                // tbl_stock_order 업데이트
                dacStock.매도정정내역으로주문업데이트(inqDate, 매도정정대상[i].orderNo, 매도정정대상[i].stockCode,
                                        매도정정대상[i].confirmQty, 매도정정대상[i].confirmPrice, 매도정정대상[i].orgOrderNo);

                log.Info("주식상태대기로변경 stockCode: " + 매도정정대상[i].stockCode + " confirmQty:" + 매도정정대상[i].confirmQty + " confirmPrice:" + 매도정정대상[i].confirmPrice);
                // tbl_stock_target 업데이트
                dacStock.주식상태대기로변경(inqDate, 매도정정대상[i].stockCode, 매도정정대상[i].confirmQty, 매도정정대상[i].confirmPrice);

                int qty   = string.IsNullOrWhiteSpace(매도정정대상[i].confirmQty) ? 0 : int.Parse(매도정정대상[i].confirmQty);
                int price = string.IsNullOrWhiteSpace(매도정정대상[i].confirmPrice) ? 0 : int.Parse(매도정정대상[i].confirmPrice);

                if (qty * price > 0)
                {
                    TotalBalance += qty * price;

                    // 세금제외
                    TotalBalance -= (int)(qty * price * 0.0028);
                }
            }

            log.Info("손절완료처리및종목제외전환 end");
        }