We recently released an experimental feature that auto generates systems via a genetic algorithm. This is included in our free to use platform. More information from our Help Guide is located here - https://ninjatrader.com/support/helpGuides/nt8/en-us/ai-generate.htm
I looked at Genetic System Builder a little mostly because I wanted to see what the nature of its generated code looks like. Here are some notes I took: https://trademaid.info/sysbuilder.htm There are 38 built in indicators, with support for unlimited custom indicators. Even TS/MC locked code can be used. https://trademaid.info/gsbhelp/Builtinindicators.html The over simplified GSB system structure is. result=indicator1*weight*indicator2*indicator3; SecondaryFilter=Close >PreviousDailyClose; {for buy} There are other options here to. See secondary filter mode two topics below this one. If secondary Filter=true and result>0 then buy; If secondary Filter=true and result<0 then sell; https://trademaid.info/gsbhelp/Training.html It is very important NOT to use the highly volatile 2007 - 2008 period in training. This would lead to systems that perform poorly in lower volatility periods. https://trademaid.info/gsbhelp/Nthday.html Temporarily Pause trading every nTh days. A much better option than using trading periods for out of sample testing is Nth day. The reason for this is some years are just very hard to trade, and you don't know if a system failed to make money due to poor market conditions, or being a poor system. https://trademaid.info/gsbhelp/General.html Fitness Criteria This is what GSB looks to maximize in its training period. Default is netprofit * average trade. Speed is22,104 systems per minute. https://trademaid.info/gsbhelp/ofindicators.html You can have 1 to 5 indicators + secondary filters in GSB systems. 2 to 5 are recommended. result=indicator1*weight*indicator2*indicator3; SecondaryFilter=Close >PreviousDailyClose; {for buy} There are other options here to. See secondary filter mode two topics below this one. If secondary Filter=true and result>0 then buy; If secondary Filter=true and result<0 then sell https://trademaid.info/gsbhelp/Operators1.html "+ brackets" has been added in version 52.06. This overcomes the issue with "+" described below. + brackets will do the following. Result=(indicator1*w1+indicator2*w2)*indicator3*w3 Indicators can use the following operators. * / + and + brackets. Architectural problem with "+". Do not use + with * or /. The reason is any value will tend to be tiny compared to indicators multiplied together. This will likely result in redundant code. The default GSB code over simplified looks like this. Result=indicator1*w1*indicator2*w2*indicator3*w3 w1 default = -1 to 1 step 2. w2 defaults are 1. If operator + is used, then change all the weights to -100 to 100 step2 https://trademaid.info/gsbhelp/NormalizationModes.html Normalization Modes Leave these all true by default. GSB indicator data is normalized to be in the range of -100 to 100 over a normalization length of 100 bars. At 02:56, the video shows some sample code generated for TradeStation:
Good feature but over-fitting is a serious issue. I have been using a program that works only with price patterns called DLPAL S and that generates systems for NT7 and NT8. Over-fitting is lower due to no parameters and no indicators. I'm very satisfied with it but I'll be trying a genetic layer on top of the results soon. You see just feeding a genetic engine with indicators won't be profitable unless those indicators are to start with. I think you should consider adding some of the capability of DLPAL S in Ninja as it will be very useful and would be great if there was some integration.
I played with this over the weekend a little bit. It's promising, but it has a fatal flaw at the moment. You're only allowed to optimize based on the "Max Strength" fitness function. Unfortunately, this fitness function very often will choose strategies that are only 1 trade with 0 drawdown. Obviously, a trading strategy that is only 1 cherry-picked trade over 10 years is overly curve-fit to the extreme. I've already requested in the NT forums to allow optimization based on any fitness function so I will await that in a future update. (Another solution would be for NT to modify the max strength fitness function by subtracting the biggest winning trade and also the biggest win streak, something Robert Pardo suggests in his book.)
https://ninjatrader.com/support/hel..._fitness_metrics.htm#UnderstandingMaxStrength I guess they aren't kidding with "Work in progress." A genetic programming rule generator I wrote usually uses a fitness function that's a variation of the Ulcer Performance Index (http://www.tangotools.com/ui/ui.htm) multiplied by the number of winning trades and divided by the number of training samples. Fitness is then higher for a combination of a smooth equity curve and a greater number of winning trades. That almost sounds like how the Max Strength fitness metric is described.