コード例 #1
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
        /// <summary>
        /// Constructors to create a market indicator's data for specific stock list
        /// </summary>
        /// <param name="timeRange"></param>
        /// <param name="timeScale"></param>
        /// <param name="stockCodes"></param>
        public MarketData(AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale, StringCollection stockCodes)
        {
            DateTime startDate = DateTime.Today, endDate = DateTime.Today;

            AppTypes.GetDate(timeRange, out startDate, out endDate);
            this.Init(startDate, endDate, timeScale, stockCodes);
        }
コード例 #2
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
        /// <summary>
        /// Constructors to create a market indicator's data for all enable stock
        /// </summary>
        /// <param name="timeRange"></param>
        /// <param name="timeScale"></param>
        public MarketData(AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale)
        {
            DateTime startDate = DateTime.Today, endDate = DateTime.Today;

            AppTypes.GetDate(timeRange, out startDate, out endDate);
            this.Init(startDate, endDate, timeScale, null);
        }
コード例 #3
0
ファイル: DbAccess.cs プロジェクト: oghenez/trade-software
 public static baseDS.priceDataStatDataTable GetPriceDataStat(AppTypes.TimeScale timeScale, string code)
 {
     if (timeScale == AppTypes.MainDataTimeScale)
     {
         return(priceDataStatTA.GetStatByCode(code));
     }
     return(priceDataStatTA.GetStatByTypeAndCode(timeScale.Code, code));
 }
コード例 #4
0
ファイル: baseTesting.cs プロジェクト: oghenez/trade-software
 protected void ShowStock(string stockCode, AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale)
 {
     if (myShowStock == null)
     {
         return;
     }
     myShowStock(stockCode, timeRange, timeScale);
 }
コード例 #5
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
 private void Init(DateTime startDateTime, DateTime endDateTime, AppTypes.TimeScale timeScale, StringCollection stockCodes)
 {
     this.Cache.Clear();
     this.StartDateTime = startDateTime;
     this.EndDateTime = endDateTime;
     if (stockCodes != null && stockCodes.Count != 0)
         this.StockCodeList = common.system.MakeConditionStr(stockCodes, "'", "'", ",");
     else this.StockCodeList = null;
     this.TimeScale = timeScale;
 }
コード例 #6
0
ファイル: DbAccess.cs プロジェクト: oghenez/trade-software
        public static int GetTotalPriceRow(AppTypes.TimeScale timeScale, DateTime frDate, DateTime toDate, string stockCode)
        {
            switch (timeScale.Type)
            {
            case AppTypes.TimeScaleTypes.RealTime:
                return((int)priceDataTA.GetTotalRow(frDate, toDate, stockCode));

            default:
                return((int)priceDataTA.GetTotalSumRow(timeScale.Code, frDate, toDate, stockCode));
            }
        }
コード例 #7
0
 public TradeAlertItem(string stockCode, string strategy, AppTypes.TimeScale timeScale, DateTime onDateTime,
                       double price, double volume, TradePointInfo tradePoint)
 {
     this.StockCode = stockCode;
     this.TimeScale = timeScale;
     this.Strategy = strategy;
     this.OnDateTime = onDateTime;
     this.Price = price;
     this.Volume = volume;
     this.TradePoint = tradePoint;
 }
コード例 #8
0
 public TradeAlertItem(string stockCode, string strategy, AppTypes.TimeScale timeScale, DateTime onDateTime,
                       double price, double volume, TradePointInfo tradePoint)
 {
     this.StockCode  = stockCode;
     this.TimeScale  = timeScale;
     this.Strategy   = strategy;
     this.OnDateTime = onDateTime;
     this.Price      = price;
     this.Volume     = volume;
     this.TradePoint = tradePoint;
 }
コード例 #9
0
        private void ShowEstimationForm(data.baseDS.stockCodeRow stockCodeRow, data.baseDS.strategyRow strategyRow,
                                        AppTypes.TimeScale timeScale, DateTime frDate, DateTime toDate)
        {
            Data data = new Data(frDate, toDate, timeScale, stockCodeRow.code);

            Analysis.AnalysisResult advices = appHub.strategy.TradeAnalysis(data, strategyRow.code);
            if (advices != null)
            {
                myAdviceEstimateForm.Init(data, advices);
                myAdviceEstimateForm.ShowForm();
            }
        }
