private void DrawRsiTableBody(AISTOCK_STOCK_INDEX_V_DATA dataRSI, AISTOCK_STOCK_STATS_DATA stockData)
        {
            if (dataRSI == null)
            {
                return;
            }
            if (dataRSI.AISTOCK_STOCK_INDEX_V.Count <= 0)
            {
                return;
            }
            TableRow bodyRow;

            for (int i = 0; i < stockData.AISTOCK_STOCK_INFORMATION.Rows.Count; i++)
            {
                decimal sumA  = 0;
                decimal sumB  = 0;
                decimal index = 0;
                AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow stockRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)stockData.AISTOCK_STOCK_INFORMATION.Rows[i]);
                string    stockCode = stockRow.STOCK_CODE.ToString();
                DataRow[] rows      = dataRSI.AISTOCK_STOCK_INDEX_V.Select("STOCK_CODE = '" + stockCode + "'");
                if (rows.Length <= 0)
                {
                    continue;
                }
                for (int j = 0; j < rows.Length; j++)
                {
                    AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow row = (AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow)rows[j];
                    if (row.DIFF > 0)
                    {
                        sumA += row.DIFF;
                    }
                    else
                    {
                        sumB += row.DIFF;
                    }
                }
                if (sumA - sumB != 0)
                {
                    index = sumA / (sumA - sumB) * 100;
                }
                if (index < 75 || index > 80)
                {
                    continue;
                }
                bodyRow             = this.BmBlafTable.AddBodyRow();
                bodyRow.BorderColor = Color.Black;
                bodyRow.BorderWidth = Unit.Point(1);
                this.BmBlafTable.AddCell(bodyRow, stockRow.STOCK_CODE, HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.STOCK_NAME, HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, index.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_BEGINNull() ? string.Empty : stockRow.TODAY_BEGIN.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsYESTERDAY_ENDNull() ? string.Empty : stockRow.YESTERDAY_END.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_ENDNull() ? string.Empty : stockRow.TODAY_END.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsINCREASE_PERCENTNull() ? string.Empty : stockRow.INCREASE_PERCENT.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsCHARTNull() ? string.Empty : stockRow.CHART.ToString(), HorizontalAlign.Left);
            }
        }
Beispiel #2
0
        public AISTOCK_STOCK_INDEX_V_DATA GetStockDataIndex(string dateFrom, string dateTo, string code)
        {
            AISTOCK_STOCK_INDEX_V_DATA data = new AISTOCK_STOCK_INDEX_V_DATA();

            using (DaStock da = new DaStock())
            {
                da.LoadStockDataIndex(data.AISTOCK_STOCK_INDEX_V, dateFrom, dateTo, code);
            }
            return(data);
        }
        private void Refresh()
        {
            StockQueryCondition qc = new StockQueryCondition();

            qc.DeserializeFromString(this.ViewState["_StockQueryCondition"].ToString());
            this.labPrompt.Text = "";
            //查询日前两天
            string dateTo2 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 2);

            dateTo2 = DateTimeFunction.ConvertDate(DateTime.Parse(dateTo2).ToShortDateString());
            string date2RSI6 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 8);

            date2RSI6 = DateTimeFunction.ConvertDate(DateTime.Parse(date2RSI6).ToShortDateString());
            string date2RSI12 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 14);

            date2RSI12 = DateTimeFunction.ConvertDate(DateTime.Parse(date2RSI12).ToShortDateString());
            //string date2RSI24 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 26);
            //date2RSI24 = DateTimeFunction.ConvertDate(DateTime.Parse(date2RSI24).ToShortDateString());

            //查询日
            string dateTo   = DateTimeFunction.ConvertDate(qc.DatePickerFrom);
            string dateRSI6 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 6);

            dateRSI6 = DateTimeFunction.ConvertDate(DateTime.Parse(dateRSI6).ToShortDateString());
            string dateRSI12 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 12);

            dateRSI12 = DateTimeFunction.ConvertDate(DateTime.Parse(dateRSI12).ToShortDateString());
            //string dateRSI24 = new StockSystem().GetIndexDay(qc.DatePickerFrom, 24);
            //dateRSI24 = DateTimeFunction.ConvertDate(DateTime.Parse(dateRSI24).ToShortDateString());

            AISTOCK_STOCK_STATS_DATA stockData = new StockSystem().GetStockData(dateTo2, txtStockCode.Text.Trim());
            string today = DateTimeFunction.ConvertDate(DateTime.Now.ToShortDateString());

            today = new StockSystem().GetToday(today);
            bool flag = false;

            if (int.Parse(dateTo) < int.Parse(today))
            {
                flag = true;
            }

            AISTOCK_STOCK_INDEX_V_DATA data2RSI6 = new AISTOCK_STOCK_INDEX_V_DATA();

            data2RSI6 = new StockSystem().GetStockDataIndex(date2RSI6, dateTo2, txtStockCode.Text.Trim());

            this.BmBlafTable.Clear();
            DrawRsiTableHeader();
            DrawRsiTableBody(data2RSI6, stockData, txtStockCode.Text.Trim(), flag, today, dateTo2, date2RSI12, dateTo, dateRSI6, dateRSI12);
        }
