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; }
/// <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 }
public bool Match(string symbol1, string symbol2) { return((NegSymbol1 ^ Symbol1.Contains(symbol1)) && (NegSymbol2 ^ Symbol2.Contains(symbol2))); }