Esempio n. 1
0
        // 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);
        }