Download MetaTrader 5

Detecting existence or nonexistence of symbol ...

To add comments, please log in or register
Petr Klíma
23
Petr Klíma  
Is there an reliable method for detecting if an symbol does exist or does not?

Curently I use this:

boolean function IsSymbol(string SY) {
double tmpTickValue = MarketInfo( SY ,MODE_TICKVALUE);
if ( tmpTickValue > 0) {
  // This Symbol does exist
  return(true);
} else {
  return(false);
}

Is It OK?
What you use?

Petr "Qaxi" Klima
http://sourceforge.net/projects/mql4-qaxi-libs/
Slava
Moderator
7081
Slava  

No, not reliable. You should check last error, not returned value

double bid=MarketInfo(SY,MODE_BID);
if(GetLastError()==4106) // unknown symbol
   return(false)
else return(true)

You can use other modes: MODE_LOW,MODE_HIGH,MODE_TIME,MODE_ASK,MODE_POINT,MODE_DIGITS, MODE_SPREAD,MODE_MARGINREQUIRED. Then You check nonselected symbols.

If You use MODE_TICKVALUE or other unlisted above modes You can get information about nonselected in the MarketWatch window symbols (however symbol can exist). In this case if last error is 4106 then symbol is nonselected and nonexisted.

Petr Klíma
23
Petr Klíma  
Thanks

That is exactly what I need.

The perfectly described answer.

Thank you very much.

Petr Qaxi
Ray
2653
Ray  

My question, which remains unanswered, is how to "discover" symbols.

Yes, we can run through a list of all possible currencies, but that does not address additional securities or indexes that may be available at a Dealer.

Slava
Moderator
7081
Slava  
phy:

My question, which remains unanswered, is how to "discover" symbols.

Yes, we can run through a list of all possible currencies, but that does not address additional securities or indexes that may be available at a Dealer.


Unfortunately, this information cannot be obtained programmatically
fdeguzman
66
fdeguzman  

stringo:

Unfortunately, this information cannot be obtained programmatically

 

1.  Right click on Market Watch, then select Show All.  That will display all existing symbols

2.  Right click on Market Watch again.  Select Sets, Save As....  Call it Universe.set.  This set file is saved into symbolsets folder.

3.  Make a link to your symbolsets folder by entering the command in your dos prompt.

    mklink /d "C:\Program Files (x86)\MetaTrader\experts\files\symbolsets" "C:\Program Files (x86)\MetaTrader\symbolsets" 

 The command above creates a subfolder under your experts\files folder.  Everything inthis folder including subfolders are accessible with FILEOPEN.

4. Once the symbolic link is established, you may now FILEOPEN("symbolsets\universe.set",FILE_CSV|FILE_READ);

5. You may read through your file universe.set just like any other text file.

 

 

fdeguzman
66
fdeguzman  
stringo:

Unfortunately, this information cannot be obtained programmatically
phy:

My question, which remains unanswered, is how to "discover" symbols.

Yes, we can run through a list of all possible currencies, but that does not address additional securities or indexes that may be available at a Dealer.

 

1. Right click on Market Watch, then select Show All. That will display all existing symbols

2. Right click on Market Watch again. Select Sets, Save As.... Call it Universe.set. This set file is saved into symbolsets folder.

3. Make a link to your symbolsets folder by entering the command in your dos prompt.

mklink /d "C:\Program Files (x86)\MetaTrader\experts\files\symbolsets" "C:\Program Files (x86)\MetaTrader\symbolsets"

The command above creates a subfolder under your experts\files folder. Everything inthis folder including subfolders are accessible with FILEOPEN.

4. Once the symbolic link is established, you may now FILEOPEN("symbolsets\universe.set",FILE_CSV|FILE_READ);

5. You may read through your file universe.set just like any other text file. 

Simon Gniadkowski
Moderator
18052
Simon Gniadkowski  
fdeguzman:

1.  Right click on Market Watch, then select Show All.  That will display all existing symbols

2.  Right click on Market Watch again.  Select Sets, Save As....  Call it Universe.set.  This set file is saved into symbolsets folder.

3.  Make a link to your symbolsets folder by entering the command in your dos prompt.

    mklink /d "C:\Program Files (x86)\MetaTrader\experts\files\symbolsets" "C:\Program Files (x86)\MetaTrader\symbolsets" 

 The command above creates a subfolder under your experts\files folder.  Everything inthis folder including subfolders are accessible with FILEOPEN.

4. Once the symbolic link is established, you may now FILEOPEN("symbolsets\universe.set",FILE_CSV|FILE_READ);

5. You may read through your file universe.set just like any other text file.


It took you 5 years to answer this post ?

Why not just do it the same way that allmarketdata does it ?  https://www.mql5.com/en/forum/141214
Xifeng Zhao
857
Xifeng Zhao  
Ray:

My question, which remains unanswered, is how to "discover" symbols.

Yes, we can run through a list of all possible currencies, but that does not address additional securities or indexes that may be available at a Dealer.


for( i=0; i<SymbolsTotal(false); i++) Print( SymbolName( i, false));
To add comments, please log in or register