Ejemplo n.º 1
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, multiple, e);

            if (temp.Item1 != null)
            {
                for (int i = 0; i < temp.Item1.Length; i++)
                {
                    SendMessage(single[i], temp.Item1[i]);
                }
            }

            while (temp.Item2?.Count > 0)
            {
                var futures = temp.Item2.Dequeue();

                if (int.TryParse(futures[4], out int purchase) && int.TryParse(futures[5], out int current))
                {
                    var param = new SendSecuritiesAPI(new string[] { futures[0], futures[1].Split('F')[0].Trim().Replace("_", string.Empty), futures[2], string.Empty, futures[3], futures[0][1].Equals('0') ? futures[4].Insert(futures[4].Length - 2, ".") : futures[4].Remove(futures[4].Length - 2, 2), futures[0][1].Equals('0') ? futures[5].Insert(futures[5].Length - 2, ".") : futures[5].Remove(futures[5].Length - 2, 2), string.Empty, futures[6], ((current / (double)purchase - 1) * 0x64).ToString("F5") });

                    if (param.Convey is Tuple <string, string, int, dynamic, dynamic, long, double> balance && Connect.HoldingStock.TryGetValue(balance.Item1, out Holding hs))
                    {
                        hs.Code     = balance.Item1;
                        hs.Quantity = balance.Item3;
                        hs.Purchase = futures[0][1].Equals('0') ? (double)balance.Item4 : (int)balance.Item4;
                        hs.Current  = futures[0][1].Equals('0') ? (double)balance.Item5 : (int)balance.Item5;
                        hs.Revenue  = balance.Item6;
                        hs.Rate     = balance.Item3 > 0 ? balance.Item7 : -balance.Item7;
                        Connect.HoldingStock[balance.Item1] = hs;
                    }
                    Send?.Invoke(this, param);
                }
            }
        }
Ejemplo n.º 2
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var order = API.GetCommData(e.sTrCode, e.sRQName, 0, ordNo);

            Send?.Invoke(this, new SendSecuritiesAPI(order));
            SendMessage(order, e.sScrNo);
        }
Ejemplo n.º 3
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, e.sRQName.Equals(name) ? multi : null, e);
            var code = e.sRQName.Split(';')[1];

            if (temp.Item1 != null)
            {
                if (code.StartsWith("2") || code.StartsWith("3"))
                {
                    Send?.Invoke(this, new SendSecuritiesAPI(code, temp.Item1[0x48].Trim(), temp.Item1[0x3F].Trim().Substring(2), temp.Item1[0x33].Trim(), 0));
                }

                else if (code[0].Equals('1'))
                {
                    SendMessage(temp.Item1[0x48].Trim(), Count.ToString("N0"));
                }
            }
            while (temp.Item2?.Count > 0)
            {
                foreach (var pop in temp.Item2.Dequeue())
                {
                    SendMessage(e.sRQName, pop);
                }
            }
        }
Ejemplo n.º 4
0
        private void onReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            //MessageBox.Show("요청 결과가 전달되었습니다.");
            MessageBox.Show(e.sRQName + " ||| " + e.sTrCode);
            if (e.sRQName.Equals("계좌잔고평가내역"))
            {
                int 변수총매입금액   = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총매입금액"));
                int 변수추정예탁자산  = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "추정예탁자산"));
                int 변수총평가금액   = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총평가금액"));
                int 변수총평가손익금액 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총평가손익금액"));

                예수금.Text  = String.Format("{0:0,0}", 변수추정예탁자산);
                총매입금.Text = String.Format("{0:0,0}", 변수총매입금액);
                총평가금.Text = String.Format("{0:0,0}", 변수총평가금액);
                총손익금.Text = String.Format("{0:0,0}", 변수총평가손익금액);

                //멀티 데이터
                int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName);
                for (int i = 0; i < count; i++)
                {
                    string 종목번호1 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목번호").TrimStart('0');
                    string 종목명1  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    double 보유수량1 = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "보유수량"));
                    double 매입가1  = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "매입가"));
                    double 현재가1  = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"));
                    double 평가손익1 = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "평가손익"));
                    double 수익률1  = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "수익률(%)"));

                    StockBalance stockBalance = new StockBalance(종목번호1, 종목명1, 보유수량1, 매입가1, 현재가1, 평가손익1, 수익률1);
                    stockBalances.Add(stockBalance);
                }
                balanceDataGridView.DataSource = stockBalances;
            }
        }
Ejemplo n.º 5
0
        public void UpdateTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent trEvent)
        {
            switch (trEvent.sRQName)
            {
            case "주식일봉차트조회":
            case "주식주봉차트조회":
            case "주식월봉차트조회":
            case "주식분봉차트조회":
            case "주식틱봉차트조회":
                SetChartInfo(trEvent.sTrCode, trEvent.sRQName);
                break;

            case "주식기본정보요청":
                SetBaseStockInfo(trEvent.sTrCode, trEvent.sRQName);
                break;

            case "주식호가정보요청":
                SetOrderBookInfo(trEvent.sTrCode, trEvent.sRQName);
                break;

            case "계좌평가현황요청":
                SetAssetListView(trEvent.sTrCode, trEvent.sRQName);
                break;

            case "조건검색종목":
                SetConditionStocks(trEvent);
                break;
                //case "계좌평가잔고내역요청":
                //    SetTotalAssetView(trEvent.sTrCode, trEvent.sRQName);
                //    break;
            }
        }
Ejemplo n.º 6
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, e.sRQName.Equals(name) ? multi : null, e);
            var code = e.sRQName.Split(';')[1];

            if (temp.Item1 is not null)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(code, temp.Item1[0x48].Trim(), temp.Item1[0x3F].Trim()[2..], temp.Item1[0x33].Trim(), 0));
Ejemplo n.º 7
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, null, e);

            if (temp.Item1 != null)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(temp.Item1[0x12], temp.Item1[7]));
            }
        }
Ejemplo n.º 8
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var response = base.OnReceiveTrData(null, multiple, e);

            if (response.Item2 is Queue <string[]> && response.Item2.Count > 0)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(response.Item2, name));
            }
        }
Ejemplo n.º 9
0
        private static void AxKHOpenAPI1_OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            Debug.Info(e.sRQName + ":" + e.sTrCode + ":" + e.sMessage);

            if (_trs.TryGetValue(e.sTrCode, out TrCallback callback))
            {
                _trs.Remove(e.sTrCode);
                callback(e);
            }
        }
Ejemplo n.º 10
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var param = base.OnReceiveTrData(null, multi, e).Item2;

            while (param.Count > 0)
            {
                var str  = param.Dequeue();
                var code = str[0].Trim();
                Send?.Invoke(this, new SendSecuritiesAPI(code, str[1].Trim(), API.GetMasterStockState(str[0].Trim()), str[3].Trim(), API.KOA_Functions(info, code).Split(';')[0].Contains(market) ? 1 : 2));
            }
        }
Ejemplo n.º 11
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(opSingle, opMultiple, e);

            if (temp.Item1 != null)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(temp.Item1[15], temp.Item1[2], temp.Item1[7]));
            }

            if (temp.Item2 != null && temp.Item2.Count > 0)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(temp.Item2));
            }
        }
Ejemplo n.º 12
0
 private void API_OnReceiveTrDataMulti <TOut>(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e) where TOut : GatherTickData.Presenters.EntityBase
 {
     Console.WriteLine("[OnReceivTrData:e.sRQName]=" + e.sRQName);
     Console.WriteLine("[OnReceivTrData:e.sTrCode]=" + e.sTrCode);
     if (e.sRQName == "주식기본정보요청")
     {
         Console.WriteLine(" [싱글데이터][종목명]: " + APIContext.API.GetCommData(e.sTrCode, e.sRQName, 0, "종목명").Trim());
         Console.WriteLine(" [싱글데이터][액면가]: " + APIContext.API.GetCommData(e.sTrCode, e.sRQName, 0, "액면가").Trim());
     }
     //OPT10001_주식기본정보 result = APIContext.API.GetSingleData<OPT10001_주식기본정보>();
     // GetSingleData 수정
     // e를 파라미터로 받아서, GetSingleData안에서 e.name이나 이런걸로 type으로 outputinstance를 생성하여 entity 매핑!!!!!!!!
     MultiOutput = APIContext.API.GetMultiData <TOut>() as IList <EntityBase>;
     //_autoResetEvent.Set();
     _asyncWait.Set();
 }
Ejemplo n.º 13
0
 public void OnReceiveTrDataEventHandler(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
 {
     if (OnReceiveTrDataUri != null)
     {
         JObject body = new JObject();
         body["sScrNo"]      = e.sScrNo;
         body["sRQName"]     = e.sRQName;
         body["sTrCode"]     = e.sTrCode;
         body["sRecordName"] = e.sRecordName;
         body["sPrevNext"]   = e.sPrevNext;
         body["nDataLength"] = e.nDataLength;
         body["sErrorCode"]  = e.sErrorCode;
         body["sMessage"]    = e.sMessage;
         body["sSplmMsg"]    = e.sSplmMsg;
         HttpContent content = new StringContent(body.ToString(), Encoding.UTF8, "application/json");
         client.PostAsync(OnReceiveTrDataUri, content);
     }
 }
Ejemplo n.º 14
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, multiple, e);

            if (temp.Item1 is not null)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(single, temp.Item1));
            }

            if (temp.Item2 is not null && temp.Item2.Count > 0)
            {
                var queue = new Queue <ShareInvest.Catalog.OpenAPI.OPW00004>();

                while (temp.Item2.TryDequeue(out string[] dequeue))
                {
                    if (int.TryParse(dequeue[0xE], out int sales) && int.TryParse(dequeue[0xD], out int pur) && int.TryParse(dequeue[0xC], out int pre_sales) && int.TryParse(dequeue[0xB], out int pre_purchase) && long.TryParse(dequeue[0xA], out long balance) && long.TryParse(dequeue[9], out long purchase) && double.TryParse(dequeue[7].Insert(dequeue[7].Length - 6, "."), out double rate) && long.TryParse(dequeue[6], out long amount) && long.TryParse(dequeue[5], out long evaluation) && int.TryParse(dequeue[4], out int current) && int.TryParse(dequeue[3], out int average) && int.TryParse(dequeue[2], out int quantity))
                    {
                        queue.Enqueue(new ShareInvest.Catalog.OpenAPI.OPW00004
                        {
                            Account    = Value.Split(';')[0],
                            Code       = dequeue[0],
                            Name       = dequeue[1],
                            Quantity   = quantity,
                            Average    = average,
                            Current    = current,
                            Evaluation = evaluation,
                            Amount     = amount,
                            Rate       = rate,
                            Loan       = dequeue[8],
                            Purchase   = purchase,
                            Balance    = balance,
                            PreviousPurchaseQuantity = pre_purchase,
                            PreviousSalesQuantity    = pre_sales,
                            PurchaseQuantity         = pur,
                            SalesQuantity            = sales
                        });
                    }
                }
                if (queue.Count > 0)
                {
                    Send?.Invoke(this, new SendSecuritiesAPI(queue));
                }
            }
        }
Ejemplo n.º 15
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            if (int.TryParse(e.sPrevNext, out int next))
            {
                var temp = base.OnReceiveTrData(opSingle, opMutiple, e);
                var tr   = Connect.TR.First(o => o.GetType().Name.Substring(1).Equals(e.sTrCode.Substring(1)) && o.RQName.Equals(e.sRQName));

                while (temp.Item2?.Count > 0)
                {
                    var param = temp.Item2.Dequeue();
                    var date  = DateTime.Now.AddYears(-1).ToString(format);

                    if (string.IsNullOrEmpty(param[8]) == false && param[4].CompareTo(date) > 0 &&
                        int.TryParse(param[8], out int revise) && param[9].Equals("0.00") == false)
                    {
                        storage.Push(new ShareInvest.Catalog.OpenAPI.RevisedStockPrice
                        {
                            Code   = temp.Item1[0],
                            Name   = API.GetMasterCodeName(temp.Item1[0]),
                            Revise = Enum.GetName(typeof(ShareInvest.Catalog.Request.RevisedStockPrice), revise),
                            Rate   = param[9],
                            Date   = param[4].Substring(2),
                            Price  = param[1]
                        });
                    }
                    else if (param[4].CompareTo(date) < 0)
                    {
                        next = 0;
                    }
                }
                if (next > 0)
                {
                    tr.PrevNext = next;
                    SendMessage(e.sScrNo, e.sRQName);
                    Connect.GetInstance(API).InputValueRqData(tr);
                }
                else
                {
                    Send?.Invoke(this, new SendSecuritiesAPI(storage, temp.Item1[0]));
                }
            }
        }
Ejemplo n.º 16
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(single, multi, e);

            if (temp.Item1 != null)
            {
                foreach (var str in temp.Item1)
                {
                    Send?.Invoke(this, new SendSecuritiesAPI(str));
                }
            }

            while (temp.Item2?.Count > 0)
            {
                foreach (var pop in temp.Item2.Dequeue())
                {
                    SendMessage(code, pop);
                }
            }
        }
Ejemplo n.º 17
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            if (int.TryParse(e.sPrevNext, out int next))
            {
                var temp = OnReceiveTrData(opSingle, opMutiple, e);
                var tr   = Connect.TR.First(o => o.GetType().Name.Substring(1).Equals(e.sTrCode.Substring(1)) && o.RQName.Equals(e.sRQName));

                while (temp.Item2?.Count > 0)
                {
                    var param = temp.Item2.Dequeue();
                    storage.Push(string.Concat(param[2].Substring(2), ";", param[0], ";", param[1]));
                }
                if (next > 0 && temp.Item1[1].Equals(e.sRQName) == false)
                {
                    tr.PrevNext = next;
                    SendMessage(e.sScrNo, e.sRQName);
                    Connect.GetInstance(API).InputValueRqData(tr);
                }
                else
                {
                    Send?.Invoke(this, new SendSecuritiesAPI(temp.Item1[0].Trim(), storage));
                }
            }
        }
Ejemplo n.º 18
0
        //public void SetTotalAssetView(string trCode, string rqName)
        //{
        //    long totalBuyingAmount = long.Parse(apiModel.GetCommData(trCode, rqName, 0, "총매입금액"));
        //    long totalEstimatedAmount = long.Parse(apiModel.GetCommData(trCode, rqName, 0, "총평가금액"));
        //    long totalEarningAmount = long.Parse(apiModel.GetCommData(trCode, rqName, 0, "총평가손익금액"));
        //    float totalEarningPercent = float.Parse(apiModel.GetCommData(trCode, rqName, 0, "총수익률(%)"));
        //}

        public void SetConditionStocks(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            apiModel.SetRequestType(e.sTrCode, e.sRQName);
            int count = apiModel.GetRepeatCnt(e.sTrCode, e.sRQName);

            mainView.StockList.BeginUpdate();
            mainView.StockList.Items.Clear();
            for (int i = 0; i < count; i++)
            {
                string stockCode  = apiModel.GetRequestValue <string>("종목코드", i);
                string stockName  = apiModel.GetRequestValue <string>("종목명", i);
                string upDownRate = apiModel.GetRequestValue <string>("등락율", i) + '%';
                string volume     = apiModel.GetRequestValue <string>("거래량", i);

                ListViewItem viewItem = new ListViewItem(stockCode);
                viewItem.SubItems.Add(stockName);
                viewItem.SubItems.Add(upDownRate);
                viewItem.SubItems.Add(volume);
                viewItem.ImageIndex = 0;

                mainView.StockList.Items.Add(viewItem);
            }
            mainView.StockList.EndUpdate();
        }
Ejemplo n.º 19
0
        internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = base.OnReceiveTrData(opSingle, opMultiple, e);

            if (temp.Item1 != null)
            {
                Send?.Invoke(this, new SendSecuritiesAPI(temp.Item1[15], temp.Item1[2], temp.Item1[7]));
            }

            if (long.TryParse(temp.Item1[7], out long available))
            {
                Connect.Cash = available;
                var now = DateTime.Now;

                while (temp.Item2?.Count > 0)
                {
                    var param = new SendSecuritiesAPI(temp.Item2.Dequeue());

                    if (param.Convey is Tuple <string, string, int, dynamic, dynamic, long, double> balance && Connect.HoldingStock.TryGetValue(balance.Item1, out Holding hs) && API.GetMasterStockState(balance.Item1).Contains(transactionSuspension) == false)
                    {
                        if (hs.Quantity == 0 && Connect.Cash > 0 && now.Hour == 8 && now.Minute > 0x35)
                        {
                            int  sell, buy, upper, lower, bPrice, sPrice;
                            uint quantity = (uint)balance.Item3, price = uint.TryParse(API.GetMasterLastPrice(hs.Code), out uint before) ? before : 0;
                            var  stock   = API.KOA_Functions(info, hs.Code).Split(';')[0].Contains(market);
                            var  connect = Connect.GetInstance(API);
                            var  account = Value.Split(';')[0];

                            switch (hs.FindStrategics)
                            {
                            case SatisfyConditionsAccordingToTrends sc:
                                upper = (int)(price * 1.3);
                                lower = (int)(price * 0.7);

                                if (sc.ReservationSellQuantity > 0)
                                {
                                    sell         = (int)(balance.Item4 * (1 + sc.ReservationSellRate));
                                    sPrice       = hs.GetStartingPrice(sell, stock);
                                    sPrice       = sPrice < lower ? lower + hs.GetQuoteUnit(sPrice, stock) : sPrice;
                                    hs.SellPrice = sPrice;

                                    while (sPrice < upper && quantity-- > 0)
                                    {
                                        SendMessage(sPrice.ToString("C0"), string.Empty);
                                        connect.SendOrder(new SendOrder
                                        {
                                            RQName     = balance.Item2,
                                            ScreenNo   = connect.LookupScreenNo,
                                            AccNo      = account,
                                            OrderType  = (int)OpenOrderType.신규매도,
                                            Code       = hs.Code,
                                            Qty        = sc.ReservationSellQuantity,
                                            Price      = sPrice,
                                            HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                            OrgOrderNo = string.Empty
                                        });
                                        for (int i = 0; i < sc.ReservationSellUnit; i++)
                                        {
                                            sPrice += hs.GetQuoteUnit(sPrice, stock);
                                        }
                                    }
                                }
                                if (sc.ReservationBuyQuantity > 0)
                                {
                                    buy         = (int)(balance.Item4 * (1 - sc.ReservationBuyRate));
                                    hs.BuyPrice = hs.GetStartingPrice(buy, stock);
                                    bPrice      = hs.GetStartingPrice(lower, stock);

                                    while (bPrice < upper && bPrice < buy && Connect.Cash > bPrice * (1.5e-4 + 1))
                                    {
                                        connect.SendOrder(new SendOrder
                                        {
                                            RQName     = balance.Item2,
                                            ScreenNo   = connect.LookupScreenNo,
                                            AccNo      = account,
                                            OrderType  = (int)OpenOrderType.신규매수,
                                            Code       = hs.Code,
                                            Qty        = sc.ReservationBuyQuantity,
                                            Price      = bPrice,
                                            HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                            OrgOrderNo = string.Empty
                                        });
                                        for (int i = 0; i < sc.ReservationBuyUnit; i++)
                                        {
                                            bPrice += hs.GetQuoteUnit(bPrice, stock);
                                        }

                                        Connect.Cash -= (long)(bPrice * (1.5e-4 + 1));
                                        SendMessage(bPrice.ToString("C0"), Connect.Cash.ToString("C0"));
                                    }
                                }
                                break;

                            case TrendsInValuation tv:
                                upper = (int)(price * 1.3);
                                lower = (int)(price * 0.7);

                                if (tv.ReservationSubtractionalQuantity > 0)
                                {
                                    sell   = (int)(balance.Item4 * (1 + tv.Subtraction));
                                    sPrice = hs.GetStartingPrice(sell, stock);
                                    sPrice = sPrice < lower ? lower + hs.GetQuoteUnit(sPrice, stock) : sPrice;

                                    while (sPrice < upper && quantity-- > 0)
                                    {
                                        SendMessage(sPrice.ToString("C0"), string.Empty);
                                        connect.SendOrder(new SendOrder
                                        {
                                            RQName     = balance.Item2,
                                            ScreenNo   = connect.LookupScreenNo,
                                            AccNo      = account,
                                            OrderType  = (int)OpenOrderType.신규매도,
                                            Code       = hs.Code,
                                            Qty        = tv.ReservationSubtractionalQuantity,
                                            Price      = sPrice,
                                            HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                            OrgOrderNo = string.Empty
                                        });
                                        for (int i = 0; i < tv.SubtractionalUnit; i++)
                                        {
                                            sPrice += hs.GetQuoteUnit(sPrice, stock);
                                        }
                                    }
                                }
                                if (tv.ReservationAddtionalQuantity > 0)
                                {
                                    buy    = (int)(balance.Item4 * (1 - tv.Addition));
                                    bPrice = hs.GetStartingPrice(lower, stock);

                                    while (bPrice < upper && bPrice < buy && Connect.Cash > bPrice * (1.5e-4 + 1))
                                    {
                                        connect.SendOrder(new SendOrder
                                        {
                                            RQName     = balance.Item2,
                                            ScreenNo   = connect.LookupScreenNo,
                                            AccNo      = account,
                                            OrderType  = (int)OpenOrderType.신규매수,
                                            Code       = hs.Code,
                                            Qty        = tv.ReservationAddtionalQuantity,
                                            Price      = bPrice,
                                            HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                            OrgOrderNo = string.Empty
                                        });
                                        for (int i = 0; i < tv.AdditionalUnit; i++)
                                        {
                                            bPrice += hs.GetQuoteUnit(bPrice, stock);
                                        }

                                        Connect.Cash -= (long)(bPrice * (1.5e-4 + 1));
                                        SendMessage(bPrice.ToString("C0"), Connect.Cash.ToString("C0"));
                                    }
                                }
                                break;

                            case TrendToCashflow tc when tc.ReservationQuantity > 0:
                                sell   = (int)(balance.Item4 * (1 + tc.ReservationRevenue));
                                buy    = (int)(balance.Item4 * (1 - tc.Addition));
                                upper  = (int)(price * 1.3);
                                lower  = (int)(price * 0.7);
                                bPrice = hs.GetStartingPrice(lower, stock);
                                sPrice = hs.GetStartingPrice(sell, stock);
                                sPrice = sPrice < lower ? lower + hs.GetQuoteUnit(sPrice, stock) : sPrice;

                                while (sPrice < upper && quantity-- > 0)
                                {
                                    SendMessage(sPrice.ToString("C0"), string.Empty);
                                    connect.SendOrder(new SendOrder
                                    {
                                        RQName     = balance.Item2,
                                        ScreenNo   = connect.LookupScreenNo,
                                        AccNo      = account,
                                        OrderType  = (int)OpenOrderType.신규매도,
                                        Code       = hs.Code,
                                        Qty        = tc.ReservationQuantity,
                                        Price      = sPrice,
                                        HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                        OrgOrderNo = string.Empty
                                    });
                                    for (int i = 0; i < tc.Unit; i++)
                                    {
                                        sPrice += hs.GetQuoteUnit(sPrice, stock);
                                    }
                                }
                                while (bPrice < upper && bPrice < buy && Connect.Cash > bPrice * (1.5e-4 + 1))
                                {
                                    connect.SendOrder(new SendOrder
                                    {
                                        RQName     = balance.Item2,
                                        ScreenNo   = connect.LookupScreenNo,
                                        AccNo      = account,
                                        OrderType  = (int)OpenOrderType.신규매수,
                                        Code       = hs.Code,
                                        Qty        = tc.ReservationQuantity,
                                        Price      = bPrice,
                                        HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                        OrgOrderNo = string.Empty
                                    });
                                    for (int i = 0; i < tc.Unit; i++)
                                    {
                                        bPrice += hs.GetQuoteUnit(bPrice, stock);
                                    }

                                    Connect.Cash -= (long)(bPrice * (1.5e-4 + 1));
                                    SendMessage(bPrice.ToString("C0"), Connect.Cash.ToString("C0"));
                                }
                                break;

                            case TrendsInStockPrices ts when ts.Setting.Equals(Setting.Reservation):
                                sell = (int)(balance.Item4 * (1 + ts.RealizeProfit));

                                buy    = (int)(balance.Item4 * (1 - ts.AdditionalPurchase));
                                upper  = (int)(price * 1.3);
                                lower  = (int)(price * 0.7);
                                bPrice = hs.GetStartingPrice(lower, stock);
                                sPrice = hs.GetStartingPrice(sell, stock);
                                sPrice = sPrice < lower ? lower + hs.GetQuoteUnit(sPrice, stock) : sPrice;

                                while (sPrice < upper && quantity-- > 0)
                                {
                                    SendMessage(sPrice.ToString("C0"), string.Empty);
                                    connect.SendOrder(new SendOrder
                                    {
                                        RQName     = balance.Item2,
                                        ScreenNo   = connect.LookupScreenNo,
                                        AccNo      = account,
                                        OrderType  = (int)OpenOrderType.신규매도,
                                        Code       = hs.Code,
                                        Qty        = ts.Quantity,
                                        Price      = sPrice,
                                        HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                        OrgOrderNo = string.Empty
                                    });
                                    for (int i = 0; i < ts.QuoteUnit; i++)
                                    {
                                        sPrice += hs.GetQuoteUnit(sPrice, stock);
                                    }
                                }
                                while (bPrice < upper && bPrice < buy && Connect.Cash > bPrice * (1.5e-4 + 1))
                                {
                                    connect.SendOrder(new SendOrder
                                    {
                                        RQName     = balance.Item2,
                                        ScreenNo   = connect.LookupScreenNo,
                                        AccNo      = account,
                                        OrderType  = (int)OpenOrderType.신규매수,
                                        Code       = hs.Code,
                                        Qty        = ts.Quantity,
                                        Price      = bPrice,
                                        HogaGb     = ((int)HogaGb.지정가).ToString("D2"),
                                        OrgOrderNo = string.Empty
                                    });
                                    for (int i = 0; i < ts.QuoteUnit; i++)
                                    {
                                        bPrice += hs.GetQuoteUnit(bPrice, stock);
                                    }

                                    Connect.Cash -= (long)(bPrice * (1.5e-4 + 1));
                                    SendMessage(bPrice.ToString("C0"), Connect.Cash.ToString("C0"));
                                }
                                break;
                            }
                        }
                        hs.Code     = balance.Item1;
                        hs.Quantity = balance.Item3;
                        hs.Purchase = (int)balance.Item4;
                        hs.Current  = (int)balance.Item5;
                        hs.Revenue  = balance.Item6;
                        hs.Rate     = balance.Item7;
                        Connect.HoldingStock[balance.Item1] = hs;
                    }
                    Send?.Invoke(this, param);
                }
            }
        }
Ejemplo n.º 20
0
        public void OnTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            //MessageBox.Show("ok!!"+e.sRQName+e.sTrCode);
            if (e.sRQName == "계좌잔고평가내역")
            {
                int buyingPrice2   = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총매입금액"));
                int ballanceAsset  = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "추정예탁자산"));
                int estimatePrice2 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총평가금액"));
                int estimateProfit = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "총평가손익금액"));

                buyingPriceLab.Text    = buyingPrice2.ToString();
                ballanceAssetLab.Text  = ballanceAsset.ToString();
                estimatePriceLab.Text  = estimatePrice2.ToString();
                estimateProfitLab.Text = estimateProfit.ToString();


                ///
                int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName);
                for (int i = 0; i < count; ++i)
                {
                    double amount          = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "보유수량"));//TrimStart('0');
                    string itemName        = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    double buyingPrice     = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "매입가"));
                    double currentPrice    = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"));
                    double estimateProfit2 = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "평가금액"));
                    double profitRate      = double.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "수익률(%)"));



                    StockGrid stockGrid = new StockGrid(itemName, amount, buyingPrice, currentPrice, estimateProfit2, profitRate);
                    stockGridList.Add(stockGrid);
                }
                dataGridView2.DataSource = stockGridList;
            }
            //주문정보 추가 코드
            else if (e.sRQName.Equals("주문종목정보"))
            {
                try
                {
                    string 종목명 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목명").Trim();
                    int    현재가 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "현재가"));
                    codeNameLab.Text = 종목명;

                    if (현재가 < 0)
                    {
                        현재가 = -현재가;
                    }
                    numericUpDown1.Value = 현재가;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message.ToString());
                }
            }
            else if (e.sRQName.Equals("실시간미체결요청")) //필드만들것
            {
                int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName);
                for (int i = 0; i < count; ++i)
                {
                    string 주문번호  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "주문번호").Trim();
                    string 종목코드  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목코드").Trim();
                    string 종목명   = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    int    주문수량  = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "주문수량"));
                    int    가격    = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "가격"));
                    int    현재가   = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"));
                    int    미체결수량 = int.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "미체결수량"));
                    string 주문구분  = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "매매구분").Trim();
                    string 시간    = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "시간").Trim();

                    outStandingOrderList.Add(new OutStandingOrder(주문번호, 종목코드, 종목명, 주문수량, 가격, 현재가, 미체결수량, 주문구분, 시간));
                }

                dataGridView3.DataSource = outStandingOrderList;
            }
        }
Ejemplo n.º 21
0
        private void OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var temp = axAPI.GetCommDataEx(e.sTrCode, e.sRQName);

            if (temp != null)
            {
                string[,] ts = new string[((object[, ])temp).GetUpperBound(0) + 1, ((object[, ])temp).GetUpperBound(1) + 1];
                int x, y, lx = ((object[, ])temp).GetUpperBound(0), ly = ((object[, ])temp).GetUpperBound(1);

                for (x = 0; x <= lx; x++)
                {
                    sb = new StringBuilder(64);

                    for (y = 0; y <= ly; y++)
                    {
                        ts[x, y] = (string)((object[, ])temp)[x, y];

                        if (ts[x, y].Length > 13 && !e.sTrCode.Equals("opt50001") && Retention.Equals(ts[x, y].Substring(2)))
                        {
                            sb          = new StringBuilder(it);
                            e.sPrevNext = "0";

                            break;
                        }
                        sb.Append(ts[x, y]);

                        if (y != ly)
                        {
                            sb.Append(",");
                        }
                    }
                    if (!e.sTrCode.Equals("opt50001") && sb.ToString() != it)
                    {
                        SendMemorize?.Invoke(this, new Memorize(sb));

                        continue;
                    }
                    if (sb.ToString() == it)
                    {
                        break;
                    }

                    if (e.sTrCode.Equals("opt50001"))
                    {
                        Remaining = axAPI.GetCommData(e.sTrCode, e.sRQName, 0, "잔존일수").Trim();

                        return;
                    }
                }
                if (e.sPrevNext.Equals("2") && !e.sTrCode.Equals("opt50001"))
                {
                    request.RequestTrData(new Task(() => InputValueRqData(new Opt50028 {
                        Value = Code, RQName = Code + Retention, PrevNext = 2
                    })));

                    return;
                }
                if (e.sPrevNext.Equals("0") && !e.sTrCode.Equals("opt50001"))
                {
                    SendMemorize?.Invoke(this, new Memorize(e.sPrevNext));
                }
            }
        }
Ejemplo n.º 22
0
 void OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
 => (API as Connect)?.TR.FirstOrDefault(o
Ejemplo n.º 23
0
        private void OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            if (e.sTrCode.Equals("opt50028") || e.sTrCode.Equals("opt50066"))
            {
                var temp = axAPI.GetCommDataEx(e.sTrCode, e.sRQName);

                if (temp != null)
                {
                    string[,] ts = new string[((object[, ])temp).GetUpperBound(0) + 1, ((object[, ])temp).GetUpperBound(1) + 1];
                    int x, y, lx = ((object[, ])temp).GetUpperBound(0), ly = ((object[, ])temp).GetUpperBound(1);

                    for (x = 0; x <= lx; x++)
                    {
                        sb = new StringBuilder(64);

                        for (y = 0; y <= ly; y++)
                        {
                            ts[x, y] = (string)((object[, ])temp)[x, y];

                            if (ts[x, y].Length > 13 && e.sRQName.Substring(8).Equals(ts[x, y].Substring(2)))
                            {
                                sb          = new StringBuilder(it);
                                e.sPrevNext = "0";

                                break;
                            }
                            sb.Append(ts[x, y]).Append(';');
                        }
                        if (!it.Equals(sb.ToString()))
                        {
                            SendMemorize?.Invoke(this, new Memorize(sb));

                            continue;
                        }
                        if (it.Equals(sb.ToString()))
                        {
                            break;
                        }
                    }
                    if (e.sRQName.Substring(0, 3).Equals("101") && e.sPrevNext.Equals("2"))
                    {
                        request.RequestTrData(new Task(() => InputValueRqData(new Opt50028 {
                            Value = e.sRQName.Substring(0, 8), RQName = e.sRQName, PrevNext = 2
                        })));

                        return;
                    }
                    if (e.sPrevNext.Equals("2"))
                    {
                        request.RequestTrData(new Task(() => InputValueRqData(new Opt50066 {
                            Value = e.sRQName.Substring(0, 8), RQName = e.sRQName, PrevNext = 2
                        })));

                        return;
                    }
                    if (e.sPrevNext.Equals("0"))
                    {
                        SendMemorize?.Invoke(this, new Memorize(e.sPrevNext, e.sRQName.Substring(0, 8)));
                    }
                }
                Request(e.sRQName);
                return;
            }
            if (e.sTrCode.Contains("KOA"))
            {
                return;
            }

            sb = new StringBuilder(512);
            int i, cnt = axAPI.GetRepeatCnt(e.sTrCode, e.sRQName);

            for (i = 0; i < (cnt > 0 ? cnt : cnt + 1); i++)
            {
                foreach (string item in Array.Find(catalog, o => o.ToString().Contains(e.sTrCode.Substring(1))))
                {
                    sb.Append(axAPI.GetCommData(e.sTrCode, e.sRQName, i, item).Trim()).Append(';');
                }

                if (cnt > 0)
                {
                    sb.Append("*");

                    if (DeadLine && sb.ToString().Substring(0, 3).Equals("101"))
                    {
                        string[] temp = sb.ToString().Split(';');
                        Quantity = temp[2].Equals("1") ? -int.Parse(temp[3]) : int.Parse(temp[3]);
                        DeadLine = false;
                    }
                }
            }
            switch (Array.FindIndex(catalog, o => o.ToString().Contains(e.sTrCode.Substring(1))))
            {
            case 0:
                FixUp(sb.ToString().Split(';'), e.sRQName);
                break;

            case 1:
                SendDeposit?.Invoke(this, new Deposit(sb));
                break;

            case 2:
                SendHolding?.Invoke(this, new Holding(sb.ToString()));
                break;
            }
        }
Ejemplo n.º 24
0
        protected internal override (string[], Queue <string[]>) OnReceiveTrData(string[] single, string[] multi, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var sTemp = single != null ? new string[single.Length] : null;

            if (single != null)
            {
                for (int i = 0; i < single.Length; i++)
                {
                    sTemp[i] = API.GetCommData(e.sTrCode, e.sRQName, 0, single[i]);
                }
            }

            if (multi != null)
            {
                var temp = API.GetCommDataEx(e.sTrCode, e.sRQName);

                if (temp != null)
                {
                    int x, y, lx = ((object[, ])temp).GetUpperBound(0), ly = ((object[, ])temp).GetUpperBound(1);
                    var catalog = new Queue <string[]>();

                    for (x = 0; x <= lx; x++)
                    {
                        var str = new string[ly + 1];

                        for (y = 0; y <= ly; y++)
                        {
                            str[y] = (string)((object[, ])temp)[x, y];
                        }

                        if (string.IsNullOrEmpty(e.sRQName) == false && (string.Compare(str[2][2..], e.sRQName) > 0 || e.sRQName.Equals(rqName)))
Ejemplo n.º 25
0
        protected internal override (string[], Queue <string[]>) OnReceiveTrData(string[] single, string[] multi, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            var sTemp = single is null ? null : new string[single.Length];

            if (single is not null)
            {
                for (int i = 0; i < single.Length; i++)
                {
                    sTemp[i] = API.GetCommData(e.sTrCode, e.sRQName, 0, single[i]).Trim();
                }
            }

            if (multi is not null)
            {
                var temp = API.GetCommDataEx(e.sTrCode, e.sRQName);

                if (temp is not null)
                {
                    int x, y, lx = ((object[, ])temp).GetUpperBound(0), ly = ((object[, ])temp).GetUpperBound(1);
                    var catalog = new Queue <string[]>();

                    for (x = 0; x <= lx; x++)
                    {
                        var str = new string[ly + 1];

                        for (y = 0; y <= ly; y++)
                        {
                            str[y] = ((string)((object[, ])temp)[x, y]).Trim();
                        }

                        if (string.IsNullOrEmpty(e.sRQName) is false && (e.sRQName.Equals(rqName) || string.Compare(str[4], e.sRQName) < 0))
                        {
                            catalog.Enqueue(str);
                        }
                    }
                    return(sTemp, catalog);
                }
            }
            return(sTemp, null);
        }
Ejemplo n.º 26
0
 internal override void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e)
 {
     if (int.TryParse(e.sPrevNext, out int next))
     {
         var    temp = base.OnReceiveTrData(null, op_mutiple, e);
         var    tr = Connect.GetInstance().TR.First(o => o.GetType().Name[1..].Equals(e.sTrCode[1..]) && o.RQName.Equals(e.sRQName));
Ejemplo n.º 27
0
 void OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
 => Connect.TR.FirstOrDefault(o => (o.RQName != null ? o.RQName.Equals(e.sRQName) : o.PrevNext.ToString().Equals(e.sPrevNext)) && o.GetType().Name.Substring(1).Equals(e.sTrCode.Substring(1)))?
 .OnReceiveTrData(e);
Ejemplo n.º 28
0
        private void API_OnReceiveTrData(object sender, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            if (e.sRQName.Equals("계좌평가잔고내역요청"))
            {
                #region 계좌평가잔고내역요청
                this.dataGridViewAccount.DataSource = null;
                int multiCount = 0;
                List <OPW00018_계좌평가결과> dataSingleList = new List <OPW00018_계좌평가결과>();
                OPW00018_계좌평가결과        dataSingle     = new OPW00018_계좌평가결과();
                dataSingle.총매입금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총매입금액").Trim();
                dataSingle.총수익률    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총수익률(%)").Trim();
                dataSingle.총평가손익금액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총평가손익금액").Trim();
                dataSingle.총평가금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총평가금액").Trim();
                dataSingle.총대주금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총대주금액").Trim();
                dataSingle.총대출금    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총대출금").Trim();
                dataSingle.총융자금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총융자금액").Trim();
                dataSingle.추정예탁자산  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "추정예탁자산").Trim();
                dataSingle.조회건수    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "조회건수").Trim();
                dataSingleList.Add(dataSingle);
                dataGridViewAccount.DataSource = dataSingleList;
                if (string.IsNullOrEmpty(dataSingle.조회건수))
                {
                    return;
                }

                multiCount = Int32.Parse(dataSingle.조회건수);

                List <OPW00018_계좌평가잔고개별합산> dataMultiList = new List <OPW00018_계좌평가잔고개별합산>();
                for (int i = 0; i < multiCount; i++)
                {
                    OPW00018_계좌평가잔고개별합산 dataMulti = new OPW00018_계좌평가잔고개별합산();
                    dataMulti.금일매도수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "금일매도수량").Trim();
                    dataMulti.금일매수수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "금일매수수량").Trim();
                    dataMulti.대출일    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "대출일").Trim();
                    dataMulti.매입가    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매입가").Trim();
                    dataMulti.매입금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매입금액").Trim();
                    dataMulti.매입수수료  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매입수수료").Trim();
                    dataMulti.보유비중   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "보유비중(%)").Trim();
                    dataMulti.보유수량   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "보유수량").Trim();
                    dataMulti.세금     = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "세금").Trim();
                    dataMulti.수수료합   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "수수료합").Trim();
                    dataMulti.수익률    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "수익률(%)").Trim();
                    dataMulti.신용구분   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "신용구분").Trim();
                    dataMulti.신용구분명  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "신용구분명").Trim();
                    dataMulti.전일매도수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "전일매도수량").Trim();
                    dataMulti.전일매수수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "전일매수수량").Trim();
                    dataMulti.전일종가   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "전일종가").Trim();
                    dataMulti.종목명    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    dataMulti.종목번호   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목번호").Trim();
                    dataMulti.평가금액   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "평가금액").Trim();
                    dataMulti.평가손익   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "평가손익").Trim();
                    dataMulti.평가수수료  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "평가수수료").Trim();
                    dataMulti.현재가    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim();
                    dataMulti.매매가능수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매매가능수량").Trim();
                    dataMultiList.Add(dataMulti);
                }
                this.dataGridViewAccountStock.DataSource = dataMultiList;

                foreach (DataGridViewColumn col in dataGridViewAccount.Columns)
                {
                    col.SortMode = DataGridViewColumnSortMode.NotSortable;
                }
                dataGridViewAccount.SelectedRows[0].Selected = false;

                foreach (DataGridViewColumn col in dataGridViewAccountStock.Columns)
                {
                    col.SortMode = DataGridViewColumnSortMode.NotSortable;
                }
                dataGridViewAccountStock.SelectedRows[0].Selected = false;
                Logger(Log.조회, "계좌평가잔고 완료");
                #endregion
            }
            else if (e.sRQName.Equals("조건검색주식기본정보"))
            {
                #region 조건검색결과
                int    count     = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
                string stockList = "";

                ConditionResultStockList.Clear();
                for (int i = 0; i < count; i++)
                {
                    this.dataGridViewStockInfo.DataSource = null;
                    OPT10001_주식기본정보 data = new OPT10001_주식기본정보();
                    data.종목코드 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목코드").Trim();
                    data.종목명  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    data.현재가  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim();
                    data.등락율  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "등락율").Trim();
                    data.전일대비 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "전일대비").Trim();
                    ConditionResultStockList.Add(data);

                    if (i == count - 1)
                    {
                        stockList += data.종목코드;
                    }
                    else
                    {
                        stockList += data.종목코드 + ";";
                    }
                }
                this.dataGridViewStockInfo.DataSource = ConditionResultStockList.Select(x => new { x.종목코드, x.종목명, x.현재가, x.전일대비, x.등락율 }).ToList();
                this.dataGridViewStockInfo.SelectedRows[0].Selected = false;
                Logger(Log.조회, "조건검색결과 완료");

                long lRet = axKHOpenAPI.SetRealReg(GetScreenNum(), // 화면번호
                                                   stockList,      // 종콕코드 리스트
                                                   "10;12",        //FID번호
                                                   "0");           // 0 : 마지막에 등록한 종목만 실시간
                #endregion
            }
            else if (e.sRQName.Equals("계좌평가현황요청"))
            {
                #region 계좌평가현황요청
                this.dataGridViewAccountStock.DataSource = null;

                List <OPW00004_계좌평가현황요청_Single> OPW00004SingleDataList = new List <OPW00004_계좌평가현황요청_Single>();
                OPW00004_계좌평가현황요청_Single        singleData             = new OPW00004_계좌평가현황요청_Single();
                singleData.예수금     = this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "예수금").Trim();
                singleData.예탁자산평가액 = this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "예탁자산평가액").Trim();
                singleData.가잔고평가액  = this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "유가잔고평가액").Trim();
                singleData.총매입금액   = this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총매입금액").Trim();
                singleData.추정예탁자산  = this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "추정예탁자산").Trim();
                OPW00004SingleDataList.Add(singleData);
                this.dataGridViewAccount.DataSource = OPW00004SingleDataList;
                int count = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);

                List <OPW00004_계좌평가현황요청_Multi> OPW00004_dataList = new List <OPW00004_계좌평가현황요청_Multi>();
                for (int i = 0; i < count; i++)
                {
                    OPW00004_계좌평가현황요청_Multi multiData = new OPW00004_계좌평가현황요청_Multi();
                    multiData.종목코드 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목코드").Trim();
                    multiData.종목명  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    multiData.보유수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "보유수량").Trim();
                    multiData.평균단가 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "평균단가").Trim();
                    multiData.현재가  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim();
                    multiData.평가금액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "평가금액").Trim();
                    multiData.손익금액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "손익금액").Trim();
                    multiData.손익율  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "손익율").Trim();
                    multiData.대출일  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "대출일").Trim();
                    multiData.매입금액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매입금액").Trim();

                    OPW00004_dataList.Add(multiData);
                }

                this.dataGridViewAccountStock.DataSource = OPW00004_dataList;

                foreach (DataGridViewColumn col in dataGridViewAccountStock.Columns)
                {
                    col.SortMode = DataGridViewColumnSortMode.NotSortable;
                }
                if (dataGridViewAccountStock.SelectedRows.Count > 0)
                {
                    dataGridViewAccountStock.SelectedRows[0].Selected = false;
                }


                Logger(Log.조회, "계좌정보 조회 성공");
                #endregion
            }
            else if (e.sRQName.Equals("증거금율별주문가능수량조회요청"))
            {
                this.tb매수주문수량.Text = Int32.Parse(this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "증거금100주문가능수량").Trim()).ToString();

                Logger(Log.조회, "증거금율별주문가능수량조회요청 성공");
            }
            else if (e.sRQName.Equals("신용보증금율별주문가능수량조회요청"))
            {
                this.tb매수주문수량.Text = Int32.Parse(this.axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "보증금40주문가능수량").Trim()).ToString();

                Logger(Log.조회, "신용보증금율별주문가능수량조회요청 성공");
            }
            else if (e.sRQName.Equals("실시간미체결요청"))
            {
                //MessageBox.Show("들어오나?");
                int count = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);

                if (count < 1)
                {
                    MessageBox.Show("미체결주문이 없습니다.");
                    return;
                }

                List <OPT10075_실시간미체결> OPT10075_dataList = new List <OPT10075_실시간미체결>();
                for (int i = 0; i < count; i++)
                {
                    OPT10075_실시간미체결 multiData = new OPT10075_실시간미체결();

                    multiData.계좌번호    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "계좌번호").Trim();
                    multiData.주문번호    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "주문번호").Trim();
                    multiData.관리사번    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "관리사번").Trim();
                    multiData.종목코드    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목코드").Trim();
                    multiData.업무구분    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "업무구분").Trim();
                    multiData.주문상태    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "주문상태").Trim();
                    multiData.종목명     = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "종목명").Trim();
                    multiData.주문수량    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "주문수량").Trim();
                    multiData.주문가격    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "주문가격").Trim();
                    multiData.미체결수량   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "미체결수량").Trim();
                    multiData.체결누계금액  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "체결누계금액").Trim();
                    multiData.원주문번호   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "원주문번호").Trim();
                    multiData.주문구분    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "주문구분").Trim();
                    multiData.매매구분    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매매구분").Trim();
                    multiData.시간      = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "시간").Trim();
                    multiData.체결번호    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "체결번호").Trim();
                    multiData.체결가     = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "체결가").Trim();
                    multiData.체결량     = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "체결량").Trim();
                    multiData.현재가     = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "현재가").Trim();
                    multiData.매도호가    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매도호가").Trim();
                    multiData.매수호가    = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "매수호가").Trim();
                    multiData.단위체결가   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "단위체결가").Trim();
                    multiData.단위체결량   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "단위체결량").Trim();
                    multiData.당일매매수수료 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "당일매매수수료").Trim();
                    multiData.당일매매세금  = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "당일매매세금").Trim();
                    multiData.개인투자자   = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, i, "개인투자자").Trim();

                    OPT10075_dataList.Add(multiData);
                }

                NotConclude nc = new NotConclude(this, OPT10075_dataList);
                nc.Show();

                //this.dataGridViewAccountStock.DataSource = OPW00004_dataList;

                //foreach (DataGridViewColumn col in dataGridViewAccountStock.Columns)
                //{
                //    col.SortMode = DataGridViewColumnSortMode.NotSortable;
                //}
                //if (dataGridViewAccountStock.SelectedRows.Count > 0)
                //    dataGridViewAccountStock.SelectedRows[0].Selected = false;


                Logger(Log.조회, "실시간미체결요청 성공");
            }
        }
Ejemplo n.º 29
0
        protected internal virtual (string[], Queue <string[]>) OnReceiveTrData(string[] single, string[] multi, _DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            int i, j;
            var sTemp = single != null ? new string[single.Length] : null;

            if (single != null)
            {
                for (i = 0; i < single.Length; i++)
                {
                    sTemp[i] = API.GetCommData(e.sTrCode, e.sRQName, 0, single[i]).Trim();
                }
            }

            if (multi != null)
            {
                var catalog = new Queue <string[]>();

                for (j = 0; j < API.GetRepeatCnt(e.sTrCode, e.sRQName); j++)
                {
                    var temp = new string[multi.Length];

                    for (i = 0; i < multi.Length; i++)
                    {
                        temp[i] = API.GetCommData(e.sTrCode, e.sRQName, j, multi[i]).Trim();
                    }

                    catalog.Enqueue(temp);
                }
                return(sTemp, catalog);
            }
            return(sTemp, null);
        }
Ejemplo n.º 30
0
 internal abstract void OnReceiveTrData(_DKHOpenAPIEvents_OnReceiveTrDataEvent e);