// This method models an operation that may take a long time // to run. It can be cancelled, it can raise an exception, // or it can exit normally and return a result. These outcomes // are chosen randomly. public int TimeConsumingOperation( BackgroundWorker bw, int sleepPeriod) { int result = 0; log.Info("TimeConsumingOperation start"); try { Random rand = new Random(); TotalBalance -= dacStock.매도요청중인금액조회(inqDate); while (!bw.CancellationPending) { log.Info("loop start"); bool exit = false; // tbl_stock_code 를 초기화 및 업데이트를 한다.(하루에 한번) if (!bDoneStockCodeUpdate) { UpdateStockCode(bw); } log.Info("loop UpdateStockCode finished"); /* * if (DateTime.Now.ToString("HHmm").CompareTo("0857") > 0 && * DateTime.Now.ToString("HHmm").CompareTo("0901") < 0&& !b장전시간외조회여부) * { * b장전시간외조회여부 = true; * * trBiz.당일거래량상위요청("1", "2"); * * Thread.Sleep(2000); * * trBiz.당일거래량상위요청("3", "2"); * * Thread.Sleep(2000); * * log.Info("loop 장전시간외대상조회 finished"); * } */ 종목현재가조회(); // 거래량 조회 //trBiz.거래량순조회(); //if (dacStock.당일대상조회(inqDate, "").Count < 7) //{ // // 타겟 종목 선정 // dacStock.SetStockTarget(inqDate); //} // 매수/매도 BuyAndSell(); log.Info("loop BuyAndSell finished"); // 매도요청중인 주문 업데이트 하기 위해. trBiz.실시간미체결요청(); log.Info("loop 실시간미체결요청 finished"); if (최종계좌주문별체결현황요청시간 == DateTime.MinValue || DateTime.Now.AddSeconds(-120) > 최종계좌주문별체결현황요청시간) { trBiz.계좌주문별체결현황요청(); 최종계좌주문별체결현황요청시간 = DateTime.Now; } log.Info("loop 계좌주문별체결현황요청 finished"); Thread.Sleep(3000); 매도완료처리및종목대기상태전환(); log.Info("loop 매도완료처리및종목대기상태전환 finished"); 손절완료처리및종목제외전환(); log.Info("loop 손절완료처리및종목제외전환 finished"); 당일실적 실적 = dacStock.당일실적조회(inqDate); if (실적 == null) { log.Info("실적: null"); } else { log.Info(string.Format("실적 : 매도방식 : {0} 들어간금액 : {1} 실현손익금액 : {2} 증권사수수료 : {3} 거래세 : {4} 현재까지실제수익 : {5} 보유중평가금액손익 : {6} 실제예상수익 : {7}" , 실적.매도방식, 실적.들어간금액, 실적.실현손익금액, 실적.증권사수수료, 실적.거래세, 실적.현재까지실제수익, 실적.보유중평가금액손익, 실적.실제예상수익)); } if (DateTime.Now.ToString("HHmm").CompareTo("1200") >= 0) { // 매수요청중인 종목 취소 List <StockTarget> 매수요청중인대상리스트 = dacStock.종목대상전체조회(inqDate, "매수요청중"); for (int i = 0; i < 매수요청중인대상리스트.Count; i++) { subBiz.매수요청건조회및취소(inqDate, 매수요청중인대상리스트[i].stockCode, "대기"); } } if (DateTime.Now.ToString("HHmm").CompareTo("1530") > 0) { exit = true; } if (exit) { log.Info("loop exit"); break; } log.Info("loop end"); } } catch (Exception ex) { log.Error(ex); } log.Info("TimeConsumingOperation end"); return(result); }