コード例 #10
0
 public void ShowForm(string stockCode, StringCollection strategyCodes, AppTypes.TimeScale timeScale)
 {
     watchListLb.LoadData(commonClass.SysLibs.sysLoginCode, false);
     this.myStrategyCodes     = strategyCodes;
     this.codeEd.Text         = stockCode;
     this.timeScaleCb.myValue = timeScale;
     strategyLb.Items.Clear();
     for (int idx = 0; idx < strategyCodes.Count; idx++)
     {
         strategyLb.Items.Add(application.Strategy.StrategyLibs.GetMetaName(strategyCodes[idx]));
     }
     this.timeScaleCb.myValue = timeScale;
     this.ShowDialog();
 }
コード例 #11
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
 private void Init(DateTime startDateTime, DateTime endDateTime, AppTypes.TimeScale timeScale, StringCollection stockCodes)
 {
     this.Cache.Clear();
     this.StartDateTime = startDateTime;
     this.EndDateTime   = endDateTime;
     if (stockCodes != null && stockCodes.Count != 0)
     {
         this.StockCodeList = common.system.MakeConditionStr(stockCodes, "'", "'", ",");
     }
     else
     {
         this.StockCodeList = null;
     }
     this.TimeScale = timeScale;
 }
コード例 #12
0
 private static void CreateTradeAlert(databases.baseDS.tradeAlertDataTable tradeAlertTbl, string portfolioCode,
                                      string stockCode, string strategy, AppTypes.TimeScale timeScale, TradePointInfo info, DateTime onTime, string msg)
 {
     databases.baseDS.tradeAlertRow row = tradeAlertTbl.NewtradeAlertRow();
     databases.AppLibs.InitData(row);
     row.onTime      = onTime;
     row.portfolio   = portfolioCode;
     row.stockCode   = stockCode;
     row.timeScale   = timeScale.Code;
     row.strategy    = strategy;
     row.status      = (byte)AppTypes.CommonStatus.New;
     row.tradeAction = (byte)info.TradeAction;
     row.subject     = info.TradeAction.ToString();
     row.msg         = msg;
     tradeAlertTbl.AddtradeAlertRow(row);
 }
コード例 #13
0
        /// <summary>
        /// Get aggregation date/time from a date/time
        /// </summary>
        /// <param name="type"></param>
        /// <param name="onDateTime"></param>
        /// <param name="ci"></param>
        /// <returns></returns>
        public static DateTime AggregateDateTime(AppTypes.TimeScale timeScale, DateTime onDateTime, CultureInfo ci)
        {
            if (timeScale.Type == AppTypes.TimeScaleTypes.RealTime)
            {
                return(onDateTime);
            }
            switch (timeScale.Type)
            {
            case AppTypes.TimeScaleTypes.Minnute:
                int newMin = ((int)(onDateTime.Minute / timeScale.AggregationValue)) * timeScale.AggregationValue;
                return(onDateTime.Date.AddHours(newMin));

            case AppTypes.TimeScaleTypes.Hour:
                int newHour = ((int)(onDateTime.Hour / timeScale.AggregationValue)) * timeScale.AggregationValue;
                return(onDateTime.Date.AddHours(newHour));

            case AppTypes.TimeScaleTypes.Day:
                int newDay = ((int)((onDateTime.Day - 1) / timeScale.AggregationValue)) * timeScale.AggregationValue + 1;
                return(common.dateTimeLibs.MakeDate(newDay, onDateTime.Month, onDateTime.Year));

            case AppTypes.TimeScaleTypes.Week:
                int      weekNo  = onDateTime.DayOfYear / 7;
                int      newWeek = ((int)(weekNo / timeScale.AggregationValue)) * timeScale.AggregationValue;
                DateTime newDate = common.dateTimeLibs.MakeDate(1, 1, onDateTime.Year).AddDays(newWeek * 7);
                return(common.dateTimeLibs.StartOfWeek(newDate, ci));

            case AppTypes.TimeScaleTypes.Month:
                int newMonth = ((int)((onDateTime.Month - 1) / timeScale.AggregationValue)) * timeScale.AggregationValue + 1;
                return(common.dateTimeLibs.MakeDate(1, newMonth, onDateTime.Year));

            case AppTypes.TimeScaleTypes.Year:
                int newYear = ((int)((onDateTime.Year - 1) / timeScale.AggregationValue)) * timeScale.AggregationValue + 1;
                return(common.dateTimeLibs.MakeDate(1, 1, newYear));

            default:
                common.system.ThrowException("Invalid argument in AggregateDateTime()");
                break;
            }
            return(onDateTime);
        }
