amrali / Publications
Codes
iForexSessions for MetaTrader 5
Highlights the Forex Market Sessions (Sydney, Tokyo, London, New York)
Determine Broker's Daylight (DST) schedule for MetaTrader 5
Script to determine whether your Broker follows the US, UK or AU daylight (DST) schedule
Local Timezones and Local Session Hours for MetaTrader 5
Class to access to the local time for the specified location, as well as time zone information and the local trading session hours
TimeGMT library for the strategy tester for MetaTrader 5
Static class to fix the TimeGMT() function during testing in the strategy tester
Benchmark for MetaTrader 5
A set of macros to benchmark small code snippets for their execution speeds
xoshiro256 Random Number Generator for MetaTrader 5
The 64-bit xoshiro256** Random Number Generator
Introsort (Introspective sort) for MetaTrader 5
Sort the input array in-place using comparison function less
Radix sort (The fastest numeric sort) for MetaTrader 5
Sorts the values in the first dimension of a multidimensional numeric array in the ascending order
String Manipulation Functions for MetaTrader 5
A collection of useful string manipulation functions
MultiSort - sorting algorithm for MetaTrader 5
A sorter class to sort an array based on other arrays
Forum
Bug report: Wrong TimeTradeServer() in indicators.
Forum on trading, automated trading systems and testing trading strategies Possible bug in TimeTradeServer amrali , 2024.04.05 02:10 I am sorry for my previous responses. I re-checked and it seems to be a bug that affects TimeTraderServer() only inside indicators. Specifically, the bug occurs when
Bug: 'typename' keyword gives compile errors if used for identifiers inside namespaces
We faced a problem with 'typename' keyword gives compile errors if used for identifiers defined inside namespaces. See this example, it does not even compile namespace myspace { int x = 1 ; } void OnStart ( void ) { Print ( myspace::x ); // 1 Print ( typename (myspace::x) );
array out of range in 'Introsort.mqh' (225,23)
When including the header <Generic\ArrayList.mqh> I have encountered an array out of range in 'Introsort.mqh' I had to replicate that error using this script: #include <Generic\ArrayList.mqh> int test_array[]; void OnStart () { int size = 1 e7; // 10 millions ArrayResize (test_array, size);
Serious bug in the OrderCalcProfit() function
According to the documentation of OrderCalcProfit , "The function calculates the profit for the current account, in the current market conditions, based on the parameters passed. The function is used for pre-evaluation of the result of a trade operation. The value is returned in the account
Bug in MetaEditor Build 3566: Wrong display of double floating point numbers in the debugger window
I am attaching a screenshot of the error. Open test.mq5 in MetaEditor. Put a breakpoint on line #6, then run the debugger. The string() function bug was fixed before in build 3210. Wrong display of double floating point numbers in Dialog boxes and output of Print(), Alert(), Comment() and
Bug: EnumToString(SYMBOL_SWAP_MODE_CURRENCY_MARGIN)
I found this bug when using EnumToString() to display the swap calculation mode of a symbol. #define PRINT(A) Print ( #A + " = \"" + (A) + "\"" ) void OnStart () { Print ( "Build: " , TerminalInfoInteger ( TERMINAL_BUILD )); PRINT( EnumToString (( ENUM_SYMBOL_SWAP_MODE )
Bug in string() function. Wrong conversion of float -> string
Forum on trading, automated trading systems and testing trading strategies MT5/mql5 reported and confirmed bugs. amrali , 2022.02.17 15:33 Bug in string() function. Wrong conversion of float -> string. Build 3211 but this is not specific to this build, it's an old one. A bug is found in string()
How to get commission per lot in MQL5
Is there a programagic way (like SymbolInfoDouble, or AccountInfoDouble) to get the broker's commission per lot. From the market watch window, I can get it by right click on a symbol -> symbol specs. Anybody has an idea how the market watch window implemented it? I suggest this feature should be
CodeBase Bug: Code validation completed with errors
mql5\Scripts\Export_Summary_By_Days.mq5(12,11) : error 106: can't open 'MQL5\Include\Trade\DealInfo.mqh' include file mql5\Scripts\Export_Summary_By_Days.mq5(74,4) : error 256: 'CDealInfo' - undeclared identifier mql5\Scripts\Export_Summary_By_Days.mq5(74,14) : error 256: 'deal' - undeclared
Bug: function MathSample() does not generate correct results
The function MathSample() (defined in <Math\Stat\Math.mqh>) does not generate correct random samples. This a fix for the include file <Math\Stat\Math.mqh>: bool MathSample( const int &array[], const int count, int &result[]) { int size= ArraySize (array); //--- check array size if (size== 0 )