Exemplo n.º 1
0
        public void BuyAndSell()
        {
            try
            {
                log.Info("BuyAndSell start");

                string 요일 = DateTime.Now.ToString("ddd");

                if (요일.Equals("토") || 요일.Equals("일"))
                {
                    return;
                }

                // 09시 10분부터 15시 20분까지 매수/매도
                if (DateTime.Now.ToString("HHmm").CompareTo("0900") < 0 ||
                    DateTime.Now.ToString("HHmm").CompareTo("1530") > 0)
                {
                    return;
                }

                // 3시까지만 매수(10종목만 매수)
                if (DateTime.Now.ToString("HHmm").CompareTo("1140") <= 0)  //&& 매도요청중인종목리스트.Count < 10)
                {
                    List <StockTarget> targetList = dacStock.금일매수대상목록조회(inqDate);

                    for (int i = 0; i < targetList.Count; i++)
                    {
                        종목증감정보  정보    = dacStock.종목최근등락률조회(inqDate, targetList[i].stockCode);
                        종목실시간정보 실시간정보 = dacStock.최근한종목가격변동내역조회(inqDate, targetList[i].stockCode);

                        log.Info("종목최근등락률조회 결과:" + JsonConvert.SerializeObject(정보));
                        log.Info(string.Format("체결강도 : {0} 총매도잔량 : {1} 총매수잔량 : {2}", 실시간정보.체결강도, 실시간정보.총매도잔량, 실시간정보.총매수잔량));

                        if (정보 == null)
                        {
                            continue;
                        }

                        log.Info("매수대상 :" + JsonConvert.SerializeObject(targetList[i]));

                        string 매수조건 = 매수여부판단(정보, 실시간정보);
                        log.Info("매수조건 : " + 매수조건);

                        if (!"매수안함".Equals(매수조건))
                        {
                            int price = Util.GetInt(targetList[i].currentPrice);

                            int waterCnt = 0;
                            if (!string.IsNullOrWhiteSpace(targetList[i].waterCnt))
                            {
                                waterCnt = int.Parse(targetList[i].waterCnt);
                            }

                            BuyStock(inqDate, targetList[i].stockCode, targetList[i].stockName, price, "", waterCnt, 매수조건);
                        }
                    }
                }

                // 매수요청 후 체결된 애들 조회(tbl_stock_myorderlist)
                매수완료처리();

                List <StockTarget> 당일대상리스트 = dacStock.당일대상조회(inqDate, "");

                for (int i = 0; i < 당일대상리스트.Count; i++)
                {
                    if ("일반".Equals(당일대상리스트[i].매도방식))
                    {
                        대상종목매도요청(당일대상리스트[i]);
                    }
                    else
                    {
                        호가매도처리(당일대상리스트[i]);
                    }
                }

                추가매수프로세스();

                수익률에따른손절처리();

                장마감전보유종목정리();
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            finally
            {
                log.Info("BuyAndSell end");
            }
        }