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");
}