コード例 #14
0
ファイル: baseTesting.cs プロジェクト: oghenez/trade-software
        protected void ShowTradeTransactions(data.tmpDS.stockCodeRow stockCodeRow, string strategyCode,
                                             AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale)
        {
            string         formName = stockCodeRow.code.Trim() + "," + timeRange.ToString() + "," + application.Strategy.Libs.GetMetaName(strategyCode) + "," + timeScale.Code;
            profitEstimate myForm   = profitEstimate.GetForm(formName);

            myForm.myTimeRange    = timeRange;
            myForm.myTimeScale    = timeScale;
            myForm.myStockCode    = stockCodeRow.code;
            myForm.myOptions      = new EstimateOptions();
            myForm.myStrategyCode = strategyCode;
            myForm.ReLoad();
            myForm.Text = "(" + formName + ")";
            if (this.myDockedPane != null)
            {
                myForm.Show(this.myDockedPane);
            }
            else
            {
                myForm.ShowDialog();
            }
        }
コード例 #15
0
        //public static int CreateTradeAlert()
        //{
        //    CreateTradeAlert(null, null, null);
        //}
        public static int CreateTradeAlert(onProcessStart onStartFunc, onProcessItem onProcessItemFunc, onProcessEnd onEndFunc)
        {
            DateTime frDate = common.Consts.constNullDate;
            DateTime toDate = DateTime.Now;

            //Run all strategy analysis for all stocks.
            databases.tmpDS.stockCodeDataTable stockCodeTbl = new databases.tmpDS.stockCodeDataTable();
            databases.DbAccess.LoadData(stockCodeTbl, AppTypes.CommonStatus.Enable);

            application.AnalysisData data = new application.AnalysisData();
            data.DataTimeRange = AppTypes.TimeRanges.None;
            data.DataMaxCount  = Settings.sysGlobal.AlertDataCount;

            TradeAlertItem[] tradeAlertList = new TradeAlertItem[0];
            StringCollection strategyList   = new StringCollection();

            for (int idx = 0; idx < StrategyData.MetaList.Values.Length; idx++)
            {
                application.Strategy.StrategyMeta meta = (application.Strategy.StrategyMeta)StrategyData.MetaList.Values[idx];
                if (meta.Type != AppTypes.StrategyTypes.Strategy)
                {
                    continue;
                }
                strategyList.Add(((application.Strategy.StrategyMeta)StrategyData.MetaList.Values[idx]).Code);
            }

            if (onStartFunc != null)
            {
                onStartFunc(stockCodeTbl.Count);
            }

            DateTime alertDate;
            DateTime alertFrDate = toDate.Date;
            DateTime alertToDate = toDate;

            for (int stockCodeIdx = 0; stockCodeIdx < stockCodeTbl.Count; stockCodeIdx++)
            {
                if (onProcessItemFunc != null)
                {
                    if (!onProcessItemFunc(stockCodeTbl[stockCodeIdx].code))
                    {
                        break;
                    }
                }

                //foreach (AppTypes.TimeScale timeScale in AppTypes.myTimeScales) //???
                AppTypes.TimeScale timeScale = AppTypes.TimeScaleFromType(AppTypes.TimeScaleTypes.Day);
                {
                    data.DataStockCode = stockCodeTbl[stockCodeIdx].code;
                    data.DataTimeScale = timeScale;
                    data.LoadData();
                    for (int strategyIdx = 0; strategyIdx < strategyList.Count; strategyIdx++)
                    {
                        StrategyData.ClearCache();
                        TradePoints advices = application.Strategy.StrategyLibs.AnalysisStrategy(data, strategyList[strategyIdx].Trim());

                        if ((advices == null) || (advices.Count == 0))
                        {
                            continue;
                        }

                        //Only check the last advices for alert
                        TradePointInfo tradeInfo = (TradePointInfo)advices[advices.Count - 1];
                        alertDate = DateTime.FromOADate(data.DateTime[tradeInfo.DataIdx]);

                        //Ignore alerts that out of date range.
                        if (alertDate < alertFrDate || alertDate > alertToDate)
                        {
                            continue;
                        }
                        Array.Resize(ref tradeAlertList, tradeAlertList.Length + 1);

                        tradeAlertList[tradeAlertList.Length - 1] = new TradeAlertItem(stockCodeTbl[stockCodeIdx].code.Trim(), strategyList[strategyIdx].Trim(),
                                                                                       timeScale, alertDate,
                                                                                       data.Close[tradeInfo.DataIdx],
                                                                                       data.Volume[tradeInfo.DataIdx], tradeInfo);
                    }
                }
            }
            //Create alerts in the day
            int noAlertCreated = CreateTradeAlert(tradeAlertList);

            //Save last lun date
            //SaveLastRunTime(toDate);
            if (onEndFunc != null)
            {
                onEndFunc();
            }
            stockCodeTbl.Dispose();
            return(noAlertCreated);
        }
