The library allows receiving a magic number bound to three elements:
- Symbol (financial instrument) name;
- Timeframe;
- Prefix index;
All these three elements are to be encoded in 64 bits, of which:
- Symbol name = 48 bits (the first 8 characters are taken from the name);
- Timeframe = 5 bits;
- Prefix index = 11 bits (may be a number from 0 to 2047, inclusive).
The prefix number is necessary for obtaining several unique magic numbers on a single chart. To do this, we need to call the appropriate function with different prefix indices. The number of prefix indices is limited and may vary from 0 to 2047, inclusive.
To obtain the magic number, just call the function:
ulong GetMagicNumber(ushort prefix,//prefix number                      string symbol,//Symbol name                      ENUM_TIMEFRAMES tf);//Timeframe
Example of use:
//+------------------------------------------------------------------+ //| Input params //+------------------------------------------------------------------+ input ushort MagicPrefixNumber_ = 0; //+------------------------------------------------------------------+ //| Import functions //+------------------------------------------------------------------+ #import "cUniMagicNumber.ex5"   ulong GetMagicNumber(ushort prefix,//prefix number                         string symbol,//Symbol name                         ENUM_TIMEFRAMES tf);//Timeframe #import //+------------------------------------------------------------------+ //| Global Vars //+------------------------------------------------------------------+ ulong _MagicNumber; //+------------------------------------------------------------------+ //| Custom indicator initialization function                        | //+------------------------------------------------------------------+ int OnInit() {   _MagicNumber = GetMagicNumber(MagicPrefixNumber_, Symbol(), Period());   return (INIT_SUCCEEDED); }