Scripts: MT5 to MT4 Set File Converter

 

MT5 to MT4 Set File Converter:

Convierte los archivos con la extensión .set del formato de MetaTrader 5 al formato de MetaTrader 4.

Autor: Richard Gunning

 
puede probar un EA multiplataforma en el más potente probador de estrategias de MetaTrader 5, y luego запустить его в MetaTrader 4 con los mismos parámetros.
Verdad de la vida.
 

Por favor, ¿puede alguien ayudar a hacer el indicador de color zigzag que se hizo con el lenguaje MT5 trabajo en la plataforma MT4. He intentado usar el script de arriba pero sin éxito

el archivo se adjunta a continuación.

Aquí está mi correo electrónico mgbe_nsor@yahoo.com.

Gracias en espera de su amable respuesta

Archivos adjuntos:
 

bien.

gracias

 

Me gustó un indicador MT5 y lo convertí en archivo de conjunto MT4 utilizando su script. Pero no estoy seguro de cómo utilizar el archivo de conjunto MT4 sin el archivo MQL4/ex4.

¿Cómo puedo cargar el archivo de conjunto MT4 convertido en el gráfico MT4 sin los archivos MT4/ex4?

¿Es posible convertir un archivo MQL5 en un archivo MQL4?.

 


Pensé que era daora, pero lo intenté y no pude hacer una conversión. ¿Alguien podría convertir la tabajara?

 
ThaironBathory:


Pensé que era daora, pero lo intenté y no pude hacer una conversión. ¿Alguien podría convertir el tabajara?

Este es un foro en inglés.

Por favor, escribe sólo en inglés.

Utiliza la herramienta de traducción si es necesario.

 

Gracias por el script. Hay un error que causa un Array Out of Range Error en la línea 94. El código corregido es:

//+------------------------------------------------------------------+
//|                                             SetFileConverter.mq5 |
//|                                                  Richard Gunning |
//|                                            https://rjgunning.com |
//+------------------------------------------------------------------+
#property copyright "Richard Gunning"
#property link      "https://rjgunning.com"
#property version   "1.00"
#property description "Script for converting set files from MT5 format to MT4 format."
#property description "Set files must be in Files Folder or a SubDirectory."
#property script_show_inputs
#property strict

#include <Files/FileTxt.mqh>

//--- input parameters
input string   File=""; // SetFile Name to Convert (Leave blank to convert all)
input string   SubDirectory=""; // SubDirectory of Files Folder in which to search
input string   Directory="MT4-Output-Setfiles"; //Output Directory Name (Not Blank)

//--- Create Global Variables
CFileTxt *output=new CFileTxt;
CFileTxt *file=new CFileTxt;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long m_handle;
   bool m_file_found=true;
   string searchString="*.set";
   string thisDirectory=Directory;
   string src_path;
   string dst_path;

//--- Create Output Directory
   if(thisDirectory==""){thisDirectory="MT4-Output-Setfiles";}
   if(!output.FolderCreate(thisDirectory))
     {
      Print("Error Creating Destination Folder");
      delete output;
      delete file;
      return;
     }

//--- Set Search String and Find First Matching file in Directory
   if(File!=""){searchString=File;}
   if(SubDirectory=="")
     {
      m_handle=file.FileFindFirst(searchString,src_path);
     }
   else
     {
      m_handle=file.FileFindFirst(SubDirectory+"//"+searchString,src_path);
     }

//--- Loop through matching files and run conversion
   while(m_handle!=INVALID_HANDLE && m_file_found)
     {
      StringConcatenate(dst_path,thisDirectory,"//",src_path);
      StringReplace(dst_path,".set","-MT4.set");
      if(output.Open(dst_path,FILE_WRITE|FILE_REWRITE)!=INVALID_HANDLE &&
         file.Open(src_path,FILE_READ)!=INVALID_HANDLE)
        {
         Convert();
        }
      //--- Close SetFiles
      output.Close();
      file.Close();

      //--- Get Next SetFile
      m_file_found=file.FileFindNext(m_handle,src_path);

     }
//--- Delete Global objects
   delete output;
   delete file;
  }
