예제 #1
0
파일: Biz.cs 프로젝트: kim2509/stockManager
        private void 대상종목매도요청(StockTarget 대상종목)
        {
            if (!"매도요청중".Equals(대상종목.status) && Util.GetInt(대상종목.보유수) > 0)
            {
                StockOrder 매도요청할주문 = new StockOrder();
                매도요청할주문.inqDate   = inqDate;
                매도요청할주문.stockCode = 대상종목.stockCode;
                매도요청할주문.stockName = 대상종목.stockName;
                매도요청할주문.Qty       = 대상종목.보유수;
                매도요청할주문.Price     = 대상종목.매입단가;

                SellStock(매도요청할주문, 1.5);
            }
        }
예제 #2
0
        private void 매수완료처리(StockOrder order)
        {
            log.Info("매수완료처리 new : " + JsonConvert.SerializeObject(order));

            StockTarget target = dacStock.당일대상조회(order.inqDate, order.stockCode)[0];

            log.Info("매수완료처리 변경전:" + JsonConvert.SerializeObject(target));

            // tbl_stock_target 업데이트
            dacStock.주식상태매수완료처리로변경(order.inqDate, order.stockCode
                                   , Util.GetInt(order.ConfirmQty), Util.GetInt(order.ConfirmPrice), "추가매수".Equals(order.OrderOption) ? "Y" : "");

            target = dacStock.당일대상조회(order.inqDate, order.stockCode)[0];

            log.Info("매수완료처리 변경후:" + JsonConvert.SerializeObject(target));

            if ("추가매수".Equals(order.OrderOption))
            {
                log.Info("추가매수");

                List <StockOrder> listOrders = dacStock.tbl_stock_order_주문조회(order.inqDate, order.stockCode, "매도", "요청중");

                if (listOrders != null && listOrders.Count > 0)
                {
                    StockOrder 매도요청중주문 = listOrders[0];

                    int resultCode = OpenAPI.매도취소요청(Biz.AccountNo, 매도요청중주문.Seq, 매도요청중주문.orderNo, 매도요청중주문.stockCode, 매도요청중주문.stockName
                                                    , 매도요청중주문.Qty, 매도요청중주문.Price);

                    if (resultCode == 0)
                    {
                        dacStock.주문상태변경(매도요청중주문.Seq, "취소완료");
                    }
                    else
                    {
                        dacStock.주문상태변경(매도요청중주문.Seq, "취소중오류");
                    }
                }
            }

            log.Info("매수완료처리 new end ");
        }
예제 #3
0
파일: Biz.cs 프로젝트: kim2509/stockManager
        private void 호가매도처리(StockTarget 대상종목)
        {
            log.Info("호가매도처리 start");

            종목증감정보  정보    = dacStock.종목최근등락률조회(inqDate, 대상종목.stockCode);
            종목실시간정보 실시간정보 = dacStock.최근한종목가격변동내역조회(inqDate, 대상종목.stockCode);

            if (!"매도요청중".Equals(대상종목.status) && Util.GetInt(대상종목.보유수) > 0)
            {
                log.Info("종목최근등락률조회 결과:" + JsonConvert.SerializeObject(정보));
                log.Info(string.Format("체결강도 : {0} 총매도잔량 : {1} 총매수잔량 : {2}", 실시간정보.체결강도, 실시간정보.총매도잔량, 실시간정보.총매수잔량));

                bool b매도 = false;

                if (정보.총매도잔량증가율 < 0 &&
                    정보.총매수잔량증가율 > 0 &&
                    Util.GetDouble(실시간정보.총매도잔량) / Util.GetDouble(실시간정보.총매수잔량) <= 1.0 &&
                    정보.갯수 == 5)
                {
                    b매도 = true;
                }
                else if (Util.GetInt(대상종목.매입단가) > Util.GetInt(대상종목.currentPrice))
                {
                    b매도 = true;
                }

                if (b매도)
                {
                    StockOrder 매도요청할주문 = new StockOrder();
                    매도요청할주문.inqDate   = inqDate;
                    매도요청할주문.stockCode = 대상종목.stockCode;
                    매도요청할주문.stockName = 대상종목.stockName;
                    매도요청할주문.Qty       = 대상종목.보유수;
                    매도요청할주문.Price     = 대상종목.currentPrice;

                    SellStock(매도요청할주문, 0);
                }
            }

            log.Info("호가매도처리 end");
        }
