void PrepareStrategyForGenerating()
{
lockedEntrySlot = null;
lockedEntryFilters = 0;
aLockedEntryFilter = new IndicatorSlot[Math.Max(Strategy.MaxOpenFilters, strategyBest.OpenFilters)];
lockedExitSlot = null;
lockedExitFilters = 0;
aLockedExitFilter = new IndicatorSlot[Math.Max(Strategy.MaxCloseFilters, strategyBest.CloseFilters)];
// Copy the locked slots
for (int slot = 0; slot < strategyBest.Slots; slot++)
{
if (strategyBest.Slot[slot].SlotStatus == StrategySlotStatus.Locked ||
strategyBest.Slot[slot].SlotStatus == StrategySlotStatus.Linked)
{
if (strategyBest.Slot[slot].SlotType == SlotTypes.Open)
lockedEntrySlot = strategyBest.Slot[slot];
else if (strategyBest.Slot[slot].SlotType == SlotTypes.OpenFilter)
{
aLockedEntryFilter[lockedEntryFilters] = strategyBest.Slot[slot];
lockedEntryFilters++;
}
else if (strategyBest.Slot[slot].SlotType == SlotTypes.Close)
lockedExitSlot = strategyBest.Slot[slot];
else if (strategyBest.Slot[slot].SlotType == SlotTypes.CloseFilter)
{
aLockedExitFilter[lockedExitFilters] = strategyBest.Slot[slot];
lockedExitFilters++;
}
}
}
if (chbGenerateNewStrategy.Checked)
bestBalance = 0;
else
bestBalance = (isOOS ? Backtester.Balance(barOOS) : Backtester.NetBalance);
maxOpeningLogicSlots = chbMaxOpeningLogicSlots.Checked ? (int)nudMaxOpeningLogicSlots.Value: Strategy.MaxOpenFilters;
maxClosingLogicSlots = chbMaxClosingLogicSlots.Checked ? (int)nudMaxClosingLogicSlots.Value: Strategy.MaxCloseFilters;
return;
}