コード例 #16
0
        public static List <decimal[]> Estimate_Matrix_Profit(AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale,
                                                              StringCollection stockCodeList, StringCollection strategyList, EstimateOptions option)
        {
            List <decimal[]> retList = new List <decimal[]>();

            for (int rowId = 0; rowId < stockCodeList.Count; rowId++)
            {
                Data.ClearCache();
                AnalysisData analysisData = new AnalysisData(timeRange, timeScale, stockCodeList[rowId], DataAccessMode.Local);
                decimal[]    rowRetList   = new decimal[strategyList.Count];
                for (int colId = 0; colId < strategyList.Count; colId++)
                {
                    Data.TradePoints advices = Analysis(analysisData, strategyList[colId]);
                    if (advices != null)
                    {
                        rowRetList[colId] = EstimateTrading_Profit(analysisData, ToTradePointInfo(advices), option);
                    }
                    else
                    {
                        rowRetList[colId] = 0;
                    }
                }
                retList.Add(rowRetList);
            }
            return(retList);
        }
コード例 #17
0
        public static tradeAnalysis GetForm(string stockCode, AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale)
        {
            string        cacheKey = typeof(tradeAnalysis).ToString();
            tradeAnalysis form     = (tradeAnalysis)common.Data.dataCache.Find(cacheKey);

            if (form == null || form.IsDisposed)
            {
                form = new Forms.tradeAnalysis();
                common.Data.dataCache.Add(cacheKey, form);
            }
            form.ChartTimeRange = timeRange;
            form.ChartTimeScale = timeScale;
            form.ChartPriceType = AppTypes.ChartTypes.Line;
            form.UseStock(DataAccess.Libs.myStockCodeTbl.FindBycode(stockCode));
            form.Visible = true;
            return(form);
        }