//+------------------------------------------------------------------+
//|  Parse MT5 Set File Line By Line and Write Output Set File       |
//+------------------------------------------------------------------+
void Convert()
  {
   string line,str;
   string values[2];
   string split[];
   int opt;

   while(!file.IsEnding())
     {
      line=file.ReadString();
      StringSplit(line,'=',values);
      StringSplit(values[1],'|',split);
      if(ArraySize(split)==0){ArrayResize(split,1);}
      for(int i=0,count=0;i<ArraySize(split);i++)
        {
         if(split[i]==""){continue;}

         if(count==0)
           {
            str=StringFormat("%s=%s",values[0],split[i]);
           }
         else if(count<4)
           {
            str=StringFormat("%s,%d=%s",values[0],count,split[i]);
           }
         else
           {
            opt=(split[i]=="Y")?1:0;
            str=StringFormat("%s,F=%d",values[0],opt);
           }
         output.WriteString(str+"\r\n");

         count++;
        }
     }

  }
//+------------------------------------------------------------------+

 
¿por qué no me funciona?
 
Arturo Lopez Perez:

Gracias por el script. Hay un error que causa un Array Out of Range Error en la línea 94. El código corregido es:

//+------------------------------------------------------------------+
//|                                             SetFileConverter.mq5 |
//|                                                  Richard Gunning |
//|                                            https://rjgunning.com |
//+------------------------------------------------------------------+
#property copyright "Richard Gunning"
#property link      "https://rjgunning.com"
#property version   "1.00"
#property description "Script for converting set files from MT5 format to MT4 format."
#property description "Set files must be in Files Folder or a SubDirectory."
#property script_show_inputs
#property strict

#include <Files/FileTxt.mqh>

//--- input parameters
input string   File=""; // SetFile Name to Convert (Leave blank to convert all)
input string   SubDirectory=""; // SubDirectory of Files Folder in which to search
input string   Directory="MT4-Output-Setfiles"; //Output Directory Name (Not Blank)

//--- Create Global Variables
CFileTxt *output=new CFileTxt;
CFileTxt *file=new CFileTxt;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long m_handle;
   bool m_file_found=true;
   string searchString="*.set";
   string thisDirectory=Directory;
   string src_path;
   string dst_path;

//--- Create Output Directory
   if(thisDirectory==""){thisDirectory="MT4-Output-Setfiles";}
   if(!output.FolderCreate(thisDirectory))
     {
      Print("Error Creating Destination Folder");
      delete output;
      delete file;
      return;
     }

//--- Set Search String and Find First Matching file in Directory
   if(File!=""){searchString=File;}
   if(SubDirectory=="")
     {
      m_handle=file.FileFindFirst(searchString,src_path);
     }
   else
     {
      m_handle=file.FileFindFirst(SubDirectory+"//"+searchString,src_path);
     }

//--- Loop through matching files and run conversion
   while(m_handle!=INVALID_HANDLE && m_file_found)
     {
      StringConcatenate(dst_path,thisDirectory,"//",src_path);
      StringReplace(dst_path,".set","-MT4.set");
      if(output.Open(dst_path,FILE_WRITE|FILE_REWRITE)!=INVALID_HANDLE &&
         file.Open(src_path,FILE_READ)!=INVALID_HANDLE)
        {
         Convert();
        }
      //--- Close SetFiles
      output.Close();
      file.Close();

      //--- Get Next SetFile
      m_file_found=file.FileFindNext(m_handle,src_path);

     }
//--- Delete Global objects
   delete output;
   delete file;
  }
//+------------------------------------------------------------------+
//|  Parse MT5 Set File Line By Line and Write Output Set File       |
//+------------------------------------------------------------------+
void Convert()
  {
   string line,str;
   string values[2];
   string split[];
   int opt;

   while(!file.IsEnding())
     {
      line=file.ReadString();
      StringSplit(line,'=',values);
      StringSplit(values[1],'|',split);
      if(ArraySize(split)==0){ArrayResize(split,1);}
      for(int i=0,count=0;i<ArraySize(split);i++)
        {
         if(split[i]==""){continue;}

         if(count==0)
           {
            str=StringFormat("%s=%s",values[0],split[i]);
           }
         else if(count<4)
           {
            str=StringFormat("%s,%d=%s",values[0],count,split[i]);
           }
         else
           {
            opt=(split[i]=="Y")?1:0;
            str=StringFormat("%s,F=%d",values[0],opt);
           }
         output.WriteString(str+"\r\n");

         count++;
        }
     }

  }
//+------------------------------------------------------------------+

 

En la versión inglesa, se ha sugerido que el array está fuera de límites en la línea 94 del código fuente, y el adjunto es el script que se ha cambiado.

Archivos adjuntos: