Compare commits
No commits in common. "c32829844180236961fb23371cb7649583a27d8f" and "ea2e37f0a71e98f6557befb2f50cdb0df2f44108" have entirely different histories.
c328298441
...
ea2e37f0a7
4 changed files with 7 additions and 141 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
trader-data
|
||||
config
|
||||
|
||||
.devcontainer/
|
||||
.env
|
||||
config/
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ fi
|
|||
# Install mt5linux library in Windows if not installed
|
||||
show_message "[6/7] Checking and installing mt5linux library in Windows if necessary"
|
||||
if ! is_wine_python_package_installed "mt5linux"; then
|
||||
$wine_executable python -m pip install --no-cache-dir --no-deps "mt5linux==0.1.9"
|
||||
$wine_executable python -m pip install --no-cache-dir "mt5linux>=0.1.9"
|
||||
fi
|
||||
|
||||
# Install python-dateutil if needed (datetime is built-in, but dateutil adds features)
|
||||
|
|
@ -111,7 +111,7 @@ fi
|
|||
# Install mt5linux library in Linux if not installed
|
||||
show_message "[6/7] Checking and installing mt5linux library in Linux if necessary"
|
||||
if ! is_python_package_installed "mt5linux"; then
|
||||
pip install --break-system-packages --no-cache-dir --no-deps mt5linux==0.1.9 && \
|
||||
pip install --break-system-packages --no-cache-dir --no-deps mt5linux && \
|
||||
pip install --break-system-packages --no-cache-dir rpyc plumbum numpy
|
||||
fi
|
||||
|
||||
|
|
@ -123,7 +123,7 @@ fi
|
|||
|
||||
# Start the MT5 server on Linux
|
||||
show_message "[7/7] Starting the mt5linux server..."
|
||||
python3 -m mt5linux --host 0.0.0.0 -p $mt5server_port -w $wine_executable python.exe &
|
||||
python3 -m mt5linux --host 0.0.0.0 -p $mt5server_port $wine_executable python.exe &
|
||||
|
||||
# Give the server some time to start
|
||||
sleep 5
|
||||
|
|
|
|||
|
|
@ -1,136 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Configuration variables
|
||||
mt5file='/config/.wine/drive_c/Program Files/MetaTrader 5/terminal64.exe'
|
||||
WINEPREFIX='/config/.wine'
|
||||
WINEDEBUG='-all'
|
||||
wine_executable="wine"
|
||||
metatrader_version="5.0.36"
|
||||
mt5server_port="8001"
|
||||
MT5_CMD_OPTIONS="${MT5_CMD_OPTIONS:-}"
|
||||
mono_url="https://dl.winehq.org/wine/wine-mono/10.3.0/wine-mono-10.3.0-x86.msi"
|
||||
python_url="https://www.python.org/ftp/python/3.9.13/python-3.9.13.exe"
|
||||
mt5setup_url="https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe"
|
||||
|
||||
# Function to display a graphical message
|
||||
show_message() {
|
||||
echo $1
|
||||
}
|
||||
|
||||
# Function to check if a dependency is installed
|
||||
check_dependency() {
|
||||
if ! command -v $1 &> /dev/null; then
|
||||
echo "$1 is not installed. Please install it to continue."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check if a Python package is installed
|
||||
is_python_package_installed() {
|
||||
python3 -c "import pkg_resources; exit(not pkg_resources.require('$1'))" 2>/dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# Function to check if a Python package is installed in Wine
|
||||
is_wine_python_package_installed() {
|
||||
$wine_executable python -c "import pkg_resources; exit(not pkg_resources.require('$1'))" 2>/dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# Check for necessary dependencies
|
||||
check_dependency "curl"
|
||||
check_dependency "$wine_executable"
|
||||
|
||||
# Install Mono if not present
|
||||
if [ ! -e "/config/.wine/drive_c/windows/mono" ]; then
|
||||
show_message "[1/7] Downloading and installing Mono..."
|
||||
curl -o /config/.wine/drive_c/mono.msi $mono_url
|
||||
WINEDLLOVERRIDES=mscoree=d $wine_executable msiexec /i /config/.wine/drive_c/mono.msi /qn
|
||||
rm /config/.wine/drive_c/mono.msi
|
||||
show_message "[1/7] Mono installed."
|
||||
else
|
||||
show_message "[1/7] Mono is already installed."
|
||||
fi
|
||||
|
||||
# Check if MetaTrader 5 is already installed
|
||||
if [ -e "$mt5file" ]; then
|
||||
show_message "[2/7] File $mt5file already exists."
|
||||
else
|
||||
show_message "[2/7] File $mt5file is not installed. Installing..."
|
||||
|
||||
# Set Windows 10 mode in Wine and download and install MT5
|
||||
$wine_executable reg add "HKEY_CURRENT_USER\\Software\\Wine" /v Version /t REG_SZ /d "win10" /f
|
||||
show_message "[3/7] Downloading MT5 installer..."
|
||||
curl -o /config/.wine/drive_c/mt5setup.exe $mt5setup_url
|
||||
show_message "[3/7] Installing MetaTrader 5..."
|
||||
$wine_executable "/config/.wine/drive_c/mt5setup.exe" "/auto" &
|
||||
wait
|
||||
rm -f /config/.wine/drive_c/mt5setup.exe
|
||||
fi
|
||||
|
||||
# Recheck if MetaTrader 5 is installed
|
||||
if [ -e "$mt5file" ]; then
|
||||
show_message "[4/7] File $mt5file is installed. Running MT5..."
|
||||
$wine_executable "$mt5file" $MT5_CMD_OPTIONS &
|
||||
else
|
||||
show_message "[4/7] File $mt5file is not installed. MT5 cannot be run."
|
||||
fi
|
||||
|
||||
|
||||
# Install Python in Wine if not present
|
||||
if ! $wine_executable python --version 2>/dev/null; then
|
||||
show_message "[5/7] Installing Python in Wine..."
|
||||
curl -L $python_url -o /tmp/python-installer.exe
|
||||
$wine_executable /tmp/python-installer.exe /quiet InstallAllUsers=1 PrependPath=1
|
||||
rm /tmp/python-installer.exe
|
||||
show_message "[5/7] Python installed in Wine."
|
||||
else
|
||||
show_message "[5/7] Python is already installed in Wine."
|
||||
fi
|
||||
|
||||
# Upgrade pip and install required packages
|
||||
show_message "[6/7] Installing Python libraries"
|
||||
$wine_executable python -m pip install --upgrade --no-cache-dir pip
|
||||
# Install MetaTrader5 library in Windows if not installed
|
||||
show_message "[6/7] Installing MetaTrader5 library in Windows"
|
||||
if ! is_wine_python_package_installed "MetaTrader5==$metatrader_version"; then
|
||||
$wine_executable python -m pip install --no-cache-dir MetaTrader5==$metatrader_version
|
||||
fi
|
||||
# Install mt5linux library in Windows if not installed
|
||||
show_message "[6/7] Checking and installing mt5linux library in Windows if necessary"
|
||||
if ! is_wine_python_package_installed "mt5linux"; then
|
||||
$wine_executable python -m pip install --no-cache-dir "mt5linux>=0.1.9"
|
||||
fi
|
||||
|
||||
# Install python-dateutil if needed (datetime is built-in, but dateutil adds features)
|
||||
if ! is_wine_python_package_installed "python-dateutil"; then
|
||||
show_message "[6/7] Installing python-dateutil library in Windows"
|
||||
$wine_executable python -m pip install --no-cache-dir python-dateutil
|
||||
fi
|
||||
|
||||
# Install mt5linux library in Linux if not installed
|
||||
show_message "[6/7] Checking and installing mt5linux library in Linux if necessary"
|
||||
if ! is_python_package_installed "mt5linux"; then
|
||||
pip install --break-system-packages --no-cache-dir --no-deps mt5linux && \
|
||||
pip install --break-system-packages --no-cache-dir rpyc plumbum numpy
|
||||
fi
|
||||
|
||||
# Install pyxdg library in Linux if not installed
|
||||
show_message "[6/7] Checking and installing pyxdg library in Linux if necessary"
|
||||
if ! is_python_package_installed "pyxdg"; then
|
||||
pip install --break-system-packages --no-cache-dir pyxdg
|
||||
fi
|
||||
|
||||
# Start the MT5 server on Linux
|
||||
show_message "[7/7] Starting the mt5linux server..."
|
||||
python3 -m mt5linux --host 0.0.0.0 -p $mt5server_port $wine_executable python.exe &
|
||||
|
||||
# Give the server some time to start
|
||||
sleep 5
|
||||
|
||||
# Check if the server is running
|
||||
if ss -tuln | grep ":$mt5server_port" > /dev/null; then
|
||||
show_message "[7/7] The mt5linux server is running on port $mt5server_port."
|
||||
else
|
||||
show_message "[7/7] Failed to start the mt5linux server on port $mt5server_port."
|
||||
fi
|
||||
|
|
@ -3,6 +3,7 @@ services:
|
|||
mt5:
|
||||
build: . # eigenes Dockerfile mit Fix
|
||||
image: mt5-vnc:local # eigener Name – nicht mit dem Upstream-Image verwechseln
|
||||
pull_policy: build # nie gmag11/... aus dem Hub ziehen
|
||||
container_name: mt5
|
||||
volumes:
|
||||
- ./config:/config
|
||||
|
|
|
|||
Loading…
Reference in a new issue