private void OnReceiveTrData_Opt10060MaeSu(string stockCode, DataTable dt, int sPreNext) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); DataTable dtDate = new DataTable(); KiwoomQuery kiwoom = new KiwoomQuery(); TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); if (tcs == null || tcs.Task.IsCompleted) { return; } if (dt != null) { foreach (DataRow dr in dt.Rows) { WriteTextSafe(stockCode + "(QTY매수)" + "[" + dr["일자"].ToString() + "] 작업중"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"]); arrParam.Add("@MAEME_GB", "1"); arrParam.Add("@DATE_SEQNO", 0); arrParam.Add("@NUJUK_TRDAEGUM", dr["누적거래대금"]); arrParam.Add("@GAIN_QTY", dr["개인투자자"]); arrParam.Add("@FORE_QTY", dr["외국인투자자"]); arrParam.Add("@GIGAN_QTY", dr["기관계"]); arrParam.Add("@GUMY_QTY", dr["금융투자"]); arrParam.Add("@BOHUM_QTY", dr["보험"]); arrParam.Add("@TOSIN_QTY", dr["투신"]); arrParam.Add("@GITA_QTY", dr["기타금융"]); arrParam.Add("@BANK_QTY", dr["은행"]); arrParam.Add("@YEONGI_QTY", dr["연기금등"]); arrParam.Add("@SAMO_QTY", dr["사모펀드"]); arrParam.Add("@NATION_QTY", dr["국가"]); arrParam.Add("@BUBIN_QTY", dr["기타법인"]); arrParam.Add("@IOFORE_QTY", dr["내외국인"]); arrParam.Add("@GIGAN_SUM_QTY", Convert.ToInt32(dr["금융투자"]) + Convert.ToInt32(dr["보험"]) + Convert.ToInt32(dr["투신"]) + Convert.ToInt32(dr["기타금융"]) + Convert.ToInt32(dr["은행"]) + Convert.ToInt32(dr["연기금등"]) + Convert.ToInt32(dr["사모펀드"]) + Convert.ToInt32(dr["국가"])); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10060QtyAdd", CommandType.StoredProcedure, arrParam); } } _opt10060.Dispose(); tcs.SetResult(true); ClsAxKH.AxKH_10060_OnReceived -= new ClsAxKH.OnReceivedEventHandler(OnReceiveTrData_Opt10060MaeSu); GetOpt10060Caller(Opt10060TransType.QtyMaeDo, stockCode, "", ""); }
private void Opt10015_OnReceived(string stockCode, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); if (tcs == null || tcs.Task.IsCompleted) { return; } // 최근 100일 내역만 질의한다. if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { WriteTextSafe(stockCode + "(일자별상세)" + "[" + dr["일자"].ToString() + "] 작업중"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"].ToString()); arrParam.Add("@LAST_PRICE", dr["종가"]); arrParam.Add("@OAGO_DAEBI_SYMBOL", dr["전일대비기호"]); arrParam.Add("@OAGO_DAEBI", dr["전일대비"]); arrParam.Add("@UPDOWN_RATE", dr["등락율"]); arrParam.Add("@TRADE_QTY", dr["거래량"]); arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]); arrParam.Add("@BETRADE_QTY", dr["장전거래량"]); arrParam.Add("@BETRADE_BIJUNG", dr["장전거래비중"]); arrParam.Add("@INTRADE_QTY", dr["장중거래량"]); arrParam.Add("@INTRADE_BIJUNG", dr["장중거래비중"]); arrParam.Add("@AFTRADE_QTY", dr["장후거래량"]); arrParam.Add("@AFTRADE_BIJUNG", dr["장후거래비중"]); arrParam.Add("@SUM3", dr["합계3"]); arrParam.Add("@GITRADE_QTY", dr["기간중거래량"]); arrParam.Add("@BETRADE_DAEGUM", dr["장전거래대금"]); arrParam.Add("@BETRADE_DBIJUNG", dr["장전거래대금비중"]); arrParam.Add("@INTRADE_DAEGUM", dr["장중거래대금"]); arrParam.Add("@INTRADE_DBIJUNG", dr["장중거래대금비중"]); arrParam.Add("@AFTRADE_DAEGUM", dr["장후거래대금"]); arrParam.Add("@AFTRADE_DBIJUNG", dr["장후거래대금비중"]); arrParam.Add("@DEUNG_DATE", ""); arrParam.Add("@DEUNG_TIME", ""); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10015Add", CommandType.StoredProcedure, arrParam); } } _opt10015.Dispose(); tcs.SetResult(true); GetOpt10081Caller(stockCode: stockCode); }
private void Opt10081_OnReceived(string sRQName, DataTable dt, int sPreNext) { string[] sRQNameArray = sRQName.Split(','); string stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10081, sRQName); TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); if (tcs == null || tcs.Task.IsCompleted) { return; } if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"]); arrParam.Add("@DATE_SEQNO", 0); arrParam.Add("@NOW_PRICE", dr["현재가"]); arrParam.Add("@TRADE_QTY", dr["거래량"]); arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]); arrParam.Add("@START_PRICE", dr["시가"]); arrParam.Add("@HIGH_PRICE", dr["고가"]); arrParam.Add("@LOW_PRICE", dr["저가"]); arrParam.Add("@CHG_JUGA_GB", dr["수정주가구분"]); arrParam.Add("@CHG_RATE", dr["수정비율"]); arrParam.Add("@CHG_JUGA_EVENT", dr["수정주가이벤트"]); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10081Add", CommandType.StoredProcedure, arrParam); } } _opt10081.Dispose(); tcs.SetResult(true); GetOpt10060Caller(Opt10060TransType.PriceMaesu, stockCode: stockCode, MaxDate: "", MinDate: ""); }
private void Opt90002_OnReceived(string sRQName, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); if (tcs == null || tcs.Task.IsCompleted) { return; } string[] sRQNameArray = sRQName.Split(','); string stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt90002, sRQName); if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { arrParam.Clear(); //DataTable stockName = _dt.AsEnumerable().Where(Row => Row.Field<string>("STOCK_NAME") == dr["STOCK_NAME"].ToString().Trim()).CopyToDataTable(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@KTH_CODE", stockCode); arrParam.Add("@STOCK_CODE", dr["종목코드"].ToString().Trim()); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_KthstAdd", CommandType.StoredProcedure, arrParam); WriteTextSafe("(" + stockCode + ")" + dr["종목코드"].ToString().Trim()); } } _opt90002.Dispose(); tcs.SetResult(true); OnGetKthCode(); }
private void StoreScode() { for (int i = 0; i < dgv0.RowCount - 1; i++) { if (dgv0.Rows[i].Cells["STOCK_CODE"].Value.ToString().Trim() == "") { continue; } SDataAccess.ArrayParam arrayParam = new ArrayParam(); SDataAccess.Sql oSql = new SDataAccess.Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB"); arrayParam.Clear(); arrayParam.Add("@ACTION_GB", "A"); arrayParam.Add("@STOCK_CODE", dgv0.Rows[i].Cells["STOCK_CODE"].Value.ToString().Trim()); arrayParam.Add("@STOCK_NAME", dgv0.Rows[i].Cells["STOCK_NAME"].Value.ToString().Trim()); arrayParam.Add("@YBJONG_CODE", "999999"); arrayParam.Add("@OPT10059_QTY", ""); arrayParam.Add("@OPT10059_PRICE", ""); arrayParam.Add("@OPT10081", ""); arrayParam.Add("@OPT10060_QTY", ""); arrayParam.Add("@OPT10060_PRICE", ""); arrayParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_ScodeAdd", CommandType.StoredProcedure, arrayParam); } MessageBox.Show("작업이 완료되었습니다."); if (dgv0.DataSource != null) { dgv0.DataSource = (dgv0.DataSource as DataTable).Clone(); } if (dgv1.DataSource != null) { dgv1.DataSource = (dgv1.DataSource as DataTable).Clone(); } GetNewStockCode(); }
private void btnStoreDb_Click(object sender, EventArgs e) { if (_dt.Rows.Count > 0) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in _dt.Rows) { arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@KIFGP_CODE", dr["테마코드"].ToString().Trim()); arrParam.Add("@KIFGP_NAME", dr["테마명"].ToString().Trim()); arrParam.Add("@STOCK_CODE", dr["종목코드"].ToString().Trim()); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_KIFSTAdd", CommandType.StoredProcedure, arrParam); } MessageBox.Show("작업이 완료되었습니다."); } }
/// <summary> /// 공시검색 개발가이드 https://opendart.fss.or.kr/api/list.json - JSON https://opendart.fss.or.kr/api/list.xml - XML /// https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019001 /// </summary> /// <param name="crtfc_key">API 인증키</param> /// <param name="corp_code">고유번호</param> /// <param name="bgn_de">시작일</param> /// <param name="end_de">종료일</param> /// <param name="last_report_at">최종보고서 검색여부</param> /// <param name="bpIntf_ty">공시유형</param> /// <param name="pblntf_detail_ty">공시상세유형</param> /// <param name="corp_cls">법인구분</param> /// <param name="sort">정렬</param> /// <param name="sort_mth">정렬방법</param> /// <param name="page_no">페이지 번호</param> /// <param name="page_count">페이지 별 건수</param> /// <returns></returns> public DataSet GetDartSearchByDate(string stockCode, string crtfc_key, string corp_code, string bgn_de, string end_de, string last_report_at, string pbIntf_ty, string pblntf_detail_ty, string corp_cls, string sort, string sort_mth, string page_no, string page_count) { if (stockCode == null) { return(null); } RichQuery richQuery = new RichQuery(); DataTable dt = new DataTable(); dt = richQuery.p_DARTQuery(query: "1", corp_code: "", stock_code: stockCode, stock_name: "", DELETE_DATE: "", bln3tier: false).Tables[0].Copy(); if (dt.Rows.Count < 1) { return(null); } string corpCode = dt.Rows[0]["corp_code"].ToString().Trim(); //string apiUrl = "https://opendart.fss.or.kr/api/list.xml?" + "&crtfc_key=" + authKey + "&corp_code=" + corpCode + "&bgn_de=" + bgn_de + "&end_de=" + end_de + // "&last_report_at=" + last_report_at + "&pbIntf_ty=" + pbIntf_ty + "&pblntf_detail_ty=" + pblntf_detail_ty + "&corp_cls=" + corp_cls + "&sort=" + sort + // "&sort_mth=" + sort_mth + "&page_no=" + page_no + "&page_count=" + page_count; //string apiUrl = "https://opendart.fss.or.kr/api/list.json?" + "&crtfc_key=" + authKey + "&corp_code=" + corpCode + "&bgn_de=" + bgn_de + "&end_de=" + end_de + // "&pbIntf_ty=" + pbIntf_ty + "&sort=" + sort + // "&sort_mth=" + sort_mth + "&page_no=" + page_no + "&page_count=" + page_count; string apiUrl = "https://opendart.fss.or.kr/api/list.xml?" + "&crtfc_key=" + authKey + "&corp_code=" + corpCode + "&bgn_de=" + bgn_de + "&end_de=" + end_de + "&pbIntf_ty=" + pbIntf_ty + "&sort=" + sort + "&sort_mth=" + sort_mth + "&page_no=" + page_no + "&page_count=" + page_count; //string apiUrl = "https://opendart.fss.or.kr/api/list.json?" + "&crtfc_key=" + authKey + "&corp_code=" + corpCode + "&bgn_de=" + bgn_de + "&end_de=" + end_de + // "&page_no=" + page_no + "&page_count=" + page_count; //string apiUrl = "https://opendart.fss.or.kr/api/list.json?crtfc_key=fc9f7996b19984e91edab1bed1dd0a6249836aa8&corp_code=00126380&bgn_de=20210117&end_de=20210717&pblntf_ty=A&pblntf_detail_ty=A001&corp_cls=Y&page_no=5&page_count=10"; string webClientResult = callWebClient(apiUrl); int i = webClientResult.IndexOf("<status>"); int j = webClientResult.IndexOf("<list>"); ClsUtil clsUtil = new ClsUtil(); string cutString = clsUtil.Mid(webClientResult, i + 1, j - i); //string makexml = webClientResult.Replace(cutString, "").Replace("<?xml version="1.0" encoding="UTF - 8" standalone="true"?>", ""); StringReader sr = new StringReader(webClientResult.Replace(cutString, "")); DataSet ds = new DataSet(); ds.ReadXml(sr); if (ds.Tables[0].Rows.Count < 0) { return(null); } else { if (ds.Tables[0].Rows[0]["stock_code"].ToString().Trim() != stockCode) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "C"); arrParam.Add("@corp_code", corpCode); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_NAME", ""); arrParam.Add("@DELETE_DATE", DateTime.Now.ToString("yyyyMMdd")); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_DartAdd", CommandType.StoredProcedure, arrParam); GetDartSearchByDate(stockCode, crtfc_key, corp_code, bgn_de, end_de, last_report_at, pbIntf_ty, pblntf_detail_ty, corp_cls, sort, sort_mth, page_no, page_count); } } // < corp_code > 00119195 </ corp_code > //< corp_name > 동화약품 </ corp_name > // < stock_code > 000020 </ stock_code > // < corp_cls > Y </ corp_cls > // < report_nm > 공정거래자율준수프로그램운영현황(안내공시) </ report_nm > // < rcept_no > 20210426800538 </ rcept_no > // < flr_nm > 동화약품 </ flr_nm > // < rcept_dt > 20210426 </ rcept_dt > // < rm > 유 </ rm > return(ds); }
private void Opt10015_OnReceived(string sRQName, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); string[] sRQNameArray = sRQName.Split(','); string stockCode = ""; string stdDate = ""; string maxDate = ""; string minDate = ""; string chainMaxDate = ""; stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10015, sRQName); stdDate = ClsAxKH.RetStdDateBysRqName(ClsAxKH.OptType.Opt10015, sRQName); try { if (dt != null) { maxDate = dt.Compute("max([일자])", string.Empty).ToString().Trim(); minDate = dt.Compute("min([일자])", string.Empty).ToString().Trim(); ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); var rows = _dtOptCalMagam.AsEnumerable().Where(Row => Row.Field <string>("STOCK_CODE") == stockCode); foreach (DataRow dr2th in rows) { if (dr2th["CHAIN_COMP_GB"].ToString().Trim() == "Y") { chainMaxDate = dr2th["CHAIN_MAX_DATE"].ToString().Trim(); } } } if (tcs == null || tcs.Task.IsCompleted) { return; } if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { WriteTextSafe(stockCode + "(" + dr["일자"] + ")"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"].ToString()); arrParam.Add("@LAST_PRICE", dr["종가"]); arrParam.Add("@OAGO_DAEBI_SYMBOL", dr["전일대비기호"]); arrParam.Add("@OAGO_DAEBI", dr["전일대비"]); arrParam.Add("@UPDOWN_RATE", dr["등락율"]); arrParam.Add("@TRADE_QTY", dr["거래량"]); arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]); arrParam.Add("@BETRADE_QTY", dr["장전거래량"]); arrParam.Add("@BETRADE_BIJUNG", dr["장전거래비중"]); arrParam.Add("@INTRADE_QTY", dr["장중거래량"]); arrParam.Add("@INTRADE_BIJUNG", dr["장중거래비중"]); arrParam.Add("@AFTRADE_QTY", dr["장후거래량"]); arrParam.Add("@AFTRADE_BIJUNG", dr["장후거래비중"]); arrParam.Add("@SUM3", dr["합계3"]); arrParam.Add("@GITRADE_QTY", dr["기간중거래량"]); arrParam.Add("@BETRADE_DAEGUM", dr["장전거래대금"]); arrParam.Add("@BETRADE_DBIJUNG", dr["장전거래대금비중"]); arrParam.Add("@INTRADE_DAEGUM", dr["장중거래대금"]); arrParam.Add("@INTRADE_DBIJUNG", dr["장중거래대금비중"]); arrParam.Add("@AFTRADE_DAEGUM", dr["장후거래대금"]); arrParam.Add("@AFTRADE_DBIJUNG", dr["장후거래대금비중"]); arrParam.Add("@DEUNG_DATE", ""); arrParam.Add("@DEUNG_TIME", ""); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10015Add", CommandType.StoredProcedure, arrParam); if (chainMaxDate != "") { if (chainMaxDate == dr["일자"].ToString().Trim()) { ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); _opt10015.Dispose(); tcs.SetResult(true); WaitTime(); OnGetStockCode(); return; } } } } // 최근 거래일 100일을 가져오는걸로 한다면 if (chk100.Checked == true) { ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); _opt10015.Dispose(); tcs.SetResult(true); OnGetStockCode(); return; } else { if (sPreNext == 2) { tcs.SetResult(true); ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "S", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); WaitTime(); _opt10015.SetInit(_FormId); _opt10015.JustRequest(StockCode: sRQNameArray[1].ToString().Trim(), StartDate: sRQNameArray[2].ToString().Trim(), StockName: "", nPrevNext: 2); OPS10060.Text = ClsAxKH._limitCount.ToString(); lblTime.Text = ClsAxKH._limitTime.ToString(); return; } else { if (dt != null) { ClsDbLogger.OptCallMagamStoredData(actionGb: "CE", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate); } else { ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate); } _opt10015.Dispose(); tcs.SetResult(true); OnGetStockCode(); return; } } } catch (Exception ex) { _opt10015.Dispose(); tcs.SetResult(true); OnGetStockCode(); MessageBox.Show(ex.Message.ToString()); throw; } }
private void Opt10001_OnReceived(string sRQName, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); string[] sRQNameArray = sRQName.Split(','); string stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10001, sRQName); if (tcs == null || tcs.Task.IsCompleted) { return; } try { if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", dr["종목코드"]); arrParam.Add("@CALL_DATE", ""); arrParam.Add("@CALL_TIME", ""); arrParam.Add("@결산월", dr["결산월"]); arrParam.Add("@액면가", ConvertInt32ToString(dr["액면가"].ToString())); arrParam.Add("@자본금", ConvertInt32ToString(dr["자본금"].ToString())); arrParam.Add("@상장주식", ConvertInt32ToString(dr["상장주식"].ToString())); arrParam.Add("@신용비율", ConvertDecimalToString(dr["신용비율"].ToString())); arrParam.Add("@연중최고", ConvertInt32ToString(dr["연중최고"].ToString())); arrParam.Add("@연중최저", ConvertInt32ToString(dr["연중최저"].ToString())); arrParam.Add("@시가총액", ConvertInt32ToString(dr["시가총액"].ToString())); arrParam.Add("@시가총액비중", dr["시가총액비중"].ToString()); arrParam.Add("@외인소진률", ConvertDecimalToString(dr["외인소진률"].ToString())); arrParam.Add("@대용가", ConvertInt32ToString(dr["대용가"].ToString())); arrParam.Add("@PER", ConvertDecimalToString(dr["PER"].ToString())); arrParam.Add("@EPS", ConvertInt32ToString(dr["EPS"].ToString())); arrParam.Add("@ROE", ConvertDecimalToString(dr["ROE"].ToString())); arrParam.Add("@PBR", ConvertDecimalToString(dr["PBR"].ToString())); arrParam.Add("@EV", ConvertDecimalToString(dr["EV"].ToString())); arrParam.Add("@BPS", ConvertInt32ToString(dr["BPS"].ToString())); arrParam.Add("@매출액", ConvertInt32ToString(dr["매출액"].ToString())); arrParam.Add("@영업이익", ConvertDecimalToString(dr["영업이익"].ToString())); arrParam.Add("@당기순이익", ConvertDecimalToString(dr["당기순이익"].ToString())); arrParam.Add("@최고250", ConvertInt32ToString(dr["250최고"].ToString())); arrParam.Add("@최저250", ConvertInt32ToString(dr["250최저"].ToString())); arrParam.Add("@시가", ConvertInt32ToString(dr["시가"].ToString())); arrParam.Add("@고가", ConvertInt32ToString(dr["고가"].ToString())); arrParam.Add("@저가", ConvertInt32ToString(dr["저가"].ToString())); arrParam.Add("@상한가", ConvertInt32ToString(dr["상한가"].ToString())); arrParam.Add("@하한가", ConvertInt32ToString(dr["하한가"].ToString())); arrParam.Add("@기준가", ConvertInt32ToString(dr["기준가"].ToString())); arrParam.Add("@예상체결가", ConvertInt32ToString(dr["예상체결가"].ToString())); arrParam.Add("@예상체결수량", ConvertInt32ToString(dr["예상체결수량"].ToString())); arrParam.Add("@최고가일250", dr["250최고가일"].ToString()); arrParam.Add("@최고가대비율250", ConvertDecimalToString(dr["250최고가대비율"].ToString())); arrParam.Add("@최저가일250", dr["250최저가일"].ToString()); arrParam.Add("@최저가대비율250", ConvertDecimalToString(dr["250최저가대비율"].ToString())); arrParam.Add("@현재가", ConvertInt32ToString(dr["현재가"].ToString())); arrParam.Add("@대비기호", dr["대비기호"].ToString()); arrParam.Add("@전일대비", ConvertDecimalToString(dr["전일대비"].ToString())); arrParam.Add("@등락율", ConvertDecimalToString(dr["등락율"].ToString())); arrParam.Add("@거래량", ConvertInt32ToString(dr["거래량"].ToString())); arrParam.Add("@거래대비액", ConvertDecimalToString(dr["거래대비"].ToString())); arrParam.Add("@액면가단위", dr["액면가단위"].ToString()); arrParam.Add("@유통주식", ConvertInt32ToString(dr["유통주식"].ToString())); arrParam.Add("@유통비율", ConvertDecimalToString(dr["유통비율"].ToString())); arrParam.Add("@R_ErrorCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10001Add", CommandType.StoredProcedure, arrParam); } } _opt10001.Dispose(); tcs.SetResult(true); OnGetStockCode(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); _opt10001.Dispose(); tcs.SetResult(true); OnGetStockCode(); return; throw; } }
private void Opt20068_OnReceived(string sRQName, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); string[] sRQNameArray = sRQName.Split(','); string stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt20068, sRQName); if (tcs == null || tcs.Task.IsCompleted) { return; } if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { if (_MaxStockDate20068 == dr["일자"].ToString().Trim()) { _opt20068.Dispose(); tcs.SetResult(true); OnGetStockCode(); return; } else { arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"]); arrParam.Add("@LT_CON_CNT", dr["대차거래체결주수"]); arrParam.Add("@LT_REPAY_CNT", dr["대차거래상환주수"]); arrParam.Add("@LT_INCRE", dr["대차거래증감"]); arrParam.Add("@BALANCE_CNT", dr["잔고주수"]); arrParam.Add("@BALANCE_PRICE", dr["잔고금액"]); arrParam.Add("@R_ErrorCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt20068Add", CommandType.StoredProcedure, arrParam); } } } if (sPreNext == 2) { tcs.SetResult(true); _opt20068.SetInit(_FormId); _opt20068.JustRequest(startDate: sRQNameArray[1].ToString().Trim(), endDate: sRQNameArray[2].ToString().Trim(), allGb: sRQNameArray[3].ToString().Trim(), stockCode: sRQNameArray[4].ToString().Trim(), nPrevNext: 2); } else { _opt20068.Dispose(); tcs.SetResult(true); } OnGetStockCode(); }
private async void OnReceiveTrData_Opt10060QtyMaedo(string stockCode, DataTable dt, int sPreNext) { // lblStockName.Text = stockCode + "Qty 매도 작업 중"; ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); Task <int> funcTaskAsync = Task.Run(() => { if (dt != null) { foreach (DataRow dr in dt.Rows) { WriteTextSafe(stockCode + " QTY 매도 " + dr["일자"]); if (dr["일자"].ToString() == _LastQdDate) { Sql oSql2 = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "C6"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_NAME", ""); arrParam.Add("@YBJONG_CODE", ""); arrParam.Add("@OPT10059_QTY", ""); arrParam.Add("@OPT10059_PRICE", ""); arrParam.Add("@OPT10081", ""); arrParam.Add("@OPT10060_QTY", "Y"); arrParam.Add("@OPT10060_PRICE", ""); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql2.ExecuteNonQuery("p_ScodeAdd", CommandType.StoredProcedure, arrParam); // 다음 자료가 없으면 return(1); } arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"]); arrParam.Add("@MAEME_GB", "2"); arrParam.Add("@DATE_SEQNO", 0); arrParam.Add("@NUJUK_TRDAEGUM", dr["누적거래대금"]); arrParam.Add("@GAIN_QTY", dr["개인투자자"]); arrParam.Add("@FORE_QTY", dr["외국인투자자"]); arrParam.Add("@GIGAN_QTY", dr["기관계"]); arrParam.Add("@GUMY_QTY", dr["금융투자"]); arrParam.Add("@BOHUM_QTY", dr["보험"]); arrParam.Add("@TOSIN_QTY", dr["투신"]); arrParam.Add("@GITA_QTY", dr["기타금융"]); arrParam.Add("@BANK_QTY", dr["은행"]); arrParam.Add("@YEONGI_QTY", dr["연기금등"]); arrParam.Add("@SAMO_QTY", dr["사모펀드"]); arrParam.Add("@NATION_QTY", dr["국가"]); arrParam.Add("@BUBIN_QTY", dr["기타법인"]); arrParam.Add("@IOFORE_QTY", dr["내외국인"]); arrParam.Add("@GIGAN_SUM_QTY", Convert.ToInt32(dr["금융투자"]) + Convert.ToInt32(dr["보험"]) + Convert.ToInt32(dr["투신"]) + Convert.ToInt32(dr["기타금융"]) + Convert.ToInt32(dr["은행"]) + Convert.ToInt32(dr["연기금등"]) + Convert.ToInt32(dr["사모펀드"]) + Convert.ToInt32(dr["국가"])); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10060QtyAdd", CommandType.StoredProcedure, arrParam); } return(0); } else { return(1); } }); if (await funcTaskAsync == 1) { WriteTextSafe(stockCode + " Qty 매도" + "완료 다음으로.."); OnGetEndData(valueType: 3, strStockCode: stockCode); return; } Task <int> t = Task.Run(() => { if (sPreNext == 2) { return(0); } else { Sql oSql2 = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "C6"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_NAME", ""); arrParam.Add("@YBJONG_CODE", ""); arrParam.Add("@OPT10059_QTY", ""); arrParam.Add("@OPT10059_PRICE", ""); arrParam.Add("@OPT10081", ""); arrParam.Add("@OPT10060_QTY", "Y"); arrParam.Add("@OPT10060_PRICE", ""); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql2.ExecuteNonQuery("p_ScodeAdd", CommandType.StoredProcedure, arrParam); // 다음 자료가 없으면 WriteTextSafe(stockCode + " Qty 매도" + "완료 다음으로.."); OnGetEndData(valueType: 3, strStockCode: stockCode); return(1); } }); if (await t == 1) { WriteTextSafe(stockCode + " Qty 매도" + "완료 다음으로.."); OnGetEndData(valueType: 3, strStockCode: stockCode); return; } else { WriteTextSafe(stockCode + " Qty 매도" + "(다음일자로..)"); _opt10060Qd.JustRequest(StartDate: _stdDate, StockCode: stockCode, StockName: "", AmountQtyGb: "2", MaeMaeGb: "2", UnitG: "1", nPrevNext: 1); } }
private void Opt10081_OnReceived(string sRQName, DataTable dt, int sPreNext) { TaskCompletionSource <bool> tcs = null; tcs = new TaskCompletionSource <bool>(); string[] sRQNameArray = sRQName.Split(','); string stockCode = ""; string stdDate = ""; string maxDate = ""; string minDate = ""; string chainMaxDate = ""; stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10081, sRQName); stdDate = ClsAxKH.RetStdDateBysRqName(ClsAxKH.OptType.Opt10081, sRQName); try { if (dt != null) { maxDate = dt.Compute("max([일자])", string.Empty).ToString().Trim(); minDate = dt.Compute("min([일자])", string.Empty).ToString().Trim(); ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); var rows = _dtOptCalMagam.AsEnumerable().Where(Row => Row.Field <string>("STOCK_CODE") == stockCode); foreach (DataRow dr2th in rows) { if (dr2th["CHAIN_COMP_GB"].ToString().Trim() == "Y") { chainMaxDate = dr2th["CHAIN_MAX_DATE"].ToString().Trim(); } } } if (tcs == null || tcs.Task.IsCompleted) { return; } if (dt != null) { ArrayParam arrParam = new ArrayParam(); Sql oSql = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB"); foreach (DataRow dr in dt.Rows) { WriteTextSafe(stockCode + "(" + dr["일자"] + ")"); arrParam.Clear(); arrParam.Add("@ACTION_GB", "A"); arrParam.Add("@STOCK_CODE", stockCode); arrParam.Add("@STOCK_DATE", dr["일자"]); arrParam.Add("@DATE_SEQNO", 0); arrParam.Add("@NOW_PRICE", dr["현재가"]); arrParam.Add("@TRADE_QTY", dr["거래량"]); arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]); arrParam.Add("@START_PRICE", dr["시가"]); arrParam.Add("@HIGH_PRICE", dr["고가"]); arrParam.Add("@LOW_PRICE", dr["저가"]); arrParam.Add("@CHG_JUGA_GB", dr["수정주가구분"]); arrParam.Add("@CHG_RATE", dr["수정비율"]); arrParam.Add("@CHG_JUGA_EVENT", dr["수정주가이벤트"]); arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput); oSql.ExecuteNonQuery("p_Opt10081Add", CommandType.StoredProcedure, arrParam); if (chainMaxDate != "") { if (chainMaxDate == dr["일자"].ToString().Trim()) { ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); _opt10081.Dispose(); WaitTime(); tcs.SetResult(true); OnGetStockCode(); return; } } } } else { ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate); _opt10081.Dispose(); WaitTime(); tcs.SetResult(true); OnGetStockCode(); return; } // 최근 거래일 100일을 가져오는걸로 한다면 if (chk100.Checked == true) { ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); _opt10081.Dispose(); WaitTime(); tcs.SetResult(true); OnGetStockCode(); return; } else { if (sPreNext == 2) { tcs.SetResult(true); ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "S", chainCompGb: "", chainMaxDate: "", chainMinDate: ""); //_clsDataAccessUtil.Delay(3600); WaitTime(); _opt10081.SetInit(_FormId); _opt10081.JustRequest(StockCode: sRQNameArray[1].ToString().Trim(), StockName: "", StdDate: sRQNameArray[2].ToString().Trim(), ModifyJugaGb: sRQNameArray[3].ToString().Trim(), nPrevNext: 2); } else { if (dt != null) { ClsDbLogger.OptCallMagamStoredData(actionGb: "CE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate); } else { ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate); } _opt10081.Dispose(); WaitTime(); tcs.SetResult(true); OnGetStockCode(); return; } } } catch (Exception ex) { _opt10081.Dispose(); tcs.SetResult(true); OnGetStockCode(); WaitTime(); MessageBox.Show(ex.Message.ToString()); throw; } }