コード例 #1
0
        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, "", "");
        }
コード例 #2
0
    public IEnumerable <object[]> Data()
    {
        const int count1 = 1000;

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateNoDuplInput(count1).ToArray()), $"NoDupl, Count={count1}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateAllDuplInput(count1).ToArray()), $"AllDupl, Count={count1}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateRandomDuplInput(count1).ToArray()), $"RandomInput, Count={count1}" });

        const int count2 = 10_000;

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateNoDuplInput(count2).ToArray()), $"NoDupl, Count={count2}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateAllDuplInput(count2).ToArray()), $"AllDupl, Count={count2}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateRandomDuplInput(count2).ToArray()), $"RandomInput, Count={count2}" });

        const int count3 = 100_000;

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateNoDuplInput(count3).ToArray()), $"NoDupl, Count={count3}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateAllDuplInput(count3).ToArray()), $"AllDupl, Count={count3}" });

        yield return(new object[] { ArrayParam <string> .ForPrimitives(CreateRandomDuplInput(count3).ToArray()), $"RandomInput, Count={count3}" });
    }
コード例 #3
0
        public IEnumerable <object[]> Data()
        {
            yield return(new object[] { ArrayParam <int> .ForPrimitives(new[] { 1, 2, 3 }), 4 });

            yield return(new object[] { ArrayParam <int> .ForPrimitives(Enumerable.Range(0, 100).ToArray()), 4 });

            yield return(new object[] { ArrayParam <int> .ForPrimitives(Enumerable.Range(0, 100).ToArray()), 101 });
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        private static object Map(object providedValue)
        {
            if (providedValue == null)
            {
                return(null);
            }

            return(providedValue.GetType().IsArray ? ArrayParam <IParam> .FromObject(providedValue) : providedValue);
        }
コード例 #6
0
        private void ThemaStoreRecord(string actionGb)
        {
            ArrayParam arrParam = new ArrayParam();
            Sql        oSql     = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB");

            arrParam.Add("@ACTION_GB", "A");
            arrParam.Add("@THEMA_CODE", lblThema.Text);
            arrParam.Add("@TGPSEQ_NO", lblThemaGroup.Text);
            arrParam.Add("@THEMA_NAME", txtThema.Text);
            arrParam.Add("@THEMA_DESC", txtThemaDesc.Text);
            arrParam.Add("@WORK_ID", "ADMIN00000");
            arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput);

            oSql.ExecuteNonQuery("p_ThemaAdd", CommandType.StoredProcedure, arrParam);

            GetThemaData();
        }
コード例 #7
0
        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: "");
        }
コード例 #8
0
        private void ThemaGroupStoreRecord(string actionGb)
        {
            ArrayParam arrParam = new ArrayParam();
            Sql        oSql     = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB");

            arrParam.Add("@ACTION_GB", actionGb);
            arrParam.Add("@TGPSEQ_NO", 0);
            arrParam.Add("@THGROUP_NAME", txtThemaGroup.Text.Trim());
            arrParam.Add("@THGROUP_DESC", txtThemaGroupDesc.Text.Trim());
            arrParam.Add("@WORK_ID", "ADMIN00000");
            arrParam.Add("@R_ErrorCD", -1, SqlDbType.Int, ParameterDirection.InputOutput);

            oSql.ExecuteNonQuery("p_THEMA_GROUPAdd", CommandType.StoredProcedure, arrParam);

            MessageBox.Show("입력되었습니다.");

            GetThemaGroupData();
        }
コード例 #9
0
        private void ThemstStoreRecord(string actionGb, string stockCode)
        {
            ArrayParam arrParam = new ArrayParam();
            Sql        oSql     = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "RICHDB");

            arrParam.Add("@ACTION_GB", actionGb);
            arrParam.Add("@STOCK_CODE", stockCode);
            arrParam.Add("@THEMA_CODE", lblThema.Text);
            arrParam.Add("@DESC_TEXT", "");
            arrParam.Add("@WORK_ID", "ADMIN00000");
            arrParam.Add("@R_ErrorCD", -1, SqlDbType.Int, ParameterDirection.InputOutput);

            oSql.ExecuteNonQuery("p_ThestAdd", CommandType.StoredProcedure, arrParam);

            //MessageBox.Show("입력되었습니다.");

            GetThemaByStockCode();
        }
