SYSTEMTRADE.COM For Vendor
How to List EX4/EX5 Files

Compress paid & free files into ZIP and upload

$
Paid File EX4 / EX5
+
FREE
Free File EX4 / EX5
ZIP Compress ZIP
Upload Done
⚠️Important

When listing in EX4/EX5 format, forward testing
must be measured on the developer's own live account.
Please be aware of this in advance.

Puede enviar en formato ex4/5 con la lógica de autenticación de cuenta e historial de operaciones incluida.
Al publicar con archivos ex4/5, comprima las versiones de pago y gratuita en un archivo zip y súbalo.

A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar la versión gratuita

 Duplique su archivo mq4 (EA) y cree "nombre del producto EA_free.mq4". ※Use el nombre de su propio producto EA.

Imagen de plantilla Free_create | SYSTEMTRADE.COM

02Insertar el código de llamada

 Inserte este código en la primera línea de su archivo mq4. Es el código que llama al archivo mqh descargado.

SYSTEMTRADE.COM imagen | SYSTEMTRADE.COM
				
					#include <web_auth.mqh>
				
			

03Ocultar el parámetro magic number

Magic Number Settings
Free Version Do Not Expose
Do not expose as
an external parameter.
Paid Version Expose
Please expose as
an external parameter.

 No exponga el magic number como parámetro externo.

 En este ejemplo, usaremos la siguiente variable de magic number para el EA. No necesita cambiar el nombre de su propia variable.

Magic_number_A
Magic_number_B
Magic_number_C


 ※ El historial de operaciones se gestiona mediante el magic number.

				
					int Magic_number_A
				
			
				
					extern int Magic_number_A
				
			
				
					input Magic_number_A
				
			

04 Adición de código 1

