Example #1
0
        // 지정가 매수 요청(mode가 99가 아니고, 가격이 없을 경우 시장가 매수)
        public void ReqBuyManual(ArrayList arr)
        {
            foreach (Dictionary <string, string> row in arr)
            {
                // 과부하 막기 위한 슬립
                Delay(Constants.SLEEP_TIME);

                // 거래구분 취득
                // 00:지정가, 03:시장가, 05:조건부지정가, 06:최유리지정가, 07:최우선지정가,
                // 10:지정가IOC, 13:시장가IOC, 16:최유리IOC, 20:지정가FOK, 23:시장가FOK,
                // 26:최유리FOK, 61:장개시전시간외, 62:시간외단일가매매, 81:시간외종가
                string orderCond = "00";

                string mode  = row["MODE"];
                int    price = int.Parse(row["PRICE"]);

                if (price == 0 && mode != "99")
                {
                    orderCond = "03";
                }

                // 매매구분 취득
                // 1:신규매수, 2:신규매도 3:매수취소, 4:매도취소, 5:매수정정, 6:매도정정
                int trType = 1;

                string acctNo = Constants.ACCT;

                string item = row["ITEM"];
                int    amt  = int.Parse(row["CNT"]);

                _formObj.Logger(Log.매수, "[지정가 매수 요청] : 종목 : {0}, 수량 : {1}, 가격 : {2}", item, amt, price);

                // 주식주문
                _formObj.OpenApiOrder(
                    Constants.REQ_BUY_ADD       // 화면번호
                    , acctNo                    // 계좌번호
                    , trType                    // 매매구분
                    , item                      // 종목코드
                    , amt                       // 주문수량
                    , price                     // 주문가격
                    , orderCond                 // 거래구분
                    , ""                        // 원주문번호
                    );

                string today = DateTime.Now.ToString("yyyyMMdd");
                _formObj._buy.SaveBuyReq(today, item, mode);

                SaveBuyManualReq(today, item, mode, amt, price);
            }
        }
Example #2
0
        // 계좌 DB잔고 종목 조회
        public void RetDbAcctItem(string today)
        {
            _formObj.Logger(Log.매도, "[계좌 DB잔고 종목 조회 시작]");

            string query = "";

            query += " SELECT A.MODE";
            query += "      , A.ITEM";
            query += "      , SUBSTR(A.TRAN_ID,1,8)  AS BDAY";
            query += "      , IFNULL(B.TRAN_DAY,'-') AS NDAY";
            query += "      , D.SEQ - C.SEQ          AS SEQ_DIFF";
            query += "   FROM TRAN A";
            query += "   LEFT";
            query += "  OUTER";
            query += "   JOIN TRAN_DAY_CAL B";
            query += "     ON SUBSTR(A.TRAN_ID,1,8) = B.POOL_DAY";
            query += "   JOIN TRAN_DAY_CAL C";
            query += "     ON SUBSTR(A.TRAN_ID,1,8) = C.TRAN_DAY";
            query += "   JOIN TRAN_DAY_CAL D";
            query += "     ON A.TRAN_DAY = D.TRAN_DAY";
            query += "  WHERE A.TRAN_DAY = '" + today + "'";
            query += "    AND A.TRAN_SP  = 2";
            query += "    AND A.SELL_ORDER_NO IS NULL";
            query += "  ORDER BY A.MODE";

            _boughtItems.Clear();
            _boughtItems = new Dictionary <string, string>();

            ArrayList boughtList = _formObj._db.SelectQuery(query);

            foreach (Dictionary <string, string> tmp in boughtList)
            {
                //_boughtItems.Add(tmp["ITEM"], tmp["MODE"] + ";" + tmp["BDAY"] + ";" + tmp["NDAY"]);
                string temp = tmp["MODE"] + ";" + tmp["BDAY"] + ";" + tmp["NDAY"] + ";" + tmp["SEQ_DIFF"];
                _boughtItems[tmp["ITEM"]] = temp;
            }

            RetAcctItem();
        }
Example #3
0
        // 로그인 이벤트 핸들러
        public void ApiLoginR(string szCode, string szMsg)
        {
            if (szCode == "0000")
            {
                ApiRealMarketStatus();

                _formObj._sttg = new Strategy(_formObj);

                _formObj.ReqThreadStart();
            }

            _formObj.Logger(Log.일반, "[로그인 결과 : {0}, {1}]", szCode, szMsg);
        }