Beispiel #1
0
        // 매도 요청
        public void ReqSell(Dictionary <string, string> row)
        {
            // 과부하 막기 위한 슬립
            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 = "03";

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

            string acctNo  = Constants.ACCT;
            string item    = row["item"];
            string tranDay = row["tranDay"];
            int    amt     = int.Parse(row["amt"]);
            int    price   = int.Parse(row["price"]);

            if ("03".Equals(orderCond))
            {
                price = 0;
            }

            _formObj.Logger(Log.매도, "[매도 요청] 종목코드 : {0}, 수량 : {1}", item, amt);

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

            string query = "";

            query += " UPDATE TRAN";
            query += "    SET TRAN_SP = 3";
            query += "      , TIME_3  = NOW()";
            query += "  WHERE TRAN_SP        = 2";
            query += "    AND TRAN_DAY       = '" + tranDay + "'";
            query += "    AND ITEM           = '" + item + "'";
            query += "    AND SELL_ORDER_NO IS NULL";

            _formObj._db.InsertQuery(query);
        }
Beispiel #2
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);
            }
        }