Beispiel #4
0
        private void DrawRsiTableBody(AISTOCK_STOCK_INDEX_V_DATA dataRSI, AISTOCK_STOCK_STATS_DATA stockData, string code, bool isToday, string today, string date, int indexDay)
        {
            int sh = 0, sz = 0, zx = 0, bj = 0;

            if (dataRSI == null)
            {
                return;
            }
            if (dataRSI.AISTOCK_STOCK_INDEX_V.Count <= 0)
            {
                return;
            }
            TableRow bodyRow;

            for (int i = 0; i < stockData.AISTOCK_STOCK_INFORMATION.Rows.Count; i++)
            {
                decimal sumA   = 0;
                decimal sumB   = 0;
                decimal index  = 0;
                decimal sumAB  = 0;
                decimal sumBB  = 0;
                decimal indexB = 0;
                AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow stockRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)stockData.AISTOCK_STOCK_INFORMATION.Rows[i]);
                string stockCode = stockRow.STOCK_CODE.ToString();
                if (stockCode.ToLower().StartsWith("sz300") && string.IsNullOrEmpty(txtStockCode.Text))
                {
                    continue;
                }
                DataRow[] rows = dataRSI.AISTOCK_STOCK_INDEX_V.Select("STOCK_CODE = '" + stockCode + "'");
                if (rows.Length <= 0)
                {
                    continue;
                }
                for (int j = 0; j < rows.Length; j++)
                {
                    AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow row = (AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow)rows[j];
                    if (row.DIFF > 0)
                    {
                        sumA += row.DIFF;
                    }
                    else
                    {
                        sumB += row.DIFF;
                    }
                }
                if (sumA - sumB != 0)
                {
                    index = sumA / (sumA - sumB) * 100;
                }
                if ((index > 80 || index < 75) && string.IsNullOrEmpty(txtStockCode.Text))
                {
                    continue;
                }
                //计算昨天的指标是否也在75-80之间,不是则抛弃
                #region [开始计算]
                string dateTo = new StockSystem().GetIndexDay(date, 1);
                dateTo = DateTimeFunction.ConvertDate(DateTime.Parse(dateTo).ToShortDateString());
                string dateFrom = new StockSystem().GetIndexDay(date, indexDay + 1);
                dateFrom = DateTimeFunction.ConvertDate(DateTime.Parse(dateFrom).ToShortDateString());

                AISTOCK_STOCK_INDEX_V_DATA dataRSIB = new StockSystem().GetStockDataIndex(dateFrom, dateTo, stockCode);
                DataRow[] rowRSIB = dataRSIB.AISTOCK_STOCK_INDEX_V.Select("STOCK_CODE = '" + stockCode + "'");
                if (rowRSIB.Length <= 0)
                {
                    continue;
                }
                for (int j = 0; j < rowRSIB.Length; j++)
                {
                    AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow row = (AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow)rowRSIB[j];
                    if (row.DIFF > 0)
                    {
                        sumAB += row.DIFF;
                    }
                    else
                    {
                        sumBB += row.DIFF;
                    }
                }
                if (sumAB - sumBB != 0)
                {
                    indexB = sumAB / (sumAB - sumBB) * 100;
                }
                if ((indexB > 80 || indexB < 75) && string.IsNullOrEmpty(txtStockCode.Text))
                {
                    continue;
                }
                #endregion [结束计算]

                bodyRow = this.BmBlafTable.AddBodyRow();
                if (stockRow.STOCK_CODE.Contains("sh600"))
                {
                    sh++;
                }
                else if (stockRow.STOCK_CODE.Contains("sz000"))
                {
                    sz++;
                }
                else if (stockRow.STOCK_CODE.Contains("sz002"))
                {
                    zx++;
                }
                else if (stockRow.STOCK_CODE.Contains("sh601") || stockRow.STOCK_CODE.Contains("sh603"))
                {
                    bj++;
                }


                this.BmBlafTable.AddCell(bodyRow, url.Replace("stockcode", stockRow.STOCK_CODE), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.STOCK_NAME, HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, index.ToString("0.00"), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, indexB.ToString("0.00"), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_BEGINNull() ? string.Empty : stockRow.TODAY_BEGIN.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsYESTERDAY_ENDNull() ? string.Empty : stockRow.YESTERDAY_END.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_ENDNull() ? string.Empty : stockRow.TODAY_END.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsINCREASE_PERCENTNull() ? string.Empty : stockRow.INCREASE_PERCENT.ToString(), HorizontalAlign.Left);
                this.BmBlafTable.AddCell(bodyRow, stockRow.IsCHARTNull() ? string.Empty : stockRow.CHART.ToString(), HorizontalAlign.Left);

                #region [取当天数据]

                if (isToday)
                {
                    AISTOCK_STOCK_STATS_DATA todayData = new StockSystem().GetStockDataJingQue(today, stockCode);
                    AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow todayRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)todayData.AISTOCK_STOCK_INFORMATION.Rows[0]);
                    this.BmBlafTable.AddCell(bodyRow, todayRow.IsTODAY_BEGINNull() ? string.Empty : todayRow.TODAY_BEGIN.ToString(), HorizontalAlign.Left);
                    this.BmBlafTable.AddCell(bodyRow, todayRow.IsTODAY_ENDNull() ? string.Empty : todayRow.TODAY_END.ToString(), HorizontalAlign.Left);
                    this.BmBlafTable.AddCell(bodyRow, todayRow.IsINCREASE_PERCENTNull() ? string.Empty : todayRow.INCREASE_PERCENT.ToString(), HorizontalAlign.Left);
                    decimal relativePercent = 0;
                    if (stockRow.TODAY_END > 0)
                    {
                        relativePercent = (todayRow.TODAY_END - stockRow.TODAY_END) / stockRow.TODAY_END * 100;
                    }

                    this.BmBlafTable.AddCell(bodyRow, relativePercent.ToString("0.0000"), HorizontalAlign.Left);
                }
                else
                {
                    this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                    this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                    this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                    this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                }

                #endregion
            }
            int sum = sh + sz + zx + bj;
            this.labPrompt.Text = "渐强状态:共" + sum + "支,其中上市" + sh + "支,深市" + sz + "支,中小板" + zx + ",北京" + bj + "支<br/>";
        }
Beispiel #5
0
        private void Refresh()
        {
            StockQueryCondition qc = new StockQueryCondition();

            qc.DeserializeFromString(this.ViewState["_StockQueryCondition"].ToString());
            this.labPrompt.Text = "";

            int indexDay = 14;

            if (qc.Index.Equals("RSI(5)"))
            {
                indexDay = 5;
            }
            else if (qc.Index.Equals("RSI(9)"))
            {
                indexDay = 9;
            }
            else if (qc.Index.Equals("RSI(14)") || qc.Index.Equals("ADR(14)"))
            {
                indexDay = 11;
            }
            else if (qc.Index.Equals("WMS(10)") || qc.Index.Equals("ADR(10)"))
            {
                indexDay = 10;
            }
            else if (qc.Index.Equals("WMS(20)"))
            {
                indexDay = 20;
            }

            string dateTo = DateTimeFunction.ConvertDate(qc.DatePickerFrom);

            string date = new StockSystem().GetIndexDay(qc.DatePickerFrom, indexDay);

            date = DateTimeFunction.ConvertDate(DateTime.Parse(date).ToShortDateString());

            AISTOCK_STOCK_STATS_DATA stockData = new StockSystem().GetStockData(dateTo, txtStockCode.Text.Trim());

            if (qc.Index.Equals("RSI(5)") || qc.Index.Equals("RSI(9)") || qc.Index.Equals("RSI(14)"))
            {
                string today = DateTimeFunction.ConvertDate(DateTime.Now.ToShortDateString());
                today = new StockSystem().GetToday(today);
                bool flag = false;
                if (int.Parse(dateTo) < int.Parse(today))
                {
                    flag = true;
                }
                AISTOCK_STOCK_INDEX_V_DATA dataRSI = new AISTOCK_STOCK_INDEX_V_DATA();
                dataRSI = new StockSystem().GetStockDataIndex(date, dateTo, txtStockCode.Text.Trim());

                this.BmBlafTable.Clear();
                DrawRsiTableHeader();
                DrawRsiTableBody(dataRSI, stockData, txtStockCode.Text.Trim(), flag, today, qc.DatePickerFrom, indexDay);
            }
            else if (qc.Index.Equals("WMS(10)") || qc.Index.Equals("WMS(20)"))
            {
                AISTOCK_STOCK_WMS_V_DATA dataWms = new AISTOCK_STOCK_WMS_V_DATA();
                dataWms = new StockSystem().GetStockWmsData(date, dateTo, txtStockCode.Text.Trim());

                this.BmBlafTable.Clear();
                DrawWmsTableHeader();
                DrawWmsTableBody(stockData, dataWms);
            }
            else if (qc.Index.Equals("ADR(10)") || qc.Index.Equals("ADR(14)"))
            {
                AISTOCK_STOCK_ADR_INDEX_V_DATA dataAdr = new AISTOCK_STOCK_ADR_INDEX_V_DATA();
                dataAdr = new StockSystem().GetStockAdrData(date, dateTo, txtStockCode.Text.Trim());

                this.BmBlafTable.Clear();
                DrawAdrTableHeader();
                DrawAdrTableBody(dataAdr);
            }
        }
        private void DrawRsiTableBody(AISTOCK_STOCK_INDEX_V_DATA data2RSI, AISTOCK_STOCK_STATS_DATA stockData, string code, bool isToday, string today, string dateTo2, string date2RSI12, string dateTo, string dateRSI6, string dateRSI12)
        {
            if (data2RSI == null || data2RSI.AISTOCK_STOCK_INDEX_V.Count <= 0)
            {
                return;
            }
            TableRow bodyRow;

            for (int i = 0; i < stockData.AISTOCK_STOCK_INFORMATION.Rows.Count; i++)
            {
                decimal sumA  = 0;
                decimal sumB  = 0;
                decimal index = 0;
                AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow stockRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)stockData.AISTOCK_STOCK_INFORMATION.Rows[i]);
                string    stockCode = stockRow.STOCK_CODE.ToString();
                DataRow[] rows      = data2RSI.AISTOCK_STOCK_INDEX_V.Select("STOCK_CODE = '" + stockCode + "'");
                if (rows.Length <= 0)
                {
                    continue;
                }
                for (int j = 0; j < rows.Length; j++)
                {
                    AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow row = (AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow)rows[j];
                    if (row.DIFF > 0)
                    {
                        sumA += row.DIFF;
                    }
                    else
                    {
                        sumB += row.DIFF;
                    }
                }
                if (sumA - sumB != 0)
                {
                    index = sumA / (sumA - sumB) * 100;
                }
                if (index > 40)
                {
                    continue;
                }
                else
                {
                    //符合条件,计算12日RSI
                    decimal sumA12  = 0;
                    decimal sumB12  = 0;
                    decimal index12 = 0;
                    AISTOCK_STOCK_INDEX_V_DATA data2RSI12 = new AISTOCK_STOCK_INDEX_V_DATA();
                    data2RSI12 = new StockSystem().GetStockDataIndex(date2RSI12, dateTo2, stockCode);
                    foreach (var row2RSI12 in data2RSI12.AISTOCK_STOCK_INDEX_V)
                    {
                        if (row2RSI12.DIFF > 0)
                        {
                            sumA12 += row2RSI12.DIFF;
                        }
                        else
                        {
                            sumB12 += row2RSI12.DIFF;
                        }
                    }
                    if (sumA12 - sumB12 != 0)
                    {
                        index12 = sumA12 / (sumA12 - sumB12) * 100;
                        if (index12 > index)
                        {
                            //符合条件,计算查询日RSI6
                            decimal sumARSI6 = 0, sumBRSI6 = 0, indexRSI6 = 0;
                            AISTOCK_STOCK_INDEX_V_DATA dataRSI6 = new AISTOCK_STOCK_INDEX_V_DATA();
                            dataRSI6 = new StockSystem().GetStockDataIndex(dateRSI6, dateTo, stockCode);
                            foreach (var rowRSI6 in dataRSI6.AISTOCK_STOCK_INDEX_V)
                            {
                                if (rowRSI6.DIFF > 0)
                                {
                                    sumARSI6 += rowRSI6.DIFF;
                                }
                                else
                                {
                                    sumBRSI6 += rowRSI6.DIFF;
                                }
                            }
                            if (sumARSI6 - sumBRSI6 != 0)
                            {
                                indexRSI6 = sumARSI6 / (sumARSI6 - sumBRSI6) * 100;
                                decimal sumARSI12 = 0, sumBRSI12 = 0, indexRSI12 = 0;
                                AISTOCK_STOCK_INDEX_V_DATA dataRSI12 = new AISTOCK_STOCK_INDEX_V_DATA();
                                dataRSI12 = new StockSystem().GetStockDataIndex(dateRSI12, dateTo, stockCode);
                                foreach (var rowRSI12 in dataRSI12.AISTOCK_STOCK_INDEX_V)
                                {
                                    if (rowRSI12.DIFF > 0)
                                    {
                                        sumARSI12 += rowRSI12.DIFF;
                                    }
                                    else
                                    {
                                        sumBRSI12 += rowRSI12.DIFF;
                                    }
                                }
                                if (sumARSI12 - sumBRSI12 != 0)
                                {
                                    indexRSI12 = sumARSI12 / (sumARSI12 - sumBRSI12) * 100;
                                    if (indexRSI6 > indexRSI12)
                                    {
                                        //符合条件,输出
                                        //成交量指标
                                        int     quantity = new StockSystem().GetQuantity(stockCode);
                                        decimal ratio;
                                        if (quantity == 0)
                                        {
                                            ratio = -1;
                                        }
                                        ratio = (decimal)stockRow.QUANTITY / (decimal)quantity;
                                        if (ratio < 2)
                                        {
                                            continue;
                                        }
                                        if (index == 0)
                                        {
                                            continue;
                                        }

                                        bodyRow = this.BmBlafTable.AddBodyRow();
                                        this.BmBlafTable.AddCell(bodyRow, url.Replace("stockcode", stockRow.STOCK_CODE), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, stockRow.STOCK_NAME, HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, index.ToString("0.00"), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, ratio.ToString("0.00"), HorizontalAlign.Left);

                                        this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_BEGINNull() ? string.Empty : stockRow.TODAY_BEGIN.ToString(), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, stockRow.IsYESTERDAY_ENDNull() ? string.Empty : stockRow.YESTERDAY_END.ToString(), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, stockRow.IsTODAY_ENDNull() ? string.Empty : stockRow.TODAY_END.ToString(), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, stockRow.IsINCREASE_PERCENTNull() ? string.Empty : stockRow.INCREASE_PERCENT.ToString(), HorizontalAlign.Left);
                                        this.BmBlafTable.AddCell(bodyRow, stockRow.IsCHARTNull() ? string.Empty : stockRow.CHART.ToString(), HorizontalAlign.Left);

                                        #region [取当天数据]

                                        if (isToday)
                                        {
                                            AISTOCK_STOCK_STATS_DATA todayData = new StockSystem().GetStockDataJingQue(today, stockCode);
                                            AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow todayRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)todayData.AISTOCK_STOCK_INFORMATION.Rows[0]);
                                            this.BmBlafTable.AddCell(bodyRow, todayRow.IsTODAY_BEGINNull() ? string.Empty : todayRow.TODAY_BEGIN.ToString(), HorizontalAlign.Left);
                                            this.BmBlafTable.AddCell(bodyRow, todayRow.IsTODAY_ENDNull() ? string.Empty : todayRow.TODAY_END.ToString(), HorizontalAlign.Left);
                                            this.BmBlafTable.AddCell(bodyRow, todayRow.IsINCREASE_PERCENTNull() ? string.Empty : todayRow.INCREASE_PERCENT.ToString(), HorizontalAlign.Left);
                                            decimal relativePercent = 0;
                                            if (stockRow.TODAY_END > 0)
                                            {
                                                relativePercent = (todayRow.TODAY_END - stockRow.TODAY_END) / stockRow.TODAY_END * 100;
                                            }

                                            this.BmBlafTable.AddCell(bodyRow, relativePercent.ToString("0.0000"), HorizontalAlign.Left);
                                        }
                                        else
                                        {
                                            this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                                            this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                                            this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                                            this.BmBlafTable.AddCell(bodyRow, "", HorizontalAlign.Left);
                                        }
                                        #endregion
                                    }
                                }
                            }
                            else
                            {
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }
        }
Beispiel #7
0
        private void RSIData(string dateTo, string date1)
        {
            int    indexDay = 14;
            string date     = new StockSystem().GetIndexDay(date1, indexDay);

            date = DateTimeFunction.ConvertDate(DateTime.Parse(date).ToShortDateString());
            AISTOCK_STOCK_INDEX_V_DATA dataRSI = new AISTOCK_STOCK_INDEX_V_DATA();

            dataRSI = new StockSystem().GetStockDataIndex(date, dateTo, "");
            AISTOCK_STOCK_STATS_DATA stockData = new StockSystem().GetStockData(dateTo, "");
            AISTOCK_STOCK_WMS_V_DATA dataWms   = new AISTOCK_STOCK_WMS_V_DATA();

            dataWms = new StockSystem().GetStockWmsData(date, dateTo, "");
            if (dataRSI == null)
            {
                return;
            }
            if (dataRSI.AISTOCK_STOCK_INDEX_V.Count <= 0)
            {
                return;
            }
            int           count = 0;
            StringBuilder sb    = new StringBuilder();
            AISTOCK_STOCK_COMMAND_DATA saveData = new AISTOCK_STOCK_COMMAND_DATA();

            for (int i = 0; i < stockData.AISTOCK_STOCK_INFORMATION.Rows.Count; i++)
            {
                decimal sumA  = 0;
                decimal sumB  = 0;
                decimal index = 0;
                AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow stockRow = ((AISTOCK_STOCK_STATS_DATA.AISTOCK_STOCK_INFORMATIONRow)stockData.AISTOCK_STOCK_INFORMATION.Rows[i]);
                string    stockCode = stockRow.STOCK_CODE.ToString();
                DataRow[] rows      = dataRSI.AISTOCK_STOCK_INDEX_V.Select("STOCK_CODE = '" + stockCode + "'");
                if (!stockCode.ToLower().StartsWith("sz002"))
                {
                    continue;
                }
                if (rows.Length <= 0)
                {
                    continue;
                }
                for (int j = 0; j < rows.Length; j++)
                {
                    AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow row = (AISTOCK_STOCK_INDEX_V_DATA.AISTOCK_STOCK_INDEX_VRow)rows[j];
                    if (row.DIFF > 0)
                    {
                        sumA += row.DIFF;
                    }
                    else
                    {
                        sumB += row.DIFF;
                    }
                }
                if (sumA - sumB != 0)
                {
                    index = sumA / (sumA - sumB) * 100;
                }
                if (index == 0 || index > 10)
                {
                    continue;
                }

                //WM Index
                DataRow[] wmrow     = dataWms.AISTOCK_STOCK_WMS_V.Select("STOCK_CODE = '" + stockCode + "'");
                decimal   max_price = 0;
                decimal   min_price = 0;
                decimal   end_price = 0;
                decimal   wmindex   = 0;
                max_price = ((AISTOCK_STOCK_WMS_V_DATA.AISTOCK_STOCK_WMS_VRow)wmrow[0]).MAX_PRICE;
                min_price = ((AISTOCK_STOCK_WMS_V_DATA.AISTOCK_STOCK_WMS_VRow)wmrow[0]).MIN_PRICE;
                end_price = stockRow.TODAY_END;
                if (max_price - min_price != 0)
                {
                    wmindex = (max_price - end_price) / (max_price - min_price) * 100;
                }

                if (wmindex > 0)
                {
                    continue;
                }

                int     quantity = new StockSystem().GetQuantity(stockCode);
                decimal ratio;
                if (quantity == 0)
                {
                    ratio = -1;
                }
                else
                {
                    ratio = (decimal)stockRow.QUANTITY / (decimal)quantity;
                }

                count++;
                AISTOCK_STOCK_COMMAND_DATA.AISTOCK_STOCK_COMMANDRow saveRow = saveData.AISTOCK_STOCK_COMMAND.NewAISTOCK_STOCK_COMMANDRow();
                saveRow.STOCK_ID    = Guid.NewGuid().ToString();
                saveRow.STOCK_CODE  = stockCode;
                saveRow.STOCK_NAME  = stockRow.STOCK_NAME;
                saveRow.STOCK_DAY   = stockRow.STOCK_DAY;
                saveRow.TODAY_BEGIN = stockRow.TODAY_BEGIN;
                saveRow.TODAY_END   = stockRow.TODAY_END;
                saveRow.MAX_PRICE   = stockRow.MAX_PRICE;
                saveRow.MIN_PRICE   = stockRow.MIN_PRICE;
                saveRow.RSI         = index;
                saveRow.WM          = wmindex;
                saveRow.RATIO       = ratio;
                saveData.AISTOCK_STOCK_COMMAND.AddAISTOCK_STOCK_COMMANDRow(saveRow);
                sb.Append("@" + stockCode + "@" + index.ToString("0.00") + "\n");
            }
            if (count > 0)
            {
                new StockSystem().SaveRSIData(saveData);
                SendEmail("敌情资讯", sb.ToString());
            }
        }
        private void Refresh()
        {
            string dateFrom     = Request.QueryString["datefrom"] == null ? string.Empty : Request.QueryString["datefrom"];
            string market       = Request.QueryString["market"] == null ? string.Empty : Request.QueryString["market"];
            string field        = Request.QueryString["field"] == null ? string.Empty : Request.QueryString["field"];
            string index        = Request.QueryString["index"] == null ? string.Empty : Request.QueryString["index"];
            string province     = Request.QueryString["province"] == null ? string.Empty : Request.QueryString["province"];
            string stockName    = Request.QueryString["stockName"] == null ? string.Empty : Request.QueryString["stockName"].ToString().Trim();
            string stockcode    = Request.QueryString["stockcode"] == null ? string.Empty : Request.QueryString["stockcode"];
            string MarketName   = Request.QueryString["MarketName"] == "--请选择--" ? string.Empty : Request.QueryString["MarketName"];
            string FieldName    = Request.QueryString["FieldName"] == "--请选择--" ? string.Empty : Request.QueryString["FieldName"].Trim();
            string IndexName    = Request.QueryString["IndexName"].Trim();
            string ProvinceName = Request.QueryString["ProvinceName"] == "--请选择--" ? string.Empty : Request.QueryString["ProvinceName"].Trim();

            StockQueryCondition qc = new StockQueryCondition();

            qc.DatePickerFrom = dateFrom;
            qc.StockCode      = stockcode;
            qc.StockName      = stockName;
            qc.Market         = MarketName;
            qc.Field          = FieldName;
            qc.Index          = IndexName;
            qc.Province       = ProvinceName;

            this.ViewState["_StockQueryCondition"] = qc.SerializeToString();

            int indexDay = 14;

            if (qc.Index.Equals("RSI(5)"))
            {
                indexDay = 5;
            }
            else if (qc.Index.Equals("RSI(9)"))
            {
                indexDay = 9;
            }
            else if (qc.Index.Equals("RSI(14)"))
            {
                indexDay = 14;
            }
            else if (qc.Index.Equals("WMS(10)"))
            {
                indexDay = 10;
            }
            else if (qc.Index.Equals("WMS(20)"))
            {
                indexDay = 20;
            }

            string dateTo = DateTimeFunction.ConvertDate(qc.DatePickerFrom);
            string date   = new StockSystem().GetIndexDay(qc.DatePickerFrom, indexDay);

            date = DateTimeFunction.ConvertDate(DateTime.Parse(date).ToShortDateString());

            AISTOCK_STOCK_STATS_DATA stockData = new StockSystem().GetStockData(dateTo, stockcode);

            if (qc.Index.Equals("RSI(5)") || qc.Index.Equals("RSI(9)") || qc.Index.Equals("RSI(14)"))
            {
                AISTOCK_STOCK_INDEX_V_DATA dataRSI = new AISTOCK_STOCK_INDEX_V_DATA();
                dataRSI = new StockSystem().GetStockDataIndex(date, dateTo, stockcode);

                this.BmBlafTable.Clear();
                this.BmBlafTable.BorderColor = Color.Black;
                this.BmBlafTable.BorderWidth = Unit.Point(1);
                DrawRsiTableHeader();
                DrawRsiTableBody(dataRSI, stockData);
            }
            else if (qc.Index.Equals("WMS(10)") || qc.Index.Equals("WMS(20)"))
            {
                AISTOCK_STOCK_WMS_V_DATA dataWms = new AISTOCK_STOCK_WMS_V_DATA();
                dataWms = new StockSystem().GetStockWmsData(date, dateTo, stockcode);

                this.BmBlafTable.Clear();
                this.BmBlafTable.BorderColor = Color.Black;
                this.BmBlafTable.BorderWidth = Unit.Point(1);
                DrawWmsTableHeader();
                DrawWmsTableBody(stockData, dataWms);
            }
            this.LabelTitle.Text = "名称:股票指标分析<br>" +
                                   "创建时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "<br>" +
                                   "时间:" + qc.DatePickerFrom + "<br>" +
                                   "所属证券市场:" + (qc.Market == string.Empty ? "ALL" : qc.Market) + "<br>" +
                                   "所属证监会行业:" + (qc.Field == string.Empty ? "ALL" : qc.Field) + "<br>" +
                                   "所属省份:" + (qc.Province == string.Empty ? "ALL" : qc.Province) + "<br>" +
                                   "指标类型:" + (qc.Index == string.Empty ? "ALL" : qc.Index) + "<br>" +
                                   "股票代码:" + (qc.StockCode == string.Empty ? "ALL" : qc.StockCode) +
                                   "股票名称:" + (qc.StockName == string.Empty ? "ALL" : qc.StockName);
        }