예제 #4
0
파일: Biz.cs 프로젝트: kim2509/stockManager
        private void 매수완료처리()
        {
            log.Info("매수완료처리및매도요청 start");

            List <StockMyOrder> 매수완료리스트 = dacStock.매수완료된내역조회_myorderlist(inqDate);

            for (int i = 0; i < 매수완료리스트.Count; i++)
            {
                StockMyOrder myOrder = 매수완료리스트[i];

                // 체결되지 않음.
                if (string.IsNullOrWhiteSpace(myOrder.confirmQty) || "0".Equals(myOrder.confirmQty))
                {
                    continue;
                }

                // 동일종목의 tbl_stock_order 리스트 조회
                List <StockOrder> orderList = dacStock.tbl_stock_order_주문조회(inqDate, 매수완료리스트[i].stockCode, "매수", "요청중");

                StockOrder order = null;

                for (int j = 0; j < orderList.Count; j++)
                {
                    order = orderList[j];

                    log.Info("myOrder: " + JsonConvert.SerializeObject(myOrder));
                    log.Info("order: " + JsonConvert.SerializeObject(order));

                    if (myOrder.orderNo.Equals(order.orderNo) ||
                        (int.Parse(myOrder.Qty.Trim()) == int.Parse(order.Qty.Trim()) && int.Parse(myOrder.Price.Trim()) == int.Parse(order.Price.Trim())))
                    {
                        if (string.IsNullOrWhiteSpace(order.orderNo))
                        {
                            // 주문번호가 업데이트 안돼있을 경우 대비
                            order.orderNo = myOrder.orderNo;

                            log.Info("order.orderNo:" + order.orderNo + " seq:" + order.Seq + " stockCode:" + order.stockCode);

                            dacStock.주문정보업데이트(order.Seq, "", order.orderNo, order.stockCode);
                        }

                        // 체결 set
                        order.ConfirmQty   = myOrder.confirmQty;
                        order.ConfirmPrice = myOrder.confirmPrice;
                        order.Status       = "완료";

                        // tbl_stock_order 의 매수요청중을 매수완료로 변경
                        dacStock.주문정보업데이트_byOrderSeq(order);

                        // myOrderList 에 동기화필드업데이트
                        dacStock.주문내역동기화완료처리(myOrder.seq);

                        // 1건만 찾음.
                        break;
                    }
                    else
                    {
                        // 다르면 다른 주문건이라서 매도요청하면 안됨.
                        order = null;
                        log.Info("주문건이 서로 다름.");
                    }
                }

                if (order != null)
                {
                    if ("추가매수".Equals(order.OrderOption))
                    {
                        log.Info("추가매수");

                        // tbl_stock_target 업데이트
                        dacStock.주식상태매수완료처리로변경(order.inqDate, order.stockCode, Util.GetInt(order.ConfirmQty), Util.GetInt(order.ConfirmPrice), "Y");

                        StockTarget target = dacStock.당일대상조회(order.inqDate, order.stockCode)[0];

                        log.Info("추가매수완료처리대상:" + JsonConvert.SerializeObject(target));

                        // 추가매수로 매입단가가 내려갔을 테니 매도 목표가도 다시 정정한다.
                        int price = int.Parse(target.매입단가);

                        List <StockOrder> listOrders = dacStock.tbl_stock_order_주문조회(order.inqDate, order.stockCode, "매도", "요청중");

                        if (listOrders != null && listOrders.Count > 0)
                        {
                            StockOrder 매도요청중주문 = listOrders[0];

                            int resultCode = OpenAPI.매도취소요청(AccountNo, 매도요청중주문.Seq, 매도요청중주문.orderNo, 매도요청중주문.stockCode, 매도요청중주문.stockName
                                                            , 매도요청중주문.Qty, 매도요청중주문.Price);

                            //매도정정요청(order.inqDate, 매도요청중주문.orderNo, order.stockCode, order.stockName, int.Parse(order.Qty), int.Parse(order.Price));

                            if (resultCode == 0)
                            {
                                dacStock.주문상태변경(매도요청중주문.Seq, "취소완료");
                            }
                            else
                            {
                                dacStock.주문상태변경(매도요청중주문.Seq, "취소중오류");
                            }
                        }
                    }
                    else
                    {
                        dacStock.주식상태매수완료처리로변경(order.inqDate, order.stockCode, int.Parse(order.ConfirmQty), int.Parse(order.ConfirmPrice), "");
                    }
                }
            }

            log.Info("매수완료처리및매도요청 end");
        }