I am attaching your requested optimizer type. The new score considers Max Profit, SQN, Trades per Day, and the ratio of Long Profit to Short Profit.
There is one variable in there for the Long/Short Profit that is easy to change. I was not sure how sensitive you wanted this metric to be. I left comments in explaining.
//This value represents the floor to a divisor representing long short profit split
//0.1 = (60/40 split = 50/50 split = 40/60 split) performance would be halved at (70/30, 30/70)
//For a value of 0.05 (55/45 split = 50/50 split = 45/55 split)
//performance would be halved at (60/40, 40/60)
double rngLongShortBalance = 0.1;
//Actual calculation so that you can see what I am dividing by in the final output.
double rngLSbalance = Math.Max(rngLongShortBalance, Math.Abs(0.5 - (totLongProfit / totProfit)));
Basically, I thought you could use that variable to to set your own acceptable range outside of which there are reductions in the final score.
Otherwise the final score looks like this:
(SQN * Max Profit * Trades per Day) / (Long Short Ratio derivative)
To install place attached file in:
Open Ninja Trader editor and compile any indicator or strategy
I am also going to take a look at the idea you mentioned about variation around a smooth upward sloping profit line as a possible improvement to the SQN number. Right now I can't visualize if that is going to be an improvement or end up causing problems somewhere.
The following 3 users say Thank You to Luger for this post:
I am attaching the Perfect Equity Curve (PEC) variants as well.
PEC * Max Profit
(PEC * Max Profit * Trades per Day) / (Long Short ratio derivative)
I would stay with the SQN and variants. The PEC versions truly do favor smoother curves at the expense of many other considerations. This ended up mostly an academic exercise, and I am posting just for anyone that is curious. Though I guess it could be used to check a smaller optimization field once the larger population has been narrowed down.
For example, I optimized one variable on my bot with just PEC. Usually the top few choices run from 58k-63k profit. Pure PEC gave me 22k for the first three, then got to some in the mid to upper 50k.
The following 4 users say Thank You to Luger for this post:
It was small numbers compared to what I know you are planning...lol
Range was from 60 to 170 trades for those weird results. The PEC results in general, even for the variants, are certainly much more rigid than SQN. Instead of comparing to trade results to average profit and compiling, you are comparing current cumulative profit to where current cumulative profit should be based on average profit (average profit * trade number) and compiling. Effectively the variance can accrue trade to trade.
So far the PEC model seems to be performing very well. I am still wet behind the ears when it comes to Ninja and C#, I am having to re-learn stuff all over again after being out of it for years. But it seems that your code works. Once I get some more complex strategies converted, I'll know for sure
In my testing, the PEC model produces quicker [genetic time] and more desirable results than the other SQN types you provided.
Looking forward to it, and really want to thank you again.
Want my help or input? 1) Please don't PM me, instead make a post on the forum. 2) In your post, mention me by typing @Big Mike.
If you want to support our community, become an Elite Member.
It was in the original SQN code so I left it. If there are less than 30 trades, then SQN returns zero due to too small of a sample. I think that part also checks the number of parameters in the strategy and if there are more than 30, then that number becomes the floor.
I could be totally wrong. It would be nice to have someone who is a better coder to evaluate that section because it may just be wasting cpu cycles.
The following user says Thank You to Luger for this post: