예제 #1
0
 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";
     }
 }
예제 #2
0
        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;
        }