Saltar al contenido

¿Cómo compilar un archivo MQL4 con una herramienta de línea de comandos?

Solución:

Para compilar un archivo de código fuente desde una línea de comando, puede usar MetaEditor para eso. Por ejemplo:

metaeditor.exe /compile:"C:Program FilesPlatformMQL5Scriptsmyscript.mq5"

Para uso de 64 bits metaeditor64.exe en lugar de.

En Linux / macOS, esto se puede lograr usando Wine, por ejemplo:

wine metaeditor.exe /compile:"MQL4/Experts/MACD Sample.mq4"

Para la compilación masiva, puede especificar una carpeta, como:

metaeditor.exe" /compile:"MQL5Scripts"

Para especificar una carpeta MQL5 / MQL4 personalizada con archivos de inclusión, puede usar /inc parámetro, por ejemplo:

metaeditor.exe /compile:"./Scripts" /inc:"C:Program FilesTradingPlatform 2MQL5"

Para obtener información adicional sobre el proceso de compilación, puede utilizar /log:

metaeditor.exe /compile:"C:Program FilesPlatformMQL5Scriptsmyscript.mq5" /log 

Para verificar solo la sintaxis, agregue extra /s.

Si la compilación falla, el MQL4.log El archivo se creará en la carpeta de la plataforma con los detalles relevantes. Va a estar en formato UTF-16, por lo que es posible que necesite una herramienta especial para ello (como Vim, Ruby, findstr o rg).

Para especificar el archivo de registro de compilación personalizado, utilice /log:file.log parámetro, p. ej.

metaeditor.exe /log:errors.log /compile:.

Nota: No se admite la visualización en la salida estándar (aunque en Linux puede usar: /log:CON).

Para obtener más información, consulte: Compilación desde la línea de comandos


Hace algún tiempo se podía descargar el compilador de programas MQL4 / MQL5 que se ejecuta por separado de MetaEditor – MQL.exe. Se distribuyó por separado del terminal y se podía descargar en las siguientes direcciones:

https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mql.exe

https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mql64.exe

Uso (según compilación 1162 del compilador MQL4 / MQL5 del 2 de julio de 2015):

mql.exe [<flags>] filename.mq5
        /mql5     - compile mql5 source
        /mql4     - compile mql4 source
        /s        - syntax check only
        /i:<path> - set working directory
        /o        - use code optimizer

Sin embargo, el compilador independiente se eliminó intencionalmente, por lo que ahora los enlaces apuntan al instalador a favor de MetaEditor.


Una versión mucho más antigua de MetaTrader antes de la compilación 600 tenía metalang.exe incluido con la plataforma.

Sin embargo, en la compilación 616, MetaQuotes ha eliminado intencionalmente el compilador (mql.exe/mql64.exe) de la instalación estándar de MetaTrader.

Esto significa que si actualiza su plataforma MT (> 616), se eliminará el ejecutable del compilador.

Esto es un poco tarde, pero como escribí un pequeño script para UltraEdit / UEStudio y he recibido mucha ayuda de stackoverflow, aquí está mi script. Compila y luego copia el ex4 en varias instalaciones de prueba de MT4:

El botón “Compilar” en UE hace:

"MT4Compile.bat" "%FilePath" "%FileName"
Start in path eg: D:DevelopmentMQ4 (Location of MT4Compile.bat)

Normalmente, mi código fuente está en un árbol de biblioteca en D: Development MQ4[Group][ExpertName][FileName].mq4

Contenido de D: Development MQ4 MT4Compile.bat:

@echo off
rem Version: 1.1
rem Date:   24 Sep 2013
rem Author: Shawky
rem Refer to HELP: for info

SET XC=xcopy /D /Y /V /F /I
SET PROGDIR=D:DevelopmentGo Pro Demo (MQ4 Testing)
SET DSTPATH=%PROGDIR%experts

SET SIMPATH1=G:AppsMT4BackTest IC (Recent)experts
SET SIMPATH2=G:AppsMT4BackTest IC (All)experts
SET SIMPATH3=G:AppsMT4BackTest Go (All)experts
SET DEPLOYPATH=D:DevelopmentDeploymentexperts

SET SRCPATH=%1
SET SRCPATH=%SRCPATH:"=%
IF "%SRCPATH%"=="" (
    SET SRCPATH=[Arg1]
)

SET APPNAME=%2
SET APPNAME=%APPNAME:"=%
IF "%APPNAME%"=="" (
    SET APPNAME=[Arg2]
)

SET SRCFILE=%APPNAME%.mq4
SET DSTFILE=%APPNAME%.ex4


SET CMD="%PROGDIR%metalang.exe" "%SRCFILE%" "%DSTFILE%"

IF "%SRCPATH%"=="[Arg1]"  GOTO HELP
IF "%APPNAME%"=="[Arg2]"  GOTO HELP

cd %SRCPATH%

IF NOT EXIST "%SRCFILE%"  (
    SET ERROR=Error: File "%SRCFILE%" does not exist in %SRCPATH%
    GOTO HELP
)

echo .
echo Compiling %SRCFILE% to %DSTPATH%%DSTFILE%
echo .
DEL *.log
%CMD%
IF EXIST "%DSTFILE%" (
    echo .
    echo Distributing executable to SIM and Deployment paths
    %XC% "%DSTFILE%" "%DSTPATH%"
    IF EXIST "%SIMPATH1%"   %XC% "%DSTFILE%" "%SIMPATH1%"
    IF EXIST "%SIMPATH2%"   %XC% "%DSTFILE%" "%SIMPATH2%"
    IF EXIST "%SIMPATH3%"   %XC% "%DSTFILE%" "%SIMPATH3%"
    IF EXIST "%DEPLOYPATH%" copy /B /Y "%DSTFILE%" "%DEPLOYPATH%%APPNAME% (Dev).ex4"
)

goto END

:HELP
echo .  Metatrader 4 Command Line utility for compiling MT4 programmes.
echo .
echo .  This batch files allows MT4 applications to be compiled from a directory other than .experts.
echo .  The output will be copied to experts after compilation.
echo .
echo .  [Arg1] = Path to MT4 application directory
echo .  [Arg2] = Name (without extension) of the main MQ4 source code to compile.
echo .
echo .  Example:
echo .      MT4Compile.bat "D:DevelopmentMQ4MyExpert" "PrimaryMQ4FileName"
echo .
echo .  Programme Directory: %PROGDIR%
echo .  Source Path:         %SRCPATH%
echo .  Source File:         %SRCFILE%
echo .  Destination File:    %DSTFILE%
echo .  Target Path:         %DSTPATH%
echo .
echo .  Argument 1:          %SRCPATH%
echo .  Argument 2:          %APPNAME%
echo .
echo .  Commands to execute would be:
echo .
echo .      %CMD%
echo .      %XC% "%DSTFILE%" "%DSTPATH%"
echo .
echo .  %ERROR%
echo .

pause

:END

Todo lo mejor.

Shawky

Sí, hay un ejecutable en el directorio de instalación del terminal. Se llama metalang.exe.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *