Q-DIAMOND100 SCAM ALERT!!
I downloaded a free demo of Q-DIAMOND100 from qdiamondsystems.com who encourage backtesting of its products before buying.
I examined the MT4 executables and quickly found that the robot code contains a back-date table that flicks a switch to inhibit trading on certain days in the past.
Because the table contains no future dates the most probable reason for the table is to eliminate bad trades during backtesting in order to make the results appear better than they really are!
To be fair, the table doesnt inhibit trades during 2005-2008 which is an indication that this EA probably worked well during this period. But the time is *now* and the EA squashes trades right up to september 1st this year (2011) which leads me to believe that this EA is fading.
CONCLUSION
Dont buy a product that hides its source code. You must know what is inside your purchased product to be completely satisfied that it works as advertised. Not only can a product hide its bad trades during a back-trade to fool you into buying the product, but the same technique (called a time bomb) can be used to dump your live money account right into the floor at some future date (like 11th September)!
Here is the offending piece of code. If buyselswitch is zero then it wont trade:
--------------CODE FRAGMENT---------------------
if (Year() < 2004) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2009 && Month() == 12 && Day() == 17) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2009 && Month() == 12 && Day() == 18) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 6 && Day() == 3) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 6 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 7 && Day() == 15) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 8 && Day() == 11) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 10 && Day() == 12) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 2) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 4 && ld_12 != 37.0 && ld_12 != 47.0) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 16) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 17 && ld_12 != 37.0) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 22) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 23) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 10) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 29) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 30) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 31) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 9 && Day() == 1) buySelSwitch = 0;
...
if (buySelSwitch == 1.0 && l_count_356 < maxcount) {
// submit buy order
}
...
if (buySelSwitch == 2.0 && l_count_360 < maxcount) {
// submit sell order
}
// else do nothing
---------END CODE FRAGMENT-----------------------
I downloaded a free demo of Q-DIAMOND100 from qdiamondsystems.com who encourage backtesting of its products before buying.
I examined the MT4 executables and quickly found that the robot code contains a back-date table that flicks a switch to inhibit trading on certain days in the past.
Because the table contains no future dates the most probable reason for the table is to eliminate bad trades during backtesting in order to make the results appear better than they really are!
To be fair, the table doesnt inhibit trades during 2005-2008 which is an indication that this EA probably worked well during this period. But the time is *now* and the EA squashes trades right up to september 1st this year (2011) which leads me to believe that this EA is fading.
CONCLUSION
Dont buy a product that hides its source code. You must know what is inside your purchased product to be completely satisfied that it works as advertised. Not only can a product hide its bad trades during a back-trade to fool you into buying the product, but the same technique (called a time bomb) can be used to dump your live money account right into the floor at some future date (like 11th September)!
Here is the offending piece of code. If buyselswitch is zero then it wont trade:
--------------CODE FRAGMENT---------------------
if (Year() < 2004) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2009 && Month() == 12 && Day() == 17) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2009 && Month() == 12 && Day() == 18) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 6 && Day() == 3) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 6 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 7 && Day() == 15) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 8 && Day() == 11) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 10 && Day() == 12) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 2) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 4 && ld_12 != 37.0 && ld_12 != 47.0) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 16) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 17 && ld_12 != 37.0) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 22) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2010 && Month() == 11 && Day() == 23) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 5 && Day() == 5) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 4) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 10) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 29) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 30) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 8 && Day() == 31) buySelSwitch = 0;
if (buySelSwitch > 0.0 && Year() == 2011 && Month() == 9 && Day() == 1) buySelSwitch = 0;
...
if (buySelSwitch == 1.0 && l_count_356 < maxcount) {
// submit buy order
}
...
if (buySelSwitch == 2.0 && l_count_360 < maxcount) {
// submit sell order
}
// else do nothing
---------END CODE FRAGMENT-----------------------