ListSignals

Miscellaneous
Uses files from the file systemIt writes information to file
0 Views
0 Downloads
0 Favorites
ListSignals
ÿþ//---------------------------------------------------------------------------------------------------------------------

#define     MName          "List Signals"

#define     MVersion       "1.210"

#define     MBuild         "2022-09-03 12:24 WEST"

#define     MCopyright     "Copyright \x00A9 2022, Fernando M. I. Carreiro, All rights reserved"

#define     MProfile       "https://www.mql5.com/en/users/FMIC"

//---------------------------------------------------------------------------------------------------------------------

#property   strict

#property   version        MVersion

#property   description    MName

#property   description    "MetaTrader Script (Build "MBuild")"

#property   copyright      MCopyright

#property   link           MProfile

//---------------------------------------------------------------------------------------------------------------------



// Script Setup

   #property script_show_inputs



// Script inputs

   input string

      sFileName  = "SignalsData.csv",  // File name of CSV file

      sDelimeter = "\t",               // Delimeter character (default = TAB)

      sDecimal   = ",",                // Decimal character

      sDate      = "-";                // Date delimiter character

   input int

      nDigits    = 2;                  // Number of decimal digits for floating point numbers



// Declare list of properties to collect

   ENUM_SIGNAL_BASE_STRING g_eStringProperty[] =

      { SIGNAL_BASE_NAME, SIGNAL_BASE_AUTHOR_LOGIN, SIGNAL_BASE_BROKER, SIGNAL_BASE_BROKER_SERVER, SIGNAL_BASE_CURRENCY };

   ENUM_SIGNAL_BASE_INTEGER g_eDateProperty[] =

      { SIGNAL_BASE_DATE_PUBLISHED, SIGNAL_BASE_DATE_STARTED, SIGNAL_BASE_DATE_UPDATED };

   ENUM_SIGNAL_BASE_INTEGER g_eIntegerProperty[] =

      { SIGNAL_BASE_ID, SIGNAL_BASE_LEVERAGE, SIGNAL_BASE_PIPS, SIGNAL_BASE_RATING, SIGNAL_BASE_SUBSCRIBERS, SIGNAL_BASE_TRADES, SIGNAL_BASE_TRADE_MODE };

   ENUM_SIGNAL_BASE_DOUBLE g_eDoubleProperty[] =

      { SIGNAL_BASE_BALANCE, SIGNAL_BASE_EQUITY, SIGNAL_BASE_GAIN, SIGNAL_BASE_MAX_DRAWDOWN, SIGNAL_BASE_PRICE, SIGNAL_BASE_ROI };



// OnStart event handler

   void OnStart() {

      int nSinglsTotal = SignalBaseTotal();

      if( nSinglsTotal > 0 ) {

         int hSignalsFile=FileOpen( sFileName, FILE_WRITE | FILE_CSV | FILE_ANSI, "", CP_UTF8 );

         if( hSignalsFile != INVALID_HANDLE ) {

            FileWriteString( hSignalsFile, sField( "INDEX", false ) );

            for( int i = 0; i < ArraySize( g_eStringProperty ); i++ )

               FileWriteString( hSignalsFile, eField( g_eStringProperty[  i ] ) );

            for( int i = 0; i < ArraySize( g_eDateProperty ); i++ )

               FileWriteString( hSignalsFile, eField( g_eDateProperty[    i ] ) );

            for( int i = 0; i < ArraySize( g_eIntegerProperty ); i++ )

               FileWriteString( hSignalsFile, eField( g_eIntegerProperty[ i ] ) );

            for( int i = 0; i < ArraySize( g_eDoubleProperty ); i++ )

               FileWriteString( hSignalsFile, eField( g_eDoubleProperty[  i ] ) );

            FileWriteString( hSignalsFile, "\n" );

            for( int j = 0; j < nSinglsTotal; j++ ) {

               if( SignalBaseSelect( j ) ) {

                  FileWriteString( hSignalsFile, (string) j );

                  for( int i = 0; i < ArraySize( g_eStringProperty ); i++ )

                     FileWriteString( hSignalsFile, sField( SignalBaseGetString(  g_eStringProperty[  i ] ) ) );

                  for( int i = 0; i < ArraySize( g_eDateProperty ); i++ )

                     FileWriteString( hSignalsFile, dtField( SignalBaseGetInteger( g_eDateProperty[   i ] ) ) );

                  for( int i = 0; i < ArraySize( g_eIntegerProperty ); i++ )

                     FileWriteString( hSignalsFile, lField( SignalBaseGetInteger( g_eIntegerProperty[ i ] ) ) );

                  for( int i = 0; i < ArraySize( g_eDoubleProperty ); i++ )

                     FileWriteString( hSignalsFile, dbField( SignalBaseGetDouble( g_eDoubleProperty[  i ] ) ) );

               };

               FileWriteString( hSignalsFile, "\n" );

            };

            FileClose( hSignalsFile );

         }

         else

            Print( "Invalid file handle!" );

      }

      else

         Print( "No Signals!" );

   };



// Supprt functions

   string sField(  string   sValue,  bool bDelimeter = true ) { return ( bDelimeter ? sDelimeter : "" ) + sValue; };

   string lField(  long     lValue,  bool bDelimeter = true ) { return sField( IntegerToString( lValue  ), bDelimeter ); };

   string dtField( datetime dtValue, bool bDelimeter = true ) {

      string sValue = TimeToString( dtValue );

      StringReplace( sValue, ".", sDate );

      return sField( sValue, bDelimeter ); };

   string dbField( double   dbValue, bool bDelimeter = true ) {

      string sValue = DoubleToString( dbValue, nDigits );

      StringReplace( sValue, ".", sDecimal );

      return sField( sValue, bDelimeter ); };

   template<typename T>

      string eField( T eValue,  bool bDelimeter = true ) {

         string sValue = EnumToString( eValue );

         StringReplace( sValue, "SIGNAL_BASE_", "" );

         return sField( sValue, bDelimeter ); };

Comments