Thanks for this info about "degrees of freedom" jcl. I never looked at it that way before but it makes sense and gives a good rule-of-thumb I think.

Another way to increase # of trades is to reduce the BarPeriod/TimeFrame. That is one reason I've chosen to focus on smaller timeframes, even though I know they may be overall less profitable. I think it is also a balance of risk, because while higher timeframes may equate to better profit and accuracy, it may also increase risk by holding positions open longer. I would prefer to take profit off the table in smaller increments, repeatedly.

@ibra here is a code snippet that I use that warns you when your script produces less than the desired # of trades, and will stop training your script in that case:
Code:
function checkTradesPerCycle()
{
	//require minimum 30 trades per WFO cycle or stop training
	static int LastWFOCycle = 0, LastNumTrades = 0;
	if(Train && (WFOCycle != LastWFOCycle) )
	{
		if(LastNumTrades > 0 and LastNumTrades < 30)
		{
			char tradecount[100];
			sprintf(tradecount,"Not enough trades per cycle: %d",LastNumTrades);
			quit(tradecount);
		}
		LastWFOCycle = WFOCycle;
	}
	LastNumTrades = NumWinTotal+NumLossTotal;
}