private void BindData() { SettingName = this.GetStringParameter("gs", ""); if (!SettingName.Equals("")) { SingleMarketSetting = PTMagicConfiguration.AnalyzerSettings.SingleMarketSettings.Find(sms => SystemHelper.StripBadCode(sms.SettingName, Constants.WhiteListNames).Equals(SettingName)); } else { SingleMarketSetting = new SingleMarketSetting(); SingleMarketSetting.SettingName = "New Setting"; } }
private void SaveSingleMarketSettings(List <string> formKeys) { List <SingleMarketSetting> newSingleMarketMarketSettings = new List <SingleMarketSetting>(); List <string> singleMarketSettingFormKeys = formKeys.FindAll(k => k.StartsWith("MarketAnalyzer_SingleMarketSetting_") && k.EndsWith("|SettingName")); foreach (string singleMarketSettingFormKey in singleMarketSettingFormKeys) { SingleMarketSetting sms = null; string originalNameSimplified = singleMarketSettingFormKey.Replace("MarketAnalyzer_SingleMarketSetting_", "").Replace("|SettingName", ""); string smsFormKey = "MarketAnalyzer_SingleMarketSetting_" + originalNameSimplified + "|"; if (originalNameSimplified.Equals("")) { sms = new SingleMarketSetting(); } else { sms = PTMagicConfiguration.AnalyzerSettings.SingleMarketSettings.Find(s => SystemHelper.StripBadCode(s.SettingName, Constants.WhiteListNames).Equals(originalNameSimplified)); } sms.SettingName = SystemHelper.StripBadCode(HttpContext.Request.Form[smsFormKey + "SettingName"], Constants.WhiteListNames); sms.TriggerConnection = HttpContext.Request.Form[smsFormKey + "TriggerConnection"]; sms.OffTriggerConnection = HttpContext.Request.Form[smsFormKey + "OffTriggerConnection"]; sms.IgnoredMarkets = HttpContext.Request.Form[smsFormKey + "IgnoredMarkets"]; sms.AllowedMarkets = HttpContext.Request.Form[smsFormKey + "AllowedMarkets"]; sms.StopProcessWhenTriggered = HttpContext.Request.Form[smsFormKey + "StopProcessWhenTriggered"].Equals("on"); #region Triggers List <Trigger> newTriggers = new List <Trigger>(); List <string> singleMarketSettingTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "Trigger_") && k.EndsWith("|MarketTrendName")); foreach (string singleMarketSettingTriggerFormKey in singleMarketSettingTriggerFormKeys) { Trigger trigger = null; string originalTriggerNameSimplified = singleMarketSettingTriggerFormKey.Replace(smsFormKey + "Trigger_", "").Replace("|MarketTrendName", ""); string tFormKey = smsFormKey + "Trigger_" + originalTriggerNameSimplified + "|"; for (int f = 0; f < HttpContext.Request.Form[tFormKey + "MarketTrendName"].Count; f++) { if (originalTriggerNameSimplified.Equals("")) { trigger = new Trigger(); } else { trigger = sms.Triggers.Find(t => SystemHelper.StripBadCode(t.MarketTrendName, Constants.WhiteListNames).Equals(originalTriggerNameSimplified)); } trigger.MarketTrendName = HttpContext.Request.Form[tFormKey + "MarketTrendName"][f]; trigger.MarketTrendRelation = HttpContext.Request.Form[tFormKey + "MarketTrendRelation"][f]; trigger.MinChange = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "MinChange"][f], Constants.MinTrendChange, "en-US"); trigger.MaxChange = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "MaxChange"][f], Constants.MaxTrendChange, "en-US"); newTriggers.Add(trigger); } } List <string> singleMarketSettingCoinAgeTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "Trigger_AgeDaysLowerThan")); foreach (string singleMarketSettingCoinAgeTriggerFormKey in singleMarketSettingCoinAgeTriggerFormKeys) { Trigger trigger = null; string originalTriggerIndex = singleMarketSettingCoinAgeTriggerFormKey.Replace(smsFormKey + "Trigger_AgeDaysLowerThan", ""); string tFormKey = smsFormKey + "Trigger_AgeDaysLowerThan" + originalTriggerIndex; for (int f = 0; f < HttpContext.Request.Form[tFormKey].Count; f++) { trigger = new Trigger(); trigger.AgeDaysLowerThan = SystemHelper.TextToInteger(HttpContext.Request.Form[tFormKey][f], 0); newTriggers.Add(trigger); } } List <string> singleMarketSetting24hVolumeTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "Trigger_24hVolume") && k.EndsWith("|Min24hVolume")); foreach (string singleMarketSetting24hVolumeTriggerFormKey in singleMarketSetting24hVolumeTriggerFormKeys) { Trigger trigger = null; string originalTriggerIndex = singleMarketSetting24hVolumeTriggerFormKey.Replace(smsFormKey + "Trigger_24hVolume", "").Replace("|Min24hVolume", ""); string tFormKey = smsFormKey + "Trigger_24hVolume" + originalTriggerIndex + "|"; for (int f = 0; f < HttpContext.Request.Form[tFormKey + "Min24hVolume"].Count; f++) { trigger = new Trigger(); trigger.Min24hVolume = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "Min24hVolume"][f], 0, "en-US"); trigger.Max24hVolume = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "Max24hVolume"][f], Constants.Max24hVolume, "en-US"); newTriggers.Add(trigger); } } sms.Triggers = newTriggers; #endregion #region Off Triggers List <OffTrigger> newOffTriggers = new List <OffTrigger>(); List <string> singleMarketSettingOffTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "OffTrigger_") && k.EndsWith("|MarketTrendName")); foreach (string singleMarketSettingOffTriggerFormKey in singleMarketSettingOffTriggerFormKeys) { OffTrigger offTrigger = null; string originalOffTriggerNameSimplified = singleMarketSettingOffTriggerFormKey.Replace(smsFormKey + "OffTrigger_", "").Replace("|MarketTrendName", ""); string tFormKey = smsFormKey + "OffTrigger_" + originalOffTriggerNameSimplified + "|"; for (int f = 0; f < HttpContext.Request.Form[tFormKey + "MarketTrendName"].Count; f++) { if (originalOffTriggerNameSimplified.Equals("")) { offTrigger = new OffTrigger(); } else { offTrigger = sms.OffTriggers.Find(t => SystemHelper.StripBadCode(t.MarketTrendName, Constants.WhiteListNames).Equals(originalOffTriggerNameSimplified)); } offTrigger.MarketTrendName = HttpContext.Request.Form[tFormKey + "MarketTrendName"][f]; offTrigger.MarketTrendRelation = HttpContext.Request.Form[tFormKey + "MarketTrendRelation"][f]; offTrigger.MinChange = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "MinChange"][f], Constants.MinTrendChange, "en-US"); offTrigger.MaxChange = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "MaxChange"][f], Constants.MaxTrendChange, "en-US"); newOffTriggers.Add(offTrigger); } } List <string> singleMarketSettingHoursActiveOffTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "OffTrigger_HoursSinceTriggered")); foreach (string singleMarketSettingHoursActiveOffTriggerFormKey in singleMarketSettingHoursActiveOffTriggerFormKeys) { OffTrigger offTrigger = null; string originalOffTriggerIndex = singleMarketSettingHoursActiveOffTriggerFormKey.Replace(smsFormKey + "OffTrigger_HoursSinceTriggered", ""); string tFormKey = smsFormKey + "OffTrigger_HoursSinceTriggered" + originalOffTriggerIndex; for (int f = 0; f < HttpContext.Request.Form[tFormKey].Count; f++) { offTrigger = new OffTrigger(); offTrigger.HoursSinceTriggered = SystemHelper.TextToInteger(HttpContext.Request.Form[tFormKey][f], 0); newOffTriggers.Add(offTrigger); } } List <string> singleMarketSetting24hVolumeOffTriggerFormKeys = formKeys.FindAll(k => k.StartsWith(smsFormKey + "OffTrigger_24hVolume") && k.EndsWith("|Min24hVolume")); foreach (string singleMarketSetting24hVolumeOffTriggerFormKey in singleMarketSetting24hVolumeOffTriggerFormKeys) { OffTrigger offTrigger = null; string originalOffTriggerIndex = singleMarketSetting24hVolumeOffTriggerFormKey.Replace(smsFormKey + "OffTrigger_24hVolume", "").Replace("|Min24hVolume", ""); string tFormKey = smsFormKey + "OffTrigger_24hVolume" + originalOffTriggerIndex + "|"; for (int f = 0; f < HttpContext.Request.Form[tFormKey + "Min24hVolume"].Count; f++) { offTrigger = new OffTrigger(); offTrigger.Min24hVolume = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "Min24hVolume"][f], 0, "en-US"); offTrigger.Max24hVolume = SystemHelper.TextToDouble(HttpContext.Request.Form[tFormKey + "Max24hVolume"][f], Constants.Max24hVolume, "en-US"); newOffTriggers.Add(offTrigger); } } sms.OffTriggers = newOffTriggers; #endregion // Pairs Properties Dictionary <string, object> newPairsProperties = GetProfitTrailerProperties(formKeys, smsFormKey, "Pairs"); sms.PairsProperties = newPairsProperties; // DCA Properties Dictionary <string, object> newDCAProperties = GetProfitTrailerProperties(formKeys, smsFormKey, "DCA"); sms.DCAProperties = newDCAProperties; // Indicators Properties Dictionary <string, object> newIndicatorsProperties = GetProfitTrailerProperties(formKeys, smsFormKey, "Indicators"); sms.IndicatorsProperties = newIndicatorsProperties; newSingleMarketMarketSettings.Add(sms); } PTMagicConfiguration.AnalyzerSettings.SingleMarketSettings = newSingleMarketMarketSettings; }