Whether a trader is planning to use a traditional trading system development platform such as AmiBroker, or a machine learning development platform such as one using Python, my recommendation is the same. Work with a single issue -- a single ticker. If you are hoping to trade the NASDAQ 100, use either the futures contract or QQQ. If you are hoping to trade an individual stock that is a member of the NASDAQ 100, pick one and work with it exclusively. After developing that one system, pick another stock and develop a separate system for it. And so on. Evaluate each system every day. Rotate among them, trading the system that has the highest risk-normalized profit potential as of that day.
Making all 100 of the stocks that make up the NASDAQ 100 available for testing is an optimization over a 100 element symbol space. (Be aware of membership bias -- the 100 constituents this year are not the same as they were last year. Using this year's list to test historical data will give overly optimistic results.) Just as testing the lookback periods for ten values each for two moving averages is an optimization over a 100 element space. Doing both is an optimization over a 10,000 element space.
The models we build using AmiBroker are single decision trees. They divide the data by using a sequence of rules that form upsidedown trees. One rule might be, if c > ma(c,10) then use the right branch, otherwise use the left branch. Eventually the branches lead down to "leaves" that are labeled Buy or Sell. Decision trees are very good at fitting the model to the data. So good, that there is a serious risk of overfitting. A model that has perhaps 1000 (four years) points of data and a large number of rules results in a very good fit. The only way to tell whether the fit is to a profitable and persistent signal is to test the model out-of-sample.
This is not in any way a criticism of AmiBroker. It is a caution that applies to all trading systems, no matter how they are developed.
My mantra ------------
My preference is for systems that have these characteristics, each of which trades a single issue in a single direction:
...trade accurately -- 65% or so is minimum.
...hold a short period -- no longer than one or two days.
...trade frequently -- once a week, more or less.
...avoid serious losing trades.
It is much more than a preference -- it is a requirement. When the risk associated with systems that do not have these characteristics is evaluated, and position size is set so that the risk to the trading account remains within my risk tolerance, they do not have enough profit potential to make trading them worthwhile.
Comparing traditional development platforms with machine learning -----------
Traditional platforms come from chart analysis and periodic Buy / Sell signals that mark the beginning and end of trades. Early on, the markets had large inefficiencies, signals were easy to identify, trends held for long periods, it was safe to hold long periods. The platform is built around handling and analysis of time series with functions that can easily refer to earlier data. The primary model (set of equations and rules) is single decision tree. The analysis came from and still is "compute an indicator, then see what happens later."
Machine learning works with independent data points, including a target for each data point. Time references and time dependencies must be computed as separate data elements and explicitly included so that each data point can be analyzed independently. One of the techniques for model fitting and validation is sorting the data points into random sets in a process called cross-validation. The focus moves from the indicator to the target. It is "identify a profitable trade, then see what came earlier." Combining the four-rule mantra I described above with the focus on the target, the trading system as we came to know it disappears.
Best regards, Howard