Exemplo n.º 1
0
        private static void GetMeta(Assembly indicatorAss, common.DictionaryList MetaList)
        {
            Type[] mTypes = indicatorAss.GetTypes();
            Meta   meta;
            string HelpersTypeName = typeof(Helpers).Name;

            foreach (Type type in mTypes)
            {
                if (type.BaseType.Name != HelpersTypeName)
                {
                    continue;
                }
                // get info about property
                Type   indicatorType     = indicatorAss.GetType(type.FullName);
                object indicatorInstance = Activator.CreateInstance(indicatorType);
                meta = (Meta)indicatorType.InvokeMember("GetInfo",
                                                        BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public, null, indicatorInstance, null);
                if (meta.Name.Trim() == "")
                {
                    continue;
                }
                MetaList.Add(meta.ClassType.Name, meta);
            }
            return;
        }
Exemplo n.º 2
0
        private static void GetMeta(Assembly strategyAss, common.DictionaryList MetaList)
        {
            Type[] mTypes = strategyAss.GetTypes();
            Meta   Meta;
            string strategyHelperTypeName = typeof(baseHelper).Name;

            foreach (Type type in mTypes)
            {
                if (type.BaseType.Name != strategyHelperTypeName)
                {
                    continue;
                }
                // get info about property
                Type strategyType = strategyAss.GetType(type.FullName);
                try
                {
                    object strategyInstance = Activator.CreateInstance(strategyType);
                    Meta = (Meta)strategyType.InvokeMember("GetInfo",
                                                           BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public, null, strategyInstance, null);
                    if (Meta.Code.Trim() == "")
                    {
                        continue;
                    }
                    MetaList.Add(Meta.ClassType.Name, Meta);
                }
                catch (Exception er)
                {
                    commonClass.SysLibs.WriteSystemLog(er.Message);
                }
            }
            return;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Get Meta from all indicator DDL in a drectory
 /// </summary>
 /// <param name="path"></param>
 /// <param name="files"></param>
 /// <param name="MetaList"></param>
 public static void GetMeta(string path, string files, common.DictionaryList MetaList)
 {
     string[] dllFileList = Directory.GetFiles(path, files);
     for (int idx1 = 0; idx1 < dllFileList.Length; idx1++)
     {
         GetMeta(dllFileList[idx1], MetaList);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Find/Get indicator by name. Return null if not found
        /// </summary>
        /// <param name="MetaList">List keeps meta data</param>
        /// <param name="name">Indicator name to find</param>
        /// <returns></returns>
        private static Meta FindMetaByName(common.DictionaryList MetaList, string name)
        {
            object obj = MetaList.Find(name);

            if (obj == null)
            {
                return(null);
            }
            return((Meta)obj);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Find/Get strategy by code. Return null if not found
 /// </summary>
 /// <param name="MetaList">List keeps meta data</param>
 /// <param name="name">strategy code to find</param>
 /// <returns>Null if not found</returns>
 private static Meta FindMetaByCode(common.DictionaryList MetaList, string code)
 {
     for (int idx = 0; idx < MetaList.Values.Length; idx++)
     {
         if (((Meta)MetaList.Values[idx]).Code == code)
         {
             return((Meta)MetaList.Values[idx]);
         }
     }
     return(null);
 }
Exemplo n.º 6
0
 /// <summary>
 /// Set Parameters property from a formated string.
 /// </summary>
 /// <param name="str">String in the format <key=value>,...,<key=value></param>
 private static common.DictionaryList String2ParameterList(string str)
 {
     double para = 0;
     common.DictionaryList list = new common.DictionaryList();
     common.myKeyValueItem[] keyValues = common.system.String2KeyValueList(str, ",", "=");
     for (int idx = 0; idx < keyValues.Length; idx++)
     {
         if (!double.TryParse(keyValues[idx].Value, out para)) continue;
         list.Add(keyValues[idx].Key, para);
     }
     return list;
 }
Exemplo n.º 7
0
        /// <summary>
        ///  Create menu listing all strategies with click events.
        /// - strategy having category existed in strategyCat table are grouped to that category
        /// - strategy having category NOT existed in strategyCat are placed under the category menus
        /// </summary>
        /// <param name="Metas">Meta infomation of plug-in strategy</param>
        /// <param name="toMenu">Menu where strategy menus are added</param>
        /// <param name="handler">Function fired on Click Event</param>
        private static void CreateMenu(common.DictionaryList Metas, AppTypes.StrategyTypes strategyType,
                                       ToolStripMenuItem toMenu, System.EventHandler handler)

        {
            for (int idx1 = 0; idx1 < Data.myCatList.Count; idx1++)
            {
                Meta[] tmpMetas = FindMetaByCat(Metas, strategyType, Data.myCatList[idx1].Code);
                if (tmpMetas == null || tmpMetas.Length == 0)
                {
                    continue;
                }

                ToolStripMenuItem catMenuItem = new ToolStripMenuItem();
                catMenuItem.Name = toMenu.Name + "-group-" + Data.myCatList[idx1].Code;
                catMenuItem.Text = Data.myCatList[idx1].Description;
                toMenu.DropDownItems.Add(catMenuItem);
                for (int idx2 = 0; idx2 < tmpMetas.Length; idx2++)
                {
                    ToolStripMenuItem menuItem = new ToolStripMenuItem();
                    menuItem.Name = toMenu.Name + "-" + tmpMetas[idx2].ClassType.Name;
                    menuItem.Tag  = tmpMetas[idx2];
                    menuItem.Text = tmpMetas[idx2].Name;
                    if (handler != null)
                    {
                        menuItem.Click += new System.EventHandler(handler);
                    }
                    catMenuItem.DropDownItems.Add(menuItem);
                }
            }
            Meta meta;

            for (int idx2 = 0; idx2 < Metas.Values.Length; idx2++)
            {
                meta = (Meta)Metas.Values[idx2];
                if (meta.Type != strategyType)
                {
                    continue;
                }
                if (Data.myCatList.Find(meta.Category.Trim()) != null)
                {
                    continue;
                }
                ToolStripMenuItem menuItem = new ToolStripMenuItem();
                menuItem.Name = toMenu.Name + "-group-" + meta.ClassType.Name;
                menuItem.Tag  = meta;
                menuItem.Text = meta.Name;
                toMenu.DropDownItems.Add(menuItem);
                if (handler != null)
                {
                    menuItem.Click += new System.EventHandler(handler);
                }
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Set Parameters property from a formated string.
        /// </summary>
        /// <param name="str">String in the format <key=value>,...,<key=value></param>
        private static common.DictionaryList String2ParameterList(string str)
        {
            double para = 0;

            common.DictionaryList   list      = new common.DictionaryList();
            common.myKeyValueItem[] keyValues = common.system.String2KeyValueList(str, ",", "=");
            for (int idx = 0; idx < keyValues.Length; idx++)
            {
                if (!double.TryParse(keyValues[idx].Value, out para))
                {
                    continue;
                }
                list.Add(keyValues[idx].Key, para);
            }
            return(list);
        }
Exemplo n.º 9
0
 /// <summary>
 ///  Find/Get all indicator of the same category
 /// </summary>
 /// <param name="metasList">List keeps meta data </param>
 /// <param name="category">What category to find/get </param>
 /// <returns></returns>
 private static Meta[] FindMetaByCat(common.DictionaryList metasList, string category)
 {
     Meta[] retMetas = new Meta[0];
     category = category.Trim().ToLower();
     for (int idx = 0; idx < metasList.Values.Length; idx++)
     {
         Meta meta = (Meta)metasList.Values[idx];
         if (meta.Category.Trim().ToLower() != category)
         {
             continue;
         }
         Array.Resize(ref retMetas, retMetas.Length + 1);
         retMetas[retMetas.Length - 1] = meta;
     }
     return(retMetas);
 }
Exemplo n.º 10
0
        /// <summary>
        ///  Load all strategies of scpecific type.
        /// - strategy having category existed in strategyCat table are grouped to that category
        /// - strategy having category NOT existed in strategyCat are placed under the category menus
        /// </summary>
        /// <param name="strategyType"></param>
        /// <param name="toObj"></param>
        public static void LoadStrategy(AppTypes.StrategyTypes strategyType, ToolStripComboBox toObj)
        {
            common.DictionaryList Metas = Data.MetaList;

            toObj.Items.Clear();
            for (int idx1 = 0; idx1 < Data.myCatList.Count; idx1++)
            {
                Meta[] tmpMetas = FindMetaByCat(Metas, strategyType, Data.myCatList[idx1].Code);
                if (tmpMetas == null || tmpMetas.Length == 0)
                {
                    continue;
                }

                toObj.Items.Add(new common.myComboBoxItem("--" + Data.myCatList[idx1].Description.Trim() + "--", ""));
                for (int idx2 = 0; idx2 < tmpMetas.Length; idx2++)
                {
                    toObj.Items.Add(new common.myComboBoxItem(tmpMetas[idx2].Name, tmpMetas[idx2].Code));
                }
            }
            //Donot have category
            Meta meta;
            bool flag = true;

            for (int idx2 = 0; idx2 < Metas.Values.Length; idx2++)
            {
                if (flag)
                {
                    toObj.Items.Add(new common.myComboBoxItem("--" + Languages.Libs.GetString("others") + "--", ""));
                    flag = false;
                }
                meta = (Meta)Metas.Values[idx2];
                if (meta.Type != strategyType)
                {
                    continue;
                }
                if (Data.myCatList.Find(meta.Category.Trim()) != null)
                {
                    continue;
                }
                toObj.Items.Add(new common.myComboBoxItem(meta.Name, meta.Code));
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Find/Get strategy by name. Return null if not found
        /// </summary>
        /// <param name="MetaList">List keeps meta data</param>
        /// <param name="name">strategy name to find</param>
        /// <returns>Null if not found</returns>
        private static Meta FindMetaByName(common.DictionaryList MetaList, string name)
        {
            object obj = MetaList.Find(name);

            //TUAN - 29 Sept 2012 fix bug profit detail and all profit details
            foreach (application.Strategy.Meta item in MetaList.Values)
            {
                if (item.Name.Equals(name))
                {
                    obj = item;
                    break;
                }
            }
            //TUAN - 29 Sept 2012 fix bug profit detail and all profit details
            if (obj == null)
            {
                return(null);
            }
            return((Meta)obj);
        }
Exemplo n.º 12
0
        /// <summary>
        ///  Create menu listing all indictors with click events.
        /// - Indicators having category existed in indicatorCat table are grouped to that category
        /// - Indicators having category NOT existed in indicatorCat are placed under the category menus
        /// </summary>
        /// <param name="Metas">Meta infomation of plug-in indicators</param>
        /// <param name="toMenu">Menu where indicator menus are added</param>
        /// <param name="ShowIndicatorHandler">Function fired on Click Event</param>
        private static void CreateIndicatorMenu(common.DictionaryList Metas, ToolStripMenuItem toMenu, System.EventHandler ShowIndicatorHandler)
        {
            for (int idx1 = 0; idx1 < Data.myIndicatorCatList.Count; idx1++)
            {
                Indicators.Meta[] tmpMetas = Libs.FindMetaByCat(Metas, Data.myIndicatorCatList[idx1].Code);
                if (tmpMetas == null || tmpMetas.Length == 0)
                {
                    continue;
                }

                ToolStripMenuItem catMenuItem = new ToolStripMenuItem();
                catMenuItem.Name = toMenu.Name + "-group-" + Data.myIndicatorCatList[idx1].Code;
                catMenuItem.Text = Data.myIndicatorCatList[idx1].Description;
                toMenu.DropDownItems.Add(catMenuItem);
                for (int idx2 = 0; idx2 < tmpMetas.Length; idx2++)
                {
                    ToolStripMenuItem menuItem = new ToolStripMenuItem();
                    menuItem.Name   = toMenu.Name + "-" + tmpMetas[idx2].ClassType.Name;
                    menuItem.Tag    = tmpMetas[idx2].ClassType.Name;
                    menuItem.Text   = tmpMetas[idx2].Name;
                    menuItem.Click += new System.EventHandler(ShowIndicatorHandler);
                    catMenuItem.DropDownItems.Add(menuItem);
                }
            }
            Indicators.Meta meta;
            for (int idx2 = 0; idx2 < Metas.Values.Length; idx2++)
            {
                meta = (Indicators.Meta)Metas.Values[idx2];
                if (Data.myIndicatorCatList.Find(meta.Category.Trim()) != null)
                {
                    continue;
                }
                ToolStripMenuItem menuItem = new ToolStripMenuItem();
                menuItem.Name = toMenu.Name + "-group-" + meta.ClassType.Name;
                menuItem.Tag  = meta.ClassType.Name;
                menuItem.Text = meta.Name;
                toMenu.DropDownItems.Add(menuItem);
                menuItem.Click += new System.EventHandler(ShowIndicatorHandler);
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Set Output property from a formated string.
        /// </summary>
        /// <param name="str"> In the format ([key]=[Color]:[Weight*]:[ChartType*])  </param>
        /// <returns></returns>
        private static common.DictionaryList String2OutputList(string str)
        {
            common.DictionaryList   list      = new common.DictionaryList();
            common.myKeyValueItem[] keyValues = common.system.String2KeyValueList(str, ",", "=");
            Color color  = Data.sysDefaultLineColor;
            int   weight = 1;

            AppTypes.ChartTypes chartType = Data.sysDefaultLineChartType;
            for (int idx = 0; idx < keyValues.Length; idx++)
            {
                string[] parts = common.system.String2List(keyValues[idx].Value, ":", StringSplitOptions.None);
                color  = (parts.Length > 0 ? ColorTranslator.FromHtml(parts[0]) : Data.sysDefaultLineColor);
                weight = Data.sysDefaultLineWeight;
                if (parts.Length > 1)
                {
                    int.TryParse(parts[1], out weight);
                }
                chartType = (parts.Length > 2 ? AppTypes.Text2ChartType(parts[2]) : Data.sysDefaultLineChartType);
                list.Add(keyValues[idx].Key, new Meta.OutputInfo(color, weight, chartType));
            }
            return(list);
        }
Exemplo n.º 14
0
        public static databases.baseDS.tradeAlertDataTable MakeAlertSummary(databases.baseDS.tradeAlertDataTable tbl)
        {
            SummaryItem buyCount, sellCount;

            databases.baseDS.tradeAlertRow       sumRow;
            databases.baseDS.tradeAlertDataTable sumTbl = new databases.baseDS.tradeAlertDataTable();
            sumTbl.DefaultView.Sort = sumTbl.onTimeColumn.ColumnName + "," + sumTbl.stockCodeColumn.ColumnName;
            DataRowView[]         foundRows;
            common.DictionaryList buyCountList  = new common.DictionaryList();
            common.DictionaryList sellCountList = new common.DictionaryList();

            object obj;

            //Sum
            for (int idx = 0; idx < tbl.Count; idx++)
            {
                foundRows = sumTbl.DefaultView.FindRows(new object[] { tbl[idx].onTime.Date, tbl[idx].stockCode });
                if (foundRows.Length != 0)
                {
                    sumRow = (databases.baseDS.tradeAlertRow)foundRows[0].Row;
                }
                else
                {
                    sumRow = sumTbl.NewtradeAlertRow();
                    databases.AppLibs.InitData(sumRow);
                    sumRow.onTime    = tbl[idx].onTime.Date;
                    sumRow.stockCode = tbl[idx].stockCode;
                    sumTbl.AddtradeAlertRow(sumRow);
                }
                AppTypes.TradeActions action = (AppTypes.TradeActions)tbl[idx].tradeAction;
                switch (action)
                {
                case AppTypes.TradeActions.Buy:
                case AppTypes.TradeActions.Accumulate:
                    obj = buyCountList.Find(sumRow.onTime.ToString() + sumRow.stockCode);
                    if (obj == null)
                    {
                        buyCount = new SummaryItem(sumRow.stockCode, sumRow.onTime);
                    }
                    else
                    {
                        buyCount = (SummaryItem)obj;
                    }
                    buyCount.Qty++;
                    buyCountList.Add(sumRow.onTime.ToString() + sumRow.stockCode, buyCount);
                    break;

                case AppTypes.TradeActions.Sell:
                case AppTypes.TradeActions.ClearAll:
                    obj = sellCountList.Find(sumRow.onTime.ToString() + sumRow.stockCode);
                    if (obj == null)
                    {
                        sellCount = new SummaryItem(sumRow.stockCode, sumRow.onTime);
                    }
                    else
                    {
                        sellCount = (SummaryItem)obj;
                    }
                    sellCount.Qty++;
                    sellCountList.Add(sumRow.onTime.Date.ToString() + sumRow.stockCode, sellCount);
                    break;
                }
            }
            //Make summary message
            for (int idx = 0; idx < sumTbl.Count; idx++)
            {
                sumTbl[idx].msg = "";
                obj             = buyCountList.Find(sumTbl[idx].onTime.ToString() + sumTbl[idx].stockCode);
                if (obj != null)
                {
                    sumTbl[idx].msg += (sumTbl[idx].msg.Trim() != "" ? " , " : "") + (obj as SummaryItem).Qty.ToString() + " " + Languages.Libs.GetString("buyAlert");
                }

                obj = sellCountList.Find(sumTbl[idx].onTime.ToString() + sumTbl[idx].stockCode);
                if (obj != null)
                {
                    sumTbl[idx].msg += (sumTbl[idx].msg.Trim() != "" ? " , " : "") + (obj as SummaryItem).Qty.ToString() + " " + Languages.Libs.GetString("sellAlert");
                }
            }
            return(sumTbl);
        }
Exemplo n.º 15
0
 /// <summary>
 ///Get Meta from a DDL file name
 /// </summary>
 /// <param name="assemblyFile"></param>
 /// <param name="MetaList"></param>
 public static void GetMeta(string assemblyFile, common.DictionaryList MetaList)
 {
     GetMeta(Assembly.LoadFile(assemblyFile), MetaList);
 }
Exemplo n.º 16
0
        public static databases.baseDS.tradeAlertDataTable MakeAlertSummary(databases.baseDS.tradeAlertDataTable tbl)
        {
            SummaryItem buyCount, sellCount;
            databases.baseDS.tradeAlertRow sumRow;
            databases.baseDS.tradeAlertDataTable sumTbl = new databases.baseDS.tradeAlertDataTable();
            sumTbl.DefaultView.Sort = sumTbl.onTimeColumn.ColumnName + "," + sumTbl.stockCodeColumn.ColumnName;
            DataRowView[] foundRows;
            common.DictionaryList buyCountList = new common.DictionaryList();
            common.DictionaryList sellCountList = new common.DictionaryList();

            object obj;
            //Sum
            for (int idx = 0; idx < tbl.Count; idx++)
            {
                foundRows = sumTbl.DefaultView.FindRows(new object[] { tbl[idx].onTime.Date, tbl[idx].stockCode });
                if (foundRows.Length != 0)
                    sumRow = (databases.baseDS.tradeAlertRow)foundRows[0].Row;
                else
                {
                    sumRow = sumTbl.NewtradeAlertRow();
                    databases.AppLibs.InitData(sumRow);
                    sumRow.onTime = tbl[idx].onTime.Date;
                    sumRow.stockCode = tbl[idx].stockCode;
                    sumTbl.AddtradeAlertRow(sumRow);
                }
                AppTypes.TradeActions action = (AppTypes.TradeActions)tbl[idx].tradeAction;
                switch (action)
                {
                    case AppTypes.TradeActions.Buy:
                    case AppTypes.TradeActions.Accumulate:
                        obj = buyCountList.Find(sumRow.onTime.ToString() + sumRow.stockCode);
                        if (obj == null)
                            buyCount = new SummaryItem(sumRow.stockCode, sumRow.onTime);
                        else buyCount = (SummaryItem)obj;
                        buyCount.Qty++;
                        buyCountList.Add(sumRow.onTime.ToString() + sumRow.stockCode, buyCount);
                        break;
                    case AppTypes.TradeActions.Sell:
                    case AppTypes.TradeActions.ClearAll:
                        obj = sellCountList.Find(sumRow.onTime.ToString() + sumRow.stockCode);
                        if (obj == null)
                            sellCount = new SummaryItem(sumRow.stockCode, sumRow.onTime);
                        else sellCount = (SummaryItem)obj;
                        sellCount.Qty++;
                        sellCountList.Add(sumRow.onTime.Date.ToString() + sumRow.stockCode, sellCount);
                        break;
                }
            }
            //Make summary message
            for (int idx = 0; idx < sumTbl.Count; idx++)
            {
                sumTbl[idx].msg = "";
                obj = buyCountList.Find(sumTbl[idx].onTime.ToString() + sumTbl[idx].stockCode);
                if (obj != null)
                    sumTbl[idx].msg += (sumTbl[idx].msg.Trim() != "" ? " , " : "") + (obj as SummaryItem).Qty.ToString() + " " + Languages.Libs.GetString("buyAlert");

                obj = sellCountList.Find(sumTbl[idx].onTime.ToString() + sumTbl[idx].stockCode);
                if (obj != null)
                    sumTbl[idx].msg += (sumTbl[idx].msg.Trim() != "" ? " , " : "") + (obj as SummaryItem).Qty.ToString() + " " + Languages.Libs.GetString("sellAlert");
            }
            return sumTbl;
        }
Exemplo n.º 17
0
 /// <summary>
 ///Get Meta from a DDL file name
 /// </summary>
 /// <param name="assemblyFile"></param>
 /// <param name="MetaList"></param>
 private static void GetMeta(string assemblyFile, common.DictionaryList MetaList)
 {
     GetMeta(Assembly.LoadFrom(assemblyFile), MetaList);
 }