Attachment sqx.jpg added
Attachment mt.jpg added
did you have same data and same ranges set in SQX and also in the MT platform?
AWESOME OSCILATOR - looks good
DEMARKER - you are right, its an oscilator and everytime will be between 0-1, no calibration needed at all, could be hardcoded
MOMENTUM - you are right, SQX is out of borders
QQE - you are right, SQX is out with the negative values
VORTEX - we dont have any "LEVEL" buidling blocks, so we are doing calibration for nothing - question is, if we need some "level" building blocks, it depends what is the logic of this indicator
KER - i am getting good values from calibration, but there is no calibration needed - always between 0-1
so there are really some bad values and FIX is needed
Hi Hankeys,
yes, same data and range, I am checking the full 34 years of history data to oversee the indicator values. I am thinking about coding a MQ4 Expert which outputs all these values in the way I want (formula explained above), so that I can manually enter the values if they cannot fix it. But they surely should.
About Vortex: you can check it in MQ4, the indicator comes with SQ, it outputs between 0.8 and 1.2. Not sure why we do not have any levels for it that are being used, as it outputs in that range. I haven´t checked all the single blocks and their settings yet, that´s the next planned step, but it will take some time, given that we have 400 now. But I will go through all of them manually. It´s the base of each strategy, this stuff must be 100% correct first, otherwise some indicators will be absolutely useless, as they are being used with totally useless values and hence are not really used in the logic of the created strategies, which is a pity.
More to come...
Attachment SQ_Indicator_Calibrator.mq4 added
Attachment SQ_Indicator_Calibrator.mq4 deleted
Attachment SQ_Indicator_Calibrator.mq4 added
I´ve finished an MT4 Expert that calibrates all indicators in the way that I would recommend to do it. Instead of using the absolute min / max values of "all time" like SQX does it right now when it calibrates the indicators automatically, it uses the standard deviation (nicely explained here: https://www.mathsisfun.com/data/standard-deviation.html) of all captures indicator values of each indicator from an array and also randomizes the periods for each indicator, since the resulting ranges for each indicator are vastly different if used with different periods (e.g. RSI with period 14 vs RSI with period 200), which is exactly what will happen once SQX generates strategies. It´s doing that on about 20% of the bars, to speed things up in MT4, as this is *extremely* slow there. You simply run it as an EA and do a backtest on the symbol / time frame and time range that you want to calibrate on. The output in the Journal tab are the recommended min / max / step size values for each indicator, which you can then enter in SQX "Calibrate Indicators" settings page. I am getting a huge increase in accepted strategies, because now SQX, once it generates strategies, "hits the sweet spot" a lot more than with the min / max method it´s been using internally, which generates many completely outlying entry conditions which will only happen once in a few years, which makes no sense.
The code is somewhat documented, so should be self explaining and I absolutely hope that this will be the new way SQX automatically calibrates indicators in the future. Mark: feel free to adapt my code into SQX / Java.
Please also note (as mentioned above) that the calibration for "Vortex" seems to be completely broken in SQX right now. I am also unsure what´s going on with BarRange / Biggest Range / Smallest Range, as, while I am using the formula from your own "mt4SQIndicators.inc" file, I am getting results in the 0.X range, while SQX currently always calibrates something >10 or 20.
As for the EA input settings:
MaxSteps = 500; // Max Step Size for the final calculations (just like you can specify it in SQX´s indicator calibration as well)
RoundToDigits = 6; // Round the final results to how many digits?
LowestPeriod = 14; // Lowest Period used for calculating indicators when calibrating them (match to your min lookback period in SQX)
HighestPeriod = 500; // Highest Period used for calculating indicators when calibrating them (match to your max lookback period in SQX)
Run the backtest as described above and be PATIENT! If you are getting out of memory errors in the journal, it means your backtesting time range is to long. Yes, MT4 sucks. This really needs to be implemented into SQX, as this will be magnitudes faster there (most likely ~1 second vs half an hour in MT4).
Cheers :-)
P.S.: I will extend this a little bit by allowing a multiplier for the standard deviation to cover more extreme (but still useful) ranges, in case someone needs that. Will update soon.
Status changed from New to Waiting for information
Attachment calibrationSettings.png added
thank you for your suggestions. I have already implemented the code, so it will be available in the latest dev build next week.
Please take a look at my screenshot. I've decided to make it maximally configurable so anyone can play with it and hopefully we will find some optimal settings which will be then set as default.
Here are a few quick points:
Just for a demonstration purpose, my example on the screenshot will produce following parameter settings:
RSI Period / sF / wF
10 / 10 / 4.236
20 / 20 / 4.236
50 / 40 / 4.236
100 / 80 / 4.236
200 / 160 / 4.236
min/max values will be calculated from Value1 only
I think this kind of extension should provide everything you need. You can manually alter the calibration values as you wish.
If you provide me some list containing indicator parameters settings you think would be good to have tested during calibration, I will add it to the existing snippets and it will also be included in the next build.
Best regards,
Tomas
Hi Tomas,
this looks nice! It woud still be good to a have a randomization for the period lengths like in my EA and having the user just set a min and max period (like in my EA too), but the way you suggest it, will also work, of course. One more point, you are saying "and min and max values will be calculated as mean +/- stdDev from all values. The global min/max values across all combinations will then be used as a result." I would prefer if you´d put ALL results from all periods into one array and calculate the StdDev from this instead of calculating the StdDev for each period separately and then using the global min / max of all StdDev´s. This does distort the results a good bit actually, as it is mathematically different compared to calculating the StdDev from ALL values and hence all indicator periods as ONE as done in my EA. However, it´s surely a good step in the right direction.
As for "good" standard indicator values, I am not a fan of that, I prefer to get those totally random as it has shown that my best strategies don´t use any of the standard periods for indicators that are "typical" amongst traders. So I might be the wrong person to ask that :-)
Have a great weekend and surely looking forward to this. Thank you :-)
Status changed from Waiting for information to Fixed
Values of all calibration runs of the indicator are stored into an array and mean + stddev is calculated from all the values.
Regarding the random values - we've discussed this with Mark and we both don't like the randomized numbers very much, because you never know how will the values be distributed across the range and you can get different results after each calibration. So we've decided to let the numbers definition as I suggested earlier. You can put in some randomized numbers if you want.
Also I deleted the Calibration annotation and the calibration settings will be defined in a special configuration file /user/settings/calibrationSettings.txt. It should be much easier to configure that way.
The values from the config file will be loaded before each calibration, so you can change the values, run calibration and the results will immediately reflect the current settings.
Best regards,
Tomas
Hi Tomas,
that sounds good. As for the randomization, you are saying: " because you never know how will the values be distributed across the range and you can get different results after each calibration". That´s exactly what the randomization is for and exactly what happens once SQX starts to generate strategies - it also randomized all the values. Hence doing the same via the calibration is just what will happen in reality later on and is reflecting this very well. Sure, each run of the calibration comes out with SLIGHTLY different values, but it´s really just slightly, I´ve tested this several times. At least this method reflects the reality of the strategy generation as close as possible.
Thank you :-)
Attachment Untitled.png added
So whole calibrating for those building blocks is for nothing
on the other side we are still calibrating oscilators which always ranging between 0-1