コード例 #10
0
        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();
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        private static object Map(object providedValue, Type type)
        {
            if (providedValue == null)
            {
                return(null);
            }

            if (providedValue.GetType().IsArray)
            {
                return(ArrayParam <IParam> .FromObject(providedValue));
            }
            // Usually providedValue contains all needed type information,
            // but in case of F# enum types in attributes are erased.
            // We can to restore them from types of arguments and fields.
            // See also:
            // https://github.com/dotnet/fsharp/issues/995
            else if (providedValue.GetType().IsEnum || type.IsEnum)
            {
                return(EnumParam.FromObject(providedValue, type));
            }
            return(providedValue);
        }
コード例 #13
0
        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("작업이 완료되었습니다.");
            }
        }
コード例 #14
0
        public Dictionary <string, IParameter> Read(IPackage owner)
        {
            Dictionary <string, IParameter> parameters = new Dictionary <string, IParameter>();

            if (File.Exists(_FileName))
            {
                StreamReader sr      = new StreamReader(_FileName);
                var          txt     = sr.ReadToEnd().Trim();
                var          lines   = txt.Split(new char[] { '\n' });
                string       newline = "";
                int          dimRow  = 0;
                int          paraRow = 0;
                for (int i = 0; i < lines.Length; i++)
                {
                    if (lines[i].ToLower().Contains("dimensions"))
                    {
                        dimRow = i;
                    }
                    if (lines[i].ToLower().Contains("parameters"))
                    {
                        paraRow = i;
                        break;
                    }
                }
                //read dimensions
                for (int i = dimRow + 1; i < paraRow;)
                {
                    i++;
                    newline = lines[i].Trim();
                    SingleParam <int> gv = new SingleParam <int>(newline)
                    {
                        Dimension      = 1,
                        VariableType   = ParameterType.Dimension,
                        DimensionNames = dim_name
                    };
                    i++;
                    newline  = lines[i].Trim();
                    gv.Value = int.Parse(newline);
                    if (!parameters.Keys.Contains(gv.Name))
                    {
                        parameters.Add(gv.Name, gv);
                    }
                    i++;
                }
                if (paraRow == 0)
                {
                    paraRow = -1;
                }
                //read parameters
                for (int i = paraRow + 1; i < lines.Length;)
                {
                    i++;
                    newline = TypeConverterEx.Split <string>(lines[i], 1)[0];
                    string name = newline.Trim();
                    i++;
                    newline = lines[i];
                    int      Dimension      = int.Parse(newline.Trim());
                    string[] dimensionNames = new string[Dimension];
                    for (int d = 0; d < Dimension; d++)
                    {
                        i++;
                        dimensionNames[d] = lines[i].Trim();
                    }
                    i++;
                    newline = lines[i];
                    int ValueCount = int.Parse(newline.Trim());
                    i++;
                    newline = lines[i];
                    int ValueType = int.Parse(newline.Trim());
                    if (ValueType == 0)
                    {
                        ArrayParam <short> gv = new ArrayParam <short>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = owner,
                        };
                        gv.Values = TypeConverterEx.ChangeType <short>(lines, i + 1, i + ValueCount);
                        if (!parameters.Keys.Contains(gv.Name))
                        {
                            parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 1)
                    {
                        ArrayParam <int> gv = new ArrayParam <int>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = owner,
                        };
                        gv.Values = TypeConverterEx.ChangeType <int>(lines, i + 1, i + ValueCount);
                        if (!parameters.Keys.Contains(gv.Name))
                        {
                            parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 2)
                    {
                        ArrayParam <float> gv = new ArrayParam <float>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = owner
                        };
                        gv.Values = TypeConverterEx.ChangeType <float>(lines, i + 1, i + ValueCount);
                        if (!parameters.Keys.Contains(gv.Name))
                        {
                            parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 3)
                    {
                        ArrayParam <double> gv = new ArrayParam <double>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = owner
                        };
                        gv.Values = TypeConverterEx.ChangeType <double>(lines, i + 1, i + ValueCount);
                        if (!parameters.Keys.Contains(gv.Name))
                        {
                            parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 4)
                    {
                        ArrayParam <string> gv = new ArrayParam <string>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = owner
                        };
                        gv.Values = TypeConverterEx.ChangeType <string>(lines, i + 1, i + ValueCount);
                        if (!parameters.Keys.Contains(gv.Name))
                        {
                            parameters.Add(gv.Name, gv);
                        }
                    }

                    i += ValueCount + 1;
                }
                IsLoaded = true;

                foreach (var pr in parameters.Values)
                {
                    pr.Owner = owner;
                }

                return(parameters);
            }
            else
            {
                Message  = string.Format("\r\n Failed to load . The package file does not exist: {0}", _FileName);
                IsLoaded = false;
                return(parameters);
            }
        }
コード例 #15
0
 public IEnumerable <object[]> Data()
 {
     yield return(new object[] { ArrayParam <int> .ForPrimitives(new[] { 1, 2, 3 }), 4 });
 }
コード例 #16
0
        /// <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);
        }
コード例 #17
0
 private object[] CreateArrayAndValue(int[] array, int value)
 => new object[]
 {
     ArrayParam <int> .ForPrimitives(array), value
 };
コード例 #18
0
        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;
            }
        }
コード例 #19
0
        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);
            }
        }
コード例 #20
0
        public override bool Load(ICancelProgressHandler progress)
        {
            if (File.Exists(FileName))
            {
                StreamReader sr      = new StreamReader(FileName);
                var          txt     = sr.ReadToEnd().Trim();
                var          lines   = txt.Split(new char[] { '\n' });
                string       newline = "";
                int          dimRow  = 0;
                int          paraRow = 0;
                for (int i = 0; i < lines.Length; i++)
                {
                    if (lines[i].ToLower().Contains("dimensions"))
                    {
                        dimRow = i;
                    }
                    if (lines[i].ToLower().Contains("parameters"))
                    {
                        paraRow = i;
                        break;
                    }
                }
                //read dimensions
                for (int i = dimRow + 1; i < paraRow;)
                {
                    i++;
                    newline = lines[i].Trim();
                    SingleParam <int> gv = new SingleParam <int>(newline)
                    {
                        Dimension      = 1,
                        VariableType   = ParameterType.Dimension,
                        DimensionNames = dim_name
                    };
                    i++;
                    newline  = lines[i].Trim();
                    gv.Value = int.Parse(newline);
                    if (!Parameters.Keys.Contains(gv.Name))
                    {
                        Parameters.Add(gv.Name, gv);
                    }
                    i++;
                }
                //read parameters
                for (int i = paraRow + 1; i < lines.Length;)
                {
                    i++;
                    newline = TypeConverterEx.Split <string>(lines[i], 1)[0];
                    string name = newline.Trim();
                    i++;
                    newline = lines[i];
                    int      Dimension      = int.Parse(newline.Trim());
                    string[] dimensionNames = new string[Dimension];
                    for (int d = 0; d < Dimension; d++)
                    {
                        i++;
                        dimensionNames[d] = lines[i].Trim();
                    }
                    i++;
                    newline = lines[i];
                    int ValueCount = int.Parse(newline.Trim());
                    i++;
                    newline = lines[i];
                    int ValueType = int.Parse(newline.Trim());
                    if (ValueType == 0)
                    {
                        ArrayParam <short> gv = new ArrayParam <short>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = this,
                        };
                        gv.Values = TypeConverterEx.ChangeType <short>(lines, i + 1, i + ValueCount);
                        if (!Parameters.Keys.Contains(gv.Name))
                        {
                            Parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 1)
                    {
                        ArrayParam <int> gv = new ArrayParam <int>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = this,
                        };
                        gv.Values = TypeConverterEx.ChangeType <int>(lines, i + 1, i + ValueCount);
                        if (!Parameters.Keys.Contains(gv.Name))
                        {
                            Parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 2)
                    {
                        ArrayParam <float> gv = new ArrayParam <float>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = this
                        };
                        gv.Values = TypeConverterEx.ChangeType <float>(lines, i + 1, i + ValueCount);
                        if (!Parameters.Keys.Contains(gv.Name))
                        {
                            Parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 3)
                    {
                        ArrayParam <double> gv = new ArrayParam <double>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = this
                        };
                        gv.Values = TypeConverterEx.ChangeType <double>(lines, i + 1, i + ValueCount);
                        if (!Parameters.Keys.Contains(gv.Name))
                        {
                            Parameters.Add(gv.Name, gv);
                        }
                    }
                    else if (ValueType == 4)
                    {
                        ArrayParam <string> gv = new ArrayParam <string>(name)
                        {
                            ValueType      = ValueType,
                            VariableType   = ParameterType.Parameter,
                            Dimension      = Dimension,
                            DimensionNames = dimensionNames,
                            Owner          = this
                        };
                        gv.Values = TypeConverterEx.ChangeType <string>(lines, i + 1, i + ValueCount);
                        if (!Parameters.Keys.Contains(gv.Name))
                        {
                            Parameters.Add(gv.Name, gv);
                        }
                    }

                    i += ValueCount + 1;
                }
                OnLoaded(progress);
                return(true);
            }
            else
            {
                Message = string.Format("\tFailed to load {0}. The package file does not exist: {1}", Name, FileName);
                OnLoadFailed(Message, progress);
                return(false);
            }
        }
コード例 #21
0
        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();
        }
コード例 #22
0
        private void Opt10005_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.Opt10005, 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 (_MaxStockDate10005 == dr["날짜"].ToString().Trim())
                    {
                        _opt10005.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("@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_Opt10005Add", CommandType.StoredProcedure, arrParam);
                    }
                }
            }
            if (sPreNext == 2)
            {
                tcs.SetResult(true);

                _opt10005.SetInit(_FormId);
                _opt10005.JustRequest(StockCode: sRQNameArray[1].ToString().Trim(), StockName: "", nPrevNext: 2);
            }
            else
            {
                _opt10005.Dispose();

                tcs.SetResult(true);
            }

            OnGetStockCode();
        }
コード例 #23
0
        private IEnumerable <IParsedParam> GetCommandParams(IEnumerable <string> parameters)
        {
            int paramIndex = 0;

            foreach (var item in parameters)
            {
                var match      = NameValueSpitter.Match(item);
                var paramName  = match.Groups["paramName"].Value;
                var paramValue = match.Groups["paramValue"].Value;

                if (paramValue.StartsWith(ARRAY_START_IDENTIFIER) &&
                    paramValue.EndsWith(ARRAY_END_IDENTIFIER))
                {
                    paramValue = paramValue.Substring(1, paramValue.Length - 2);

                    var subMatches = BalancedParenthesesRegex.Matches(paramValue);
                    // if( subMatches.Count > 1 )
                    {
                        var subParams = subMatches.Cast <Match>()
                                        .Select(c => c.Groups["params"].Value);

                        var arrayParam = new ArrayParam()
                        {
                            Name  = paramName,
                            Index = paramIndex
                        };

                        foreach (var subParam in GetCommandParams(subParams))
                        {
                            arrayParam.Add(subParam);
                        }

                        yield return(arrayParam);
                    }
                }
                else if (paramValue.StartsWith(OBJECT_START_IDENTIFIER) &&
                         paramValue.EndsWith(OBJECT_END_IDENTIFIER))
                {
                    paramValue = paramValue.Substring(1, paramValue.Length - 2);

                    var subMatches = BalancedParenthesesRegex.Matches(paramValue);
                    var subParams  = subMatches.Cast <Match>()
                                     .Select(c => c.Groups["params"].Value);

                    var subparamList = new List <IParsedParam>();

                    foreach (var subParam in GetCommandParams(subParams))
                    {
                        subparamList.Add(subParam);
                    }

                    yield return(new ComplexParam()
                    {
                        Name = paramName,
                        Index = paramIndex,
                        SubParams = subparamList.ToArray()
                    });
                }
                else if (paramValue.StartsWith(@"""") && paramValue.EndsWith(@""""))
                {
                    paramValue = paramValue.Substring(1, paramValue.Length - 2);
                    yield return(new SimpleParam()
                    {
                        Name = paramName,
                        Value = paramValue,
                        Index = paramIndex
                    });
                }
                else
                {
                    yield return(new SimpleParam()
                    {
                        Name = paramName,
                        Value = paramValue,
                        Index = paramIndex
                    });
                }

                paramIndex++;
            }
        }
コード例 #24
0
        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;
            }
        }
コード例 #25
0
        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;
            }
        }