Inserte el siguiente código al inicio de la función OnInit. (Debe insertarse justo después de la función OnInit)
El número del magic number en ArrayResize del Ejemplo 1 especifica el tamaño.
Ingrese el tamaño según la cantidad de magic numbers de su EA. (Ingrese 1 si su EA tiene solo un magic number)
Para EAs con muchos magic numbers, aumente la cantidad de magic numbers almacenados como se muestra en el Ejemplo 2 a continuación.

				
					int OnInit()
 {
 ArrayResize(magic_numbers, 6);     
    magic_numbers[0] = Magic_number_A; 
    magic_numbers[1] = Magic_number_B;
    magic_numbers[2] = Magic_number_C; 
    magic_numbers[3] = Magic_number_D;
    magic_numbers[4] = Magic_number_E; 
    magic_numbers[5] = Magic_number_F;
				
			

05 Adición de código 2

 Después de especificar el magic number, inserte este código debajo del código agregado en el paso anterior.

 A continuación, inserte el código restante de la función OnInit.

				
					int OnInit()
 {
 ArrayResize(magic_numbers, 6);     
    magic_numbers[0] = Magic_number_A; 
    magic_numbers[1] = Magic_number_B;
    magic_numbers[2] = Magic_number_C; 
    magic_numbers[3] = Magic_number_D;
    magic_numbers[4] = Magic_number_E; 
    magic_numbers[5] = Magic_number_F;
total_magic_numbers = ArraySize(magic_numbers);
   if(!IsTesting())
     {
      SendAccountData(AccountNumber());

      if(!WebAuthenticate(AccountNumber()))
        {
         Alert("systre.com Account verification failed");
         ExpertRemove();
        }
     }
   EventSetTimer(6000);   return(INIT_SUCCEEDED);
  }

				
			

06 Adición de código 3

Si NO está usando la función OnTimer

 Coloque la siguiente función al final de su archivo mq4 y funcionará correctamente.

Si está usando la función OnTimer

Llame a la siguiente función dentro de la función OnTimer.

				
					<!-- Bottom of source code -->
void OnTimer()
  {
   if(!IsTesting())
     {
      SendAccountData(AccountNumber());
     }
  }
				
			
				
					void OnTimer()
  {
   if(!IsTesting())
     {
      SendAccountData(AccountNumber());
     }
  }
				
			

07Código de ejemplo

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
  #include <web_auth.mqh>
    int Magic_number_A = 0000;//Magic number (Free version: do not release the magic number.)
  //int Magic_number_B = 1111;
  //int Magic_number_C = 2222;
  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  //Executed first
  int OnInit()
    {
     ArrayResize(magic_numbers, 1);//Change this number if there are multiple magic numbers
     magic_numbers[0] = Magic_number_A;
   //magic_numbers[1] = Magic_number_B;
   //magic_numbers[2] = Magic_number_C;

     total_magic_numbers = ArraySize(magic_numbers);
     if(!IsTesting())
       {
        SendAccountData(AccountNumber());

        if(!WebAuthenticate(AccountNumber()))
          {
           Alert("systre.com Account verification failed");
           ExpertRemove();
          }
       }
     EventSetTimer(6000);
     return(INIT_SUCCEEDED);
    }

  //Timer
  void OnTimer()
    {
     if(!IsTesting())
       {
        SendAccountData(AccountNumber());
       }
    }
  //+------------------------------------------------------------------+
				
			
A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar la versión de pago

 Duplique su archivo mq4 (EA) y cree (nombre del producto EA)_paid.mq4. ※Use el nombre de su propio producto EA.

Imagen de plantilla Free_create | SYSTEMTRADE.COM

02Insertar el código de llamada

Inserte este código en la primera línea de su archivo mq4. Es el código que llama al archivo mqh descargado.

				
					#include <paid_auth.mqh>
				
			

03 Declarar el magic number

Magic Number Settings
Free Version Do Not Expose
Do not expose as
an external parameter.
Paid Version Expose
Please expose as
an external parameter.

 ※ Nota
 A diferencia de la versión gratuita, la versión de pago debe exponer el parámetro magic number como parámetro externo.
 Si tiene múltiples magic numbers, ingrese el valor del primer magic number.

				
					#include <paid_auth.mqh>
extern int MAGIC = Your EA's magic number;

				
			

04 Adición de código

 Inserte este código al inicio de la función OnInit. En el código, declare int pass_magic = el magic number de su EA;

				
					int OnInit() {
int pass_magic = Your EA's magic number;
    if (!IsTesting()) {
        if (!WebAuthenticate(AccountNumber(), pass_magic)) {
            Alert("systre.com Account verification failed");
            ExpertRemove();
        }
    }
    return INIT_SUCCEEDED;
}

				
			

05Código de ejemplo

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
  #include <paid_auth.mqh>
    extern int MAGIC =  111;//Please release the magic number as an external parameter.
  //extern int MAGIC2 = 222;
  //extern int MAGIC3 = 333;

  //Executed first
  int OnInit() {

  int  pass_magic =111;//Enter the same value as the first magic number.
   if (!IsTesting()) {
          if (!WebAuthenticate(AccountNumber(), pass_magic)) {
              Alert("systre.com Account verification failed");
              ExpertRemove();
          }
      }
      return INIT_SUCCEEDED;
  }
     //+------------------------------------------------------------------+
				
			
A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar la versión gratuita

 Duplique su archivo mq5 (EA) y cree "nombre del producto EA_free.mq5". ※Use el nombre de su propio producto EA.

Imagen de plantilla Free_create_mt5 | SYSTEMTRADE.COM

02Insertar el código de llamada

 Inserte este código en la primera línea de su archivo mq5. Es el código que llama al archivo mqh descargado.

				
					#include <web_auth_mt5.mqh>
				
			

03Ocultar el parámetro magic number

Magic Number Settings
Free Version Do Not Expose
Do not expose as
an external parameter.
Paid Version Expose
Please expose as
an external parameter.

 No exponga el magic number como parámetro externo.

 En este ejemplo, usaremos la siguiente variable de magic number para el EA. No necesita cambiar el nombre de su propia variable.

Magic_number_A
Magic_number_B
Magic_number_C


 ※ El historial de operaciones se gestiona mediante el magic number.

				
					int Magic_number_A
				
			
				
					extern int Magic_number_A
				
			
				
					input Magic_number_A
				
			

04 Adición de código 1

Inserte el siguiente código al inicio de la función OnInit. (Debe insertarse justo después de la función OnInit)
El número del magic number en ArrayResize del Ejemplo 1 especifica el tamaño.
Ingrese el tamaño según la cantidad de magic numbers de su EA. (Ingrese 1 si su EA tiene solo un magic number)
Para EAs con muchos magic numbers, aumente la cantidad de magic numbers almacenados como se muestra en el Ejemplo 2 a continuación.

				
					int OnInit()
 {
 long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
 ArrayResize(magic_numbers, 6);     
    magic_numbers[0] = Magic_number_A; 
    magic_numbers[1] = Magic_number_B;
    magic_numbers[2] = Magic_number_C; 
    magic_numbers[3] = Magic_number_D;
    magic_numbers[4] = Magic_number_E; 
    magic_numbers[5] = Magic_number_F;
				
			

05 Adición de código 2

Después de especificar el magic number, inserte este código debajo del código agregado en el paso anterior.

 A continuación, inserte el código restante de la función OnInit.

				
					int OnInit()
{
long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
ArrayResize(magic_numbers, 3);
magic_numbers[0] = Magic_number_A;
magic_numbers[1] = Magic_number_B;
magic_numbers[2] = Magic_number_C;

 total_magic_numbers = ArraySize(magic_numbers);

   if(!MQLInfoInteger(MQL_TESTER))
     {
      SendAccountData(account_number);
      bool authResult = WebAuthenticate(account_number);
      if(!authResult)
        {
         Print("Authentication failed. Removing Expert Advisor.");
         ExpertRemove();
        }
     }

   EventSetTimer(6000);
   return(INIT_SUCCEEDED);
  }
				
			

06 Adición de código 3

Si NO está usando la función OnTimer

 Coloque la siguiente función al final de su archivo mq4 y funcionará correctamente.

Si está usando la función OnTimer

Llame a la siguiente función dentro de la función OnTimer.

				
					<!-- Bottom of source code -->
void OnTimer()
  {
   long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   if(!MQLInfoInteger(MQL_TESTER))
     {
      SendAccountData(account_number);
     }
  }
				
			
				
					void OnTimer()
  {
   long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   if(!MQLInfoInteger(MQL_TESTER))
     {
      SendAccountData(account_number);
     }
  }
				
			

07Código de ejemplo

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
  #include <web_auth_mt5.mqh>
    int Magic_number_A = 111;//Magic number (Free version: do not release the magic number.)
  //int Magic_number_B = 222;
  //int Magic_number_C = 333;

  //+------------------------------------------------------------------+
  //|                                                                  |
  //+------------------------------------------------------------------+
  int OnInit()
    {
     long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
     ArrayResize(magic_numbers, 1);//Change this number if there are multiple magic numbers
    magic_numbers[0] = Magic_number_A;
  //magic_numbers[1] = Magic_number_B;
  //magic_numbers[2] = Magic_number_C;

     total_magic_numbers = ArraySize(magic_numbers);

     if(!MQLInfoInteger(MQL_TESTER))
       {
        SendAccountData(account_number);
        bool authResult = WebAuthenticate(account_number);
        if(!authResult)
          {
           Print("Authentication failed. Removing Expert Advisor.");
           ExpertRemove();
          }
       }

     EventSetTimer(6000);
     return(INIT_SUCCEEDED);
    }

  //Timer
  void OnTimer()
    {
     long account_number = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
     if(!MQLInfoInteger(MQL_TESTER))
       {
        SendAccountData(account_number);
       }
    }
  //+------------------------------------------------------------------+
				
			
A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar la versión de pago

Duplique su archivo .mq5 (EA) y cree (nombre de su producto EA)_paid.mq5.
* Use el nombre de su propio producto EA en el nombre del archivo.

Imagen de plantilla Paid_create_mt5 | SYSTEMTRADE.COM

02Insertar el código de llamada

 Inserte este código en la primera línea de su archivo mq5. Es el código que llama al archivo mqh descargado.

				
					#include <paid_auth_mt5.mqh>
				
			

03 Adición de código

 Inserte este código al inicio de la función OnInit. (Debe insertarse justo después de la función OnInit)

				
					int OnInit()
  {
   long AccountNumber = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   int pass_magic = ;
   if(!MQLInfoInteger(MQL_TESTER))
     {
      if(!WebAuthenticate(AccountNumber,pass_magic))
        {
         Alert("systre.com Account verification failed");
         ExpertRemove();
        }
     }
     return(INIT_SUCCEEDED);
  }

				
			

04 Declarar el magic number

Magic Number Settings
Free Version Do Not Expose
Do not expose as
an external parameter.
Paid Version Expose
Please expose as
an external parameter.

 En el código, declare int pass_magic = el magic number de su EA; (Ingrese el número, no la variable MagicNumber.) ※Ejemplo: int pass_magic = 1234;


 A diferencia de la versión gratuita, la versión de pago debe exponer el parámetro magic number como parámetro externo.

 Para EAs que usan múltiples magic numbers, ingrese el primer magic number.

				
					int OnInit()
  {
   long AccountNumber = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   int pass_magic = Your EA's magic number;
   if(!MQLInfoInteger(MQL_TESTER))
     {
      if(!WebAuthenticate(AccountNumber,pass_magic))
        {
         Alert("systre.com Account verification failed");
         ExpertRemove();
        }
     }
     return(INIT_SUCCEEDED);
  }

				
			

07Código de ejemplo

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
  #include <paid_auth_mt5.mqh>
  input int MAGIC = 111;//Please release the magic number as an external parameter.
  //input int MAGIC2 = 222;
  //input int MAGIC3 = 333;

  //Executed first
  int OnInit()
    {

     long AccountNumber = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
     int pass_magic = 111;//Enter the same value as the first magic number.
     if(!MQLInfoInteger(MQL_TESTER))
       {
        if(!WebAuthenticate(AccountNumber,pass_magic))
          {
           Alert("systre.com Account verification failed");
           ExpertRemove();
          }
       }
       return(INIT_SUCCEEDED);
    }
				
			
A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar el archivo mqh

 Copie el archivo mqh descargado en la carpeta MQL5 → Include.

02Insertar el código de llamada

 Inserte este código en la primera línea del archivo mq4 de su indicador. Es el código que llama al archivo mqh descargado.

				
					#include <indicator_auth.mqh>
				
			

03 Adición de código

 Inserte este código al inicio de la función OnInit.
En el código, cree int pass_magic = un número de identificación único de 6 a 8 dígitos.
Evite números simples para prevenir duplicados dentro del sitio.
En caso de duplicación, podríamos pedirle que cambie el número.

				
					int OnInit() {
   int pass_magic = 12345678; 

        if (!SystreAuth(AccountNumber(), pass_magic)) {
            Alert("systre.com Account verification failed");
                 return(INIT_FAILED); 
        }

return(INIT_SUCCEEDED);
}

				
			

04Compilar

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
  #include <indicator_auth.mqh>


  int OnInit() {

  int  pass_magic =12345678;//Please create an identification number of 6 to 8 digits. Avoid simple numbers to prevent duplicates on the site.
  //In the unlikely event of a duplicate, you may be asked to change the number.

          if (!SystreAuth(AccountNumber(), pass_magic)) {
              Alert("systre.com Account verification failed");
                 return;
          }

  }
     //+------------------------------------------------------------------+
				
			
A partir de aquí, usaremos "Meta Editor" para continuar.

01Preparar el archivo mqh

 Copie el archivo mqh descargado en la carpeta MQL5 → Include.

02Insertar el código de llamada

Inserte este código en la primera línea del archivo mq5 de su indicador. Es el código que llama al archivo mqh descargado.

				
					#include <indicator_auth_mt5.mqh>
				
			

03 Adición de código

 Inserte este código al inicio de la función OnInit.
En el código, cree int pass_magic = un número de identificación único de 6 a 8 dígitos.
Evite números simples para prevenir duplicados dentro del sitio.
En caso de duplicación, podríamos pedirle que cambie el número.

				
					 long AccountNumber = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   int pass_magic = 12345678;//examle
   if(!MQLInfoInteger(MQL_TESTER))
     {
      if(!SystreAuth(AccountNumber,pass_magic))
        {
         Alert("systre.com Account verification failed");
         return false;
        }
     }
				
			

04Compilar

Compile después de agregar el código de autenticación.

 Si desea probar la lógica de autenticación en su entorno, indíquenos su número de cuenta.

 ※ Para las pruebas, agregue https://sys-tre.com/ a la lista de URL permitidas de WebRequest.

Código de ejemplo

				
					//Global variables
#include <indicator_auth_mt5.mqh>


  int OnInit() {

   long AccountNumber = StringToInteger(IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)));
   int pass_magic = 12345678;//examle
   if(!MQLInfoInteger(MQL_TESTER))
     {
      if(!SystreAuth(AccountNumber,pass_magic))
        {
         Alert("systre.com Account verification failed");
         return false;
        }
     }

  }
     //+------------------------------------------------------------------+
				
			
¡También ofrecemos servicios de desarrollo de lógica de autenticación!

 Nuestro equipo también puede encargarse de los pasos anteriores por usted.
Si lo desea, suba el archivo en formato MQ4/5 al publicar y lo revisaremos.
Si tiene alguna pregunta, no dude en contactarnos.

Scroll to Top