Compress paid & free files into ZIP and upload
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.

Duplique su archivo mq4 (EA) y cree "nombre del producto EA_free.mq4". ※Use el nombre de su propio producto EA.
Inserte este código en la primera línea de su archivo mq4. Es el código que llama al archivo mqh descargado.
#include
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
•
•
•
int Magic_number_A
extern int Magic_number_A
input Magic_number_A
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.
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);
}
Coloque la siguiente función al final de su archivo mq4 y funcionará correctamente.
Llame a la siguiente función dentro de la función OnTimer.
void OnTimer()
{
if(!IsTesting())
{
SendAccountData(AccountNumber());
}
}
void OnTimer()
{
if(!IsTesting())
{
SendAccountData(AccountNumber());
}
}
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.
//Global variables
#include
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());
}
}
//+------------------------------------------------------------------+

Duplique su archivo mq4 (EA) y cree (nombre del producto EA)_paid.mq4. ※Use el nombre de su propio producto EA.
Inserte este código en la primera línea de su archivo mq4. Es el código que llama al archivo mqh descargado.
#include
※ 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
extern int MAGIC = Your EA's magic number;
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;
}
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.
//Global variables
#include
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;
}
//+------------------------------------------------------------------+

Duplique su archivo mq5 (EA) y cree "nombre del producto EA_free.mq5". ※Use el nombre de su propio producto EA.
Inserte este código en la primera línea de su archivo mq5. Es el código que llama al archivo mqh descargado.
#include
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
•
•
•
int Magic_number_A
extern int Magic_number_A
input Magic_number_A
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;
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);
}
Coloque la siguiente función al final de su archivo mq4 y funcionará correctamente.
Llame a la siguiente función dentro de la función OnTimer.
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);
}
}
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.
//Global variables
#include
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);
}
}
//+------------------------------------------------------------------+

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.
Inserte este código en la primera línea de su archivo mq5. Es el código que llama al archivo mqh descargado.
#include
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);
}
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);
}
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.
//Global variables
#include
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);
}

Copie el archivo mqh descargado en la carpeta MQL5 → Include.
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
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);
}
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.
//Global variables
#include
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;
}
}
//+------------------------------------------------------------------+

Copie el archivo mqh descargado en la carpeta MQL5 → Include.
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
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;
}
}
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.
//Global variables
#include
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;
}
}
}
//+------------------------------------------------------------------+
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.