Symbols to Excel

Author: Copyright © 2020, Vladimir Karputov
Price Data Components
Miscellaneous
Uses files from the file systemIt writes information to file
0 Views
0 Downloads
0 Favorites
Symbols to Excel
ÿþ//+------------------------------------------------------------------+

//|                                             Symbols to Excel.mq5 |

//|                              Copyright © 2020, Vladimir Karputov |

//|                     https://www.mql5.com/ru/market/product/43516 |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2020, Vladimir Karputov"

#property link      "https://www.mql5.com/ru/market/product/43516"

#property version   "1.005"

#property description "First 5000 symbols only"

#property script_show_inputs

//---

#include <Trade\SymbolInfo.mqh>

//---

CSymbolInfo    m_symbol;                     // object of CSymbolInfo class

//--- input parameters

input string   InpFileName = "Symbols.csv";  // File Name

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

   int filehandle=FileOpen(InpFileName,FILE_WRITE|FILE_CSV);

   if(filehandle==INVALID_HANDLE)

     {

      Print("Operation FileOpen (",InpFileName,") failed, error ",GetLastError());

      return;

     }

//---

   int symbols_total=SymbolsTotal(false);

   int start=0,stop=0;

   if(symbols_total>5000)

      stop=5000;

   else

      stop=symbols_total;

//--- heading

   FileWrite(filehandle,"Symbol","Bid","Ask");

//--- creation Button[]

   for(int i=start; i<stop; i++)

     {

      string symbol_name=SymbolName(i,false);

      if(!m_symbol.Name(symbol_name)) // sets symbol name

        {

         Print("#",i," ",symbol_name,", ",__FUNCTION__,", ERROR: CSymbolInfo.Name",", IsSynchronized: ",m_symbol.IsSynchronized());

         continue;

        }

      if(RefreshRates())

        {

         FileWrite(filehandle,symbol_name,DoubleToString(m_symbol.Bid(),m_symbol.Digits()),DoubleToString(m_symbol.Ask(),m_symbol.Digits()));

        }

     }

   FileClose(filehandle);

  }

//+------------------------------------------------------------------+

//| Refreshes the symbol quotes data                                 |

//+------------------------------------------------------------------+

bool RefreshRates()

  {

//--- refresh rates

   if(!m_symbol.RefreshRates())

     {

      Print(m_symbol.Name()," ",__FUNCTION__,", ERROR: ","RefreshRates error");

      return(false);

     }

//--- protection against the return value of "zero"

   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)

     {

      Print(m_symbol.Name()," ",__FUNCTION__,", ERROR: ","Ask == 0.0 OR Bid == 0.0",", IsSynchronized: ",m_symbol.IsSynchronized());

      return(false);

     }

//---

   return(true);

  }

//+------------------------------------------------------------------+

Comments