Exemplo n.º 1
0
        public string GetOffTriggerMarketTrendSelection(OffTrigger ot)
        {
            string result = "";

            foreach (MarketTrend mt in PTMagicConfiguration.AnalyzerSettings.MarketAnalyzer.MarketTrends.FindAll(m => m.Platform.Equals("Exchange", StringComparison.InvariantCultureIgnoreCase)))
            {
                string selected = "";
                if (ot != null)
                {
                    if (ot.MarketTrendName.Equals(mt.Name, StringComparison.InvariantCultureIgnoreCase))
                    {
                        selected = " selected=\"selected\"";
                    }
                }

                result += "<option" + selected + " value=\"" + SystemHelper.StripBadCode(mt.Name, Constants.WhiteListNames) + "\">" + mt.Name + "</option>";
            }

            return(result);
        }
Exemplo n.º 2
0
        public string GetOffTriggerMarketTrendRelationSelection(OffTrigger ot)
        {
            string result = "";

            string selected = "";

            if (ot != null)
            {
                if (ot.MarketTrendRelation.Equals("Relative", StringComparison.InvariantCultureIgnoreCase))
                {
                    selected = " selected=\"selected\"";
                }
            }
            result += "<option" + selected + ">Relative</option>";

            if (ot != null)
            {
                if (ot.MarketTrendRelation.Equals("RelativeTrigger", StringComparison.InvariantCultureIgnoreCase))
                {
                    selected = " selected=\"selected\"";
                }
            }
            result += "<option" + selected + " value=\"RelativeTrigger\">Relative to trigger price</option>";

            if (ot != null)
            {
                if (ot.MarketTrendRelation.Equals("Absolute", StringComparison.InvariantCultureIgnoreCase))
                {
                    selected = " selected=\"selected\"";
                }
                else
                {
                    selected = "";
                }
            }
            result += "<option" + selected + ">Absolute</option>";


            return(result);
        }
Exemplo n.º 3
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;
        }