Forex_Strategy_Builder.Dialogs.Generator.Generator.PrepareIndicatorLists C# (CSharp) Метод

PrepareIndicatorLists() приватный Метод

Prepare available indicators for each slot.
private PrepareIndicatorLists ( ) : void
Результат void
        void PrepareIndicatorLists()
        {
            // Clear lists
            entryIndicators.Clear();
            entryFilterIndicators.Clear();
            exitIndicators.Clear();
            exitIndicatorsWithFilters.Clear();
            exitFilterIndicators.Clear();

            // Copy all no banned indicators
            foreach (string indicator in Indicator_Store.OpenPointIndicators)
                if (!indicatorsLayout.IsIndicatorBanned(SlotTypes.Open, indicator))
                    entryIndicators.Add(indicator);
            foreach (string indicator in Indicator_Store.OpenFilterIndicators)
                if (!indicatorsLayout.IsIndicatorBanned(SlotTypes.OpenFilter, indicator))
                    entryFilterIndicators.Add(indicator);
            foreach (string indicator in Indicator_Store.ClosePointIndicators)
                if (!indicatorsLayout.IsIndicatorBanned(SlotTypes.Close, indicator))
                    exitIndicators.Add(indicator);
            foreach (string indicator in Indicator_Store.ClosingIndicatorsWithClosingFilters)
                if (!indicatorsLayout.IsIndicatorBanned(SlotTypes.Close, indicator))
                    exitIndicatorsWithFilters.Add(indicator);
            foreach (string indicator in Indicator_Store.CloseFilterIndicators)
                if (!indicatorsLayout.IsIndicatorBanned(SlotTypes.CloseFilter, indicator))
                    exitFilterIndicators.Add(indicator);

            // Remove special cases
            bool isPeriodDayOrWeek = Data.Period == DataPeriods.day || Data.Period == DataPeriods.week;

            if (entryIndicators.Contains("Fibonacci"))
                entryIndicators.Remove("Fibonacci");
            if (entryIndicators.Contains("Day Opening") && isPeriodDayOrWeek)
                entryIndicators.Remove("Day Opening");
            if (entryIndicators.Contains("Hourly High Low") && isPeriodDayOrWeek)
                entryIndicators.Remove("Hourly High Low");
            if (entryIndicators.Contains("Entry Hour") && isPeriodDayOrWeek)
                entryIndicators.Remove("Entry Hour");

            if (entryFilterIndicators.Contains("Random Filter"))
                entryFilterIndicators.Remove("Random Filter");
            if (entryFilterIndicators.Contains("Data Bars Filter"))
                entryFilterIndicators.Remove("Data Bars Filter");
            if (entryFilterIndicators.Contains("Date Filter"))
                entryFilterIndicators.Remove("Date Filter");
            if (entryFilterIndicators.Contains("Long or Short"))
                entryFilterIndicators.Remove("Long or Short");
            if (entryFilterIndicators.Contains("Entry Time"))
                entryFilterIndicators.Remove("Entry Time");
            if (entryFilterIndicators.Contains("Lot Limiter"))
                entryFilterIndicators.Remove("Lot Limiter");
            if (entryFilterIndicators.Contains("Hourly High Low") && isPeriodDayOrWeek)
                entryFilterIndicators.Remove("Hourly High Low");

            if (exitIndicators.Contains("Day Closing") && isPeriodDayOrWeek)
                exitIndicators.Remove("Day Closing");
            if (exitIndicators.Contains("Hourly High Low") && isPeriodDayOrWeek)
                exitIndicators.Remove("Hourly High Low");
            if (exitIndicators.Contains("Exit Hour") && isPeriodDayOrWeek)
                exitIndicators.Remove("Exit Hour");
            if (exitIndicators.Contains("Close and Reverse") && strategyBest.OppSignalAction != OppositeDirSignalAction.Reverse && strategyBest.PropertiesStatus == StrategySlotStatus.Locked)
                exitIndicators.Remove("Close and Reverse");

            if (exitIndicatorsWithFilters.Contains("Day Closing") && isPeriodDayOrWeek)
                exitIndicatorsWithFilters.Remove("Day Closing");
            if (exitIndicatorsWithFilters.Contains("Close and Reverse") && strategyBest.OppSignalAction != OppositeDirSignalAction.Reverse && strategyBest.PropertiesStatus == StrategySlotStatus.Locked)
                exitIndicatorsWithFilters.Remove("Close and Reverse");

            if (exitFilterIndicators.Contains("Random Filter"))
                exitFilterIndicators.Remove("Random Filter");
            if (exitFilterIndicators.Contains("Hourly High Low") && isPeriodDayOrWeek)
                exitFilterIndicators.Remove("Hourly High Low");
        }