private void AxKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { if (e.sRQName == "계좌평가현황요청") { String a = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "예수금"); Console.WriteLine(a); } }
public void AxKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { if (e.sRQName.Equals("틱데이터차트조회")) { allSeries.Clear(); int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName); count = Math.Min(count, MAX_TICK); for (int i = 0; i < count; ++i) { long curPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"))); long openPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "시가"))); long highPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "고가"))); long lowPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "저가"))); long curVol = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "거래량")); string conclusionTime = (axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "체결시간")).Trim(); CustomSeries series = new CustomSeries(conclusionTime, highPrice, lowPrice, openPrice, curPrice, curVol); allSeries.Add(series); } MA_Calculate(); } }
private void AxKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { if (e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_ACCOUNT_INFO_FORM2)) { string accountName = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "계좌명"); string bankName = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "지점명"); string asset = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "예수금"); string d2Asset = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "D+2추정예수금"); string estimatedAsset = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "예탁자산평가액"); string investment = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "당일투자원금"); string profit = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "당일투자손익"); string profitRate = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "당일손익율"); long l_asset = 0; long l_d2asset = 0; long l_estimatedAsset = 0; long l_investment = 0; long l_profit = 0; double d_profitRate = 0; long.TryParse(asset, out l_asset); long.TryParse(d2Asset, out l_d2asset); long.TryParse(estimatedAsset, out l_estimatedAsset); long.TryParse(investment, out l_investment); long.TryParse(profit, out l_profit); double.TryParse(profitRate, out d_profitRate); asset_label.Text = string.Format("{0:n0}", l_asset); d2Asset_label.Text = string.Format("{0:n0}", l_d2asset); estimatedAsset_label.Text = string.Format("{0:n0}", l_estimatedAsset); //investment_label.Text = string.Format("{0:n0}", l_investment); //profit_label.Text = l_profit.ToString(); //profitRate_label.Text = d_profitRate.ToString(); } }
private String getReceiveDataByName(AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e, int index, String name) { return(kiWoomApi.GetCommData(e.sTrCode, e.sRQName, index, name)); }
public void AxKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { if (!init) { return; } if (e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_MINUTE_CHART)) { string[] strArray = e.sRQName.Split(':'); string itemcode = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목코드").Replace("A", "").Trim(); if (strArray.Length == 2) { if (strArray[1] != screenNumber) { return; } } priceList.Clear(); priceMA_List.Clear(); priceMA_Envelope_List.Clear(); int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName); count = Math.Min(count, MAX_CANDLE); for (int i = 0; i < count; ++i) { long curPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"))); long openPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "시가"))); long highPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "고가"))); long lowPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "저가"))); long curVol = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "거래량")); string conclusionTime = (axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "체결시간")).Trim(); string format = "yyyyMMddHHmmss"; DateTime concludeTime = DateTime.ParseExact(conclusionTime, format, CultureInfo.InvariantCulture); priceList.Add(curPrice); } for (int i = 0; i < priceList.Count; ++i) { if (i + MA_PERIOD < priceList.Count) { long priceSum = 0; for (int j = 0; j < MA_PERIOD; ++j) { priceSum += (long)priceList[i + j]; } double priceAverage = priceSum / MA_PERIOD; priceMA_List.Add((long)priceAverage); priceMA_Envelope_List.Add((long)(priceAverage * (1.0 - MA_PERCENT))); } } if (afterEventFunction != null && priceList.Count > 0 && priceMA_Envelope_List.Count > 0) { if (afterEventFunction.ContainsKey(itemcode)) { afterEventFunction[itemcode].Invoke(itemcode, priceList[0], priceMA_Envelope_List[0]); } } } }
public void AxKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { if (e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_KOSPI_MINUTE_CHART) || e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_TICK_CHART) || e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_MINUTE_CHART)) { if (candleChart.Series == null) { return; } string[] strArray = e.sRQName.Split(':'); if (strArray.Length == 2) { if (strArray[1] != screenNumber) { return; } } if (e.sRQName.Contains(ConstName.RECEIVE_TR_DATA_KOSPI_MINUTE_CHART) == false) { itemcode = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목코드").Replace("A", "").Trim(); if (chartItemCodeTextBox.Text != itemcode) { return; } } candleChart.Series["StockCandle"].Points.Clear(); candleChart.Series["Volume"].Points.Clear(); candleChart.Series["VWMA"].Points.Clear(); candleChart.Series["VPCI"].Points.Clear(); int count = axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName); count = Math.Min(count, MAX_CANDLE); for (int i = 0; i < count; ++i) { long curPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "현재가"))); long openPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "시가"))); long highPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "고가"))); long lowPrice = Math.Abs(long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "저가"))); long curVol = long.Parse(axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "거래량")); string conclusionTime = (axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, i, "체결시간")).Trim(); string format = "yyyyMMddHHmmss"; int index = candleChart.Series["StockCandle"].Points.AddXY(DateTime.ParseExact(conclusionTime, format, CultureInfo.InvariantCulture).ToString("HH:mm:ss"), highPrice); candleChart.Series["StockCandle"].Points[index].YValues[1] = lowPrice; candleChart.Series["StockCandle"].Points[index].YValues[2] = openPrice; candleChart.Series["StockCandle"].Points[index].YValues[3] = curPrice; //종가 == 현재가 if (openPrice < curPrice) { candleChart.Series["StockCandle"].Points[index].Color = Color.Red; candleChart.Series["StockCandle"].Points[index].BorderColor = Color.Red; } else { candleChart.Series["StockCandle"].Points[index].Color = Color.Blue; candleChart.Series["StockCandle"].Points[index].BorderColor = Color.Blue; } int volume_index = candleChart.Series["Volume"].Points.AddXY(DateTime.ParseExact(conclusionTime, format, CultureInfo.InvariantCulture).ToString("HH:mm:ss"), curVol); candleChart.Series["VWMA"].Points.AddXY(DateTime.ParseExact(conclusionTime, format, CultureInfo.InvariantCulture).ToString("HH:mm:ss"), 0); candleChart.Series["VPCI"].Points.AddXY(DateTime.ParseExact(conclusionTime, format, CultureInfo.InvariantCulture).ToString("HH:mm:ss"), 0); } MakeMA(); MakeVWMA(); MakeVPCI(); } }