コード例 #18
0
ファイル: DbAccess.cs プロジェクト: oghenez/trade-software
        public static tmpDS.marketDataDataTable GetMarketData(DateTime frDate, DateTime toDate, string codeList, AppTypes.TimeScale timeScale, AppTypes.MarketDataTypes type)
        {
            string sqlCond = "";

            if (timeScale != AppTypes.MainDataTimeScale)
            {
                sqlCond += (sqlCond == "" ? "" : " AND ") + " type='" + timeScale.Code + "'";
            }
            sqlCond += (sqlCond == "" ? "" : " AND ") +
                       "onDate BETWEEN '" + common.system.ConvertToSQLDateString(frDate) + "'" +
                       " AND '" + common.system.ConvertToSQLDateString(toDate) + "'";

            sqlCond += (sqlCond == "" ? "" : " AND ");
            switch (type)
            {
            case AppTypes.MarketDataTypes.Advancing: sqlCond += "closePrice>openPrice"; break;

            case AppTypes.MarketDataTypes.Declining: sqlCond += "closePrice<openPrice"; break;

            default: sqlCond += "closePrice=openPrice"; break;
            }

            if (codeList != null && codeList != "")
            {
                sqlCond += (sqlCond == "" ? "" : " AND ") + " stockCode IN  (" + codeList + ")";
            }
            else
            {
                sqlCond += (sqlCond == "" ? "" : " AND ") +
                           " stockCode IN  (SELECT code FROM stockCode WHERE status & " + ((byte)AppTypes.CommonStatus.Enable).ToString() + ">0)";
            }
            string sqlCmd =
                "SELECT onDate,COUNT(*) AS val0,SUM(volume) AS val1" +
                " FROM " + (timeScale == AppTypes.MainDataTimeScale ? "priceData" : "priceDataSum") +
                " WHERE " + sqlCond +
                " GROUP BY onDate ORDER BY onDate";

            tmpDS.marketDataDataTable tbl = new tmpDS.marketDataDataTable();
            DbAccess.LoadFromSQL(tbl, sqlCmd);
            return(tbl);
        }
コード例 #19
0
        public static List <double[]> Estimate_Matrix_LastBizWeight(AppTypes.TimeRanges timeRange, AppTypes.TimeScale timeScale,
                                                                    StringCollection stockCodeList, StringCollection strategyList)
        {
            List <double[]> retList = new List <double[]>();

            for (int rowId = 0; rowId < stockCodeList.Count; rowId++)
            {
                Data.ClearCache();
                AnalysisData analysisData = new AnalysisData(timeRange, timeScale, stockCodeList[rowId], DataAccessMode.Local);
                double[]     rowRetList   = new double[strategyList.Count];
                for (int colId = 0; colId < strategyList.Count; colId++)
                {
                    Data.TradePoints tradePoints = Analysis(analysisData, strategyList[colId]);
                    if (tradePoints != null && tradePoints.Count > 0)
                    {
                        rowRetList[colId] = (tradePoints[tradePoints.Count - 1] as TradePointInfo).BusinessInfo.Weight;
                    }
                    else
                    {
                        rowRetList[colId] = double.NaN;
                    }
                }
                retList.Add(rowRetList);
            }
            return(retList);
        }
コード例 #20
0
ファイル: AppLibs.cs プロジェクト: oghenez/trade-software
        /// <summary>
        /// Agrregate a data row to hourly,daily data...
        /// </summary>
        /// <param name="priceRow"> source data arregated to [toSumTbl] </param>
        /// <param name="changeVolume"> volume qty changed and is cumulated to total volume </param>
        /// <param name="timeScale"> aggregate to hour,day,week... data </param>
        /// <param name="cultureInfo"> culture info that need to caculate the start of the week param>
        /// <param name="toSumTbl"> destination table</param>
        public static void AggregatePriceData(databases.baseDS.priceDataRow priceRow, decimal changeVolume, AppTypes.TimeScale timeScale,
                                              CultureInfo cultureInfo, databases.baseDS.priceDataSumDataTable toSumTbl)
        {
            DateTime dataDate = AggregateDateTime(timeScale, priceRow.onDate, cultureInfo);

            databases.baseDS.priceDataSumRow priceDataSumRow;
            priceDataSumRow = AppLibs.FindAndCache(toSumTbl, priceRow.stockCode, timeScale.Code, dataDate);
            if (priceDataSumRow == null)
            {
                priceDataSumRow = toSumTbl.NewpriceDataSumRow();
                databases.AppLibs.InitData(priceDataSumRow);
                priceDataSumRow.type       = timeScale.Code;
                priceDataSumRow.stockCode  = priceRow.stockCode;
                priceDataSumRow.onDate     = dataDate;
                priceDataSumRow.openPrice  = priceRow.openPrice;
                priceDataSumRow.closePrice = priceRow.closePrice;

                object lastPriceObj = lastClosePrices.Find(timeScale.Code + priceRow.stockCode);
                if (lastPriceObj != null)
                {
                    priceDataSumRow.openPrice = (decimal)lastPriceObj;
                }
                else
                {
                    priceDataSumRow.openPrice = priceDataSumRow.closePrice;
                }
                toSumTbl.AddpriceDataSumRow(priceDataSumRow);
            }
            priceDataSumRow.closePrice = priceRow.closePrice;
            lastClosePrices.Add(timeScale.Code + priceRow.stockCode, priceRow.closePrice);

            if (priceDataSumRow.highPrice < priceRow.highPrice)
            {
                priceDataSumRow.highPrice = priceRow.highPrice;
            }
            if (priceDataSumRow.lowPrice > priceRow.lowPrice)
            {
                priceDataSumRow.lowPrice = priceRow.lowPrice;
            }
            priceDataSumRow.volume += changeVolume;
        }
コード例 #21
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
 //Constructors
 private MarketData(DateTime startDateTime, DateTime endDateTime, AppTypes.TimeScale timeScale, StringCollection stockCodes)
 {
     this.Init(startDateTime, endDateTime, timeScale, stockCodes);
 }
コード例 #22
0
ファイル: language.cs プロジェクト: oghenez/trade-software
        //Swicth language. Note that the order of items must be preserved
        public static void SetLanguage(ComboBox.ObjectCollection items, Type type)
        {
            StringCollection saveKeys = new StringCollection();

            for (int idx = 0; idx < items.Count; idx++)
            {
                common.myComboBoxItem item = (common.myComboBoxItem)items[idx];
                saveKeys.Add(item.Value);
            }
            if (type == typeof(AppTypes.TimeScale))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindTimeScaleByCode(saveKeys[idx]);
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.TimeScale item = (AppTypes.TimeScale)obj;
                    items.Add(new common.myComboBoxItem(item.Description, item.Code));
                }
                return;
            }

            if (type == typeof(AppTypes.TradeActions))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.TradeActions));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.TradeActions item = (AppTypes.TradeActions)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }


            if (type == typeof(AppTypes.TimeRanges))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.TimeRanges));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.TimeRanges item = (AppTypes.TimeRanges)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
            if (type == typeof(AppTypes.StrategyTypes))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.StrategyTypes));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.StrategyTypes item = (AppTypes.StrategyTypes)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
            if (type == typeof(AppTypes.Sex))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.Sex));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.Sex item = (AppTypes.Sex)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
            if (type == typeof(AppTypes.CommonStatus))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.CommonStatus));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.CommonStatus item = (AppTypes.CommonStatus)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
            if (type == typeof(AppTypes.ChartTypes))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.ChartTypes));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.ChartTypes item = (AppTypes.ChartTypes)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
            if (type == typeof(AppTypes.BizSectorTypes))
            {
                items.Clear();
                for (int idx = 0; idx < saveKeys.Count; idx++)
                {
                    object obj = FindCodeInEnum(saveKeys[idx], typeof(AppTypes.BizSectorTypes));
                    if (obj == null)
                    {
                        continue;
                    }
                    AppTypes.BizSectorTypes item = (AppTypes.BizSectorTypes)obj;
                    items.Add(new common.myComboBoxItem(AppTypes.Type2Text(item), item.ToString()));
                }
                return;
            }
        }
コード例 #23
0
        //Agrregate date time for hourly,daily data...
        //public static DateTime AggregateDateTime(AppTypes.timeScales type, DateTime onDateTime, CultureInfo ci)
        //{
        //    switch (type)
        //    {
        //        case AppTypes.timeScales.Hour1:
        //             return onDateTime.Date.AddHours(onDateTime.Hour);
        //        case AppTypes.timeScales.Hour2:
        //             return onDateTime.Date.AddHours(onDateTime.Hour / 2);
        //        case AppTypes.timeScales.Hour4:
        //             return onDateTime.Date.AddHours(onDateTime.Hour / 4);
        //        case AppTypes.timeScales.Daily:
        //             return onDateTime.Date;
        //        case AppTypes.timeScales.Weekly:
        //             return common.dateTimeLibs.StartOfWeek(onDateTime, ci);
        //        case AppTypes.timeScales.Monthly:
        //             return common.dateTimeLibs.MakeDate(1, onDateTime.Month, onDateTime.Year);
        //        case AppTypes.timeScales.Yearly:
        //             return common.dateTimeLibs.MakeDate(1, 1, onDateTime.Year);
        //        default:
        //            common.system.ThrowException("Invalid argument in AggregateDateTime()");
        //            break;
        //    }
        //    return onDateTime;
        //}

        /// <summary>
        /// Agrregate a data row to hourly,daily data...
        /// </summary>
        /// <param name="priceRow"> source data arregated to [toSumTbl] </param>
        /// <param name="changeVolume"> volume qty changed and is cumulated to total volume </param>
        /// <param name="timeScale"> aggregate to hour,day,week... data </param>
        /// <param name="cultureInfo"> culture info that need to caculate the start of the week param>
        /// <param name="toSumTbl"> destination table</param>
        public static void AggregatePriceData(data.baseDS.priceDataRow priceRow, decimal changeVolume, AppTypes.TimeScale timeScale,
                                              CultureInfo cultureInfo, data.baseDS.priceDataSumDataTable toSumTbl)
        {
            DateTime dataDate       = AggregateDateTime(timeScale, priceRow.onDate, cultureInfo);
            int      dataTimeOffset = common.dateTimeLibs.DateDiffInMilliseconds(dataDate, priceRow.onDate);

            data.baseDS.priceDataSumRow priceDataSumRow;
            priceDataSumRow = libs.FindAndCache(toSumTbl, priceRow.stockCode, timeScale.Code, dataDate);
            if (priceDataSumRow == null)
            {
                priceDataSumRow = toSumTbl.NewpriceDataSumRow();
                commonClass.AppLibs.InitData(priceDataSumRow);
                priceDataSumRow.type       = timeScale.Code;
                priceDataSumRow.stockCode  = priceRow.stockCode;
                priceDataSumRow.onDate     = dataDate;
                priceDataSumRow.openPrice  = priceRow.openPrice;
                priceDataSumRow.closePrice = priceRow.closePrice;
                toSumTbl.AddpriceDataSumRow(priceDataSumRow);
            }
            if (priceDataSumRow.openTimeOffset > dataTimeOffset)
            {
                priceDataSumRow.openPrice      = priceRow.openPrice;
                priceDataSumRow.openTimeOffset = dataTimeOffset;
            }
            if (priceDataSumRow.closeTimeOffset <= dataTimeOffset)
            {
                priceDataSumRow.closePrice      = priceRow.closePrice;
                priceDataSumRow.closeTimeOffset = dataTimeOffset;
            }
            if (priceDataSumRow.highPrice < priceRow.highPrice)
            {
                priceDataSumRow.highPrice = priceRow.highPrice;
            }
            if (priceDataSumRow.lowPrice > priceRow.lowPrice)
            {
                priceDataSumRow.lowPrice = priceRow.lowPrice;
            }
            priceDataSumRow.volume += changeVolume;
        }
コード例 #24
0
ファイル: dataClass.cs プロジェクト: oghenez/trade-software
 private MarketData(DateTime startDateTime, DateTime endDateTime, AppTypes.TimeScale timeScale)
 {
     this.Init(startDateTime, endDateTime, timeScale, null);
 }
コード例 #25
0
 private void AddStockToWatchList(string stockCode, StringCollection strategyCodes, AppTypes.TimeScale timeScale)
 {
     baseClass.Forms.addToWatchList_StockAndStrategy myForm = baseClass.Forms.addToWatchList_StockAndStrategy.GetForm("");
     myForm.ShowForm(stockCode, strategyCodes, timeScale);
 }