Esempio n. 1
0
        public DiphoneRule(string[] symbol1, string[] symbol2, DiphoneRuleAction action, char negator)
        {
            NegSymbol1 = Array.IndexOf <string>(symbol1, "ALL") > -1;
            NegSymbol2 = Array.IndexOf <string>(symbol2, "ALL") > -1;
            foreach (string s in symbol1)
            {
                if (!(NegSymbol1 ^ (s[0] == negator)))
                {
                    if (s[0] == negator)
                    {
                        Symbol1.Add(s.Substring(1));
                    }
                    else
                    {
                        Symbol1.Add(s);
                    }
                }
            }

            foreach (string s in symbol2)
            {
                if (!(NegSymbol2 ^ (s[0] == negator)))
                {
                    if (s[0] == negator)
                    {
                        Symbol2.Add(s.Substring(1));
                    }
                    else
                    {
                        Symbol2.Add(s);
                    }
                }
            }
            _RuleAction = action;
        }
Esempio n. 2
0
        /// <summary>
        /// Save the General.Global settings to the settings file
        /// </summary>
        /// <param name="globalNode">XML-node for the General.Global settings</param>
        public void Save(XmlNode globalNode)
        {
            string  xpath;
            XmlNode node;

            xpath = "./removeSingleContent";
            SettingsHelper.SetSettingValue(xpath, globalNode, RemoveSingleContent.ToString());

            xpath = "./strictAggregationCheck";
            SettingsHelper.SetSettingValue(xpath, globalNode, StrictAggregationCheck.ToString());

            xpath = "./secrecyOption";
            SettingsHelper.SetSettingValue(xpath, globalNode, SecrecyOption.ToString());

            xpath = "./roundingRule";
            SettingsHelper.SetSettingValue(xpath, globalNode, RoundingRule.ToString());

            xpath = "./symbol1";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol1.ToString());

            xpath = "./symbol2";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol2.ToString());

            xpath = "./symbol3";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol3.ToString());

            xpath = "./symbol4";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol4.ToString());

            xpath = "./symbol5";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol5.ToString());

            xpath = "./symbol6";
            SettingsHelper.SetSettingValue(xpath, globalNode, Symbol6.ToString());

            xpath = "./dataSymbolNil";
            SettingsHelper.SetSettingValue(xpath, globalNode, DataSymbolNil.ToString());

            xpath = "./dataSymbolSum";
            SettingsHelper.SetSettingValue(xpath, globalNode, DataSymbolSum.ToString());

            //xpath = "./decimalSeparator";
            //SettingsHelper.SetSettingValue(xpath, globalNode, DecimalSeparator.ToString());

            //xpath = "./thousandSeparator";
            //SettingsHelper.SetSettingValue(xpath, globalNode, ThousandSeparator.ToString());

            xpath = "./showSourceDescription";
            SettingsHelper.SetSettingValue(xpath, globalNode, ShowSourceDescription.ToString());

            xpath = "./tableInformationLevel";
            SettingsHelper.SetSettingValue(xpath, globalNode, TableInformationLevel.ToString());

            xpath = "./uppercase";
            SettingsHelper.SetSettingValue(xpath, globalNode, Uppercase.ToString());

            xpath = "./dataNotePlacment";
            SettingsHelper.SetSettingValue(xpath, globalNode, DataNotePlacement.ToString());

            xpath = "./showinfofile";
            SettingsHelper.SetSettingValue(xpath, globalNode, ShowInfoFile.ToString());

            xpath = "./showInformationTypes";
            node  = globalNode.SelectSingleNode(xpath);
            _showInformationTypesSettings.Save(node);
        }
        public Optimization(string[] basket, string TimeFrame)
        {
            #region Initialize data
            Symbol1   = basket[0];
            Symbol2   = basket[0];
            timeframe = TimeFrame;
            n_data    = Global.Instance.TotalBars[timeframe];

            Date1 = new DateTime[n_data];
            Date2 = new DateTime[n_data];
            Pair1 = new double[n_data];
            Pair2 = new double[n_data];
            Ratio = new double[n_data];

            resolution    = new double[2];
            resolution[0] = (Symbol1.Contains("JPY")) ? 0.01 : 0.0001;
            resolution[1] = (Symbol2.Contains("JPY")) ? 0.01 : 0.0001;


            #endregion
            #region load data
            using (StreamReader reader = new StreamReader(Global.Instance.data_folder_path + "\\" + timeframe + "\\" + Symbol1 + ".csv"))
            {
                string line = null;
                int    i    = 0;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] ext = line.Split(',');
                    Date1[i] = DateTime.Parse(ext[0] + " " + ext[1]);
                    Pair1[i] = double.Parse(ext[2]);
                    i++;
                }
                reader.Close();
            }
            using (StreamReader reader = new StreamReader(Global.Instance.data_folder_path + "\\" + timeframe + "\\" + Symbol2 + ".csv"))
            {
                string line = null;
                int    i    = 0;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] ext = line.Split(',');
                    Date2[i] = DateTime.Parse(ext[0] + " " + ext[1]);
                    Pair2[i] = double.Parse(ext[2]);
                    i++;
                }
                reader.Close();
            }
            for (int i = 0; i < n_data; i++)
            {
                Ratio[i] = Pair1[i] / Pair2[i];
            }
            #endregion
            #region Work on pip costs

            pipCostSeries = new double[Global.Instance.counterCurrencies.Count, n_data];

            Symbol1CounterIndex = Global.Instance.counterCurrencies.IndexOf(Symbol1.Substring(3, 3));
            Symbol2CounterIndex = Global.Instance.counterCurrencies.IndexOf(Symbol2.Substring(3, 3));


            for (int i = 0; i < Global.Instance.counterCurrencies.Count; i++)
            {
                if (Global.Instance.counterCurrencies[i] == "USD") //For USD countercurrency, pip cost is always 1
                {
                    for (int j = 0; j < n_data; j++)
                    {
                        pipCostSeries[i, j] = 1;
                    }
                }
                else
                {
                    if (File.Exists(Global.Instance.data_folder_path + "\\" + timeframe + "\\" + Global.Instance.counterCurrencies[i] + "USD" + ".csv"))  //If the currency is XXXUSD
                    {
                        using (StreamReader reader = new StreamReader(Global.Instance.data_folder_path + "\\" + timeframe + "\\" + Global.Instance.counterCurrencies[i] + "USD" + ".csv"))
                        {
                            string line = null;
                            int    j    = 0;
                            while ((line = reader.ReadLine()) != null)
                            {
                                string[] ext = line.Split(',');
                                pipCostSeries[i, j] = Math.Round(double.Parse(ext[2]), 1);
                                j++;
                            }
                            reader.Close();
                        }
                    }
                    else
                    {
                        using (StreamReader reader = new StreamReader(Global.Instance.data_folder_path + "\\" + timeframe + "\\USD" + Global.Instance.counterCurrencies[i] + ".csv"))
                        {
                            string line = null;
                            int    j    = 0;
                            while ((line = reader.ReadLine()) != null)
                            {
                                string[] ext = line.Split(',');
                                if (Global.Instance.counterCurrencies[i] == "JPY") //For XXXJPY based
                                {
                                    pipCostSeries[i, j] = Math.Round(100 / double.Parse(ext[2]), 1);
                                }
                                else
                                {
                                    pipCostSeries[i, j] = Math.Round(1 / double.Parse(ext[2]), 1);
                                }
                                j++;
                            }
                            reader.Close();
                        }
                    }
                }
            }

            #endregion
        }
Esempio n. 4
0
 public bool Match(string symbol1, string symbol2)
 {
     return((NegSymbol1 ^ Symbol1.Contains(symbol1)) &&
            (NegSymbol2 ^ Symbol2.Contains(symbol2)));
 }