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.