No project description provided
Project description
TRADEO - A forex trading framework using MetaTrader
This library contains a series of tools to create a trading bot for Forex trading. It uses the DWX Connect (modified) to send commands and receive information of MetaTrader. This library is created based on a linux installation of MetaTrader.
Installation
Install the library
PIP
pip install tradeo
POETRY
poetry add tradeo
Or you can add manually in pyproject.toml file if you want download it from a specific branch:
tradeo = { git = "git@github.com:sorul/tradeo.git", branch = "master" }
And finally:
poetry install --without dev
Configure Metatrader
It is necessary to download the mt_tb_expert.mq5 file and put it in the proper directory. This directory is usually: MetaTrader/MQL5/Experts/Advisors/mt_tb_expert.mq5.
We add the currency pairs in the timeframe we are going to use (in my case it would be 5 minutes). There is the option for the bot to open them automatically, but I do not recommend it.
Activate the expert in any symbol chart, it does not matter which chart you use. But only in one of them.
[!TIP] If you want to execute MetaTrader in the background, your can use this execute_mt5.sh script.
Usage
-
You can create strategies inheriting tradeo.strategies.strategy.Strategy class. An example of this it would be basic_strategy.py
-
You can customize the handler of metatrader responses inheriting tradeo.event_handlers.event_handler.EventHandler class. An example of this it would be basic_handler.py
-
An example of a main script using this library would be basic_forex.py that inheriting tradeo.executable.executable.Executable.
[!NOTE]
A real project that imports this wonderful library and you can watch for inspiration is sorul_tradingbot
Execution of your project if you import this library
It's necessary to export certain environment variables before running the bot.
# Timezone configuration
export TB_LOCAL_TIMEZONE=Europe/Madrid
export TB_BROKER_TIMEZONE=Etc/GMT-2
# Trading configuration
export TB_SYMBOLS=EURUSD,USDCAD,USDCHF
export TB_TIMEFRAME=M5
export TB_LOOKBACK_DAYS=10
# Forex-Client configuration
export TB_CHECK_MESSAGES_THREAD=true
export TB_CHECK_MARKET_DATA_THREAD=false
export TB_CHECK_BAR_DATA_THREAD=false
export TB_CHECK_OPEN_ORDERS_THREAD=true
export TB_CHECK_HISTORICAL_DATA_THREAD=true
export TB_CHECK_HISTORICAL_TRADES_THREAD=false
# Metatrader configuration
export TB_WINE_PATH=/usr/local/bin/wine
export TB_WINE_HOME="${HOME}/.wine"
export TB_MT_TERMINAL_EXE="${TB_WINE_HOME}/drive_c/Program Files/MetaTrader/terminal.exe"
export TB_MT_FILES_PATH="${TB_WINE_HOME}/drive_c/Program Files/MetaTrader/MQL5/Files"
# Logging configuration
export TB_LOG_LEVEL=INFO
export TB_SYSLOG_ADDRESS=logs2.papertrailapp.com
export TB_SYSLOG_PORT=43931
# Telegram configuration
export TB_TG_LOG_LEVEL=INFO
export TB_TG_FOREX_TOKEN=0000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
export TB_TG_FOREX_CHAT_ID=-999999999
The different possibilities for exporting environment variables depend on the user's preference. For example, we can place all the variables in a ".env" file and then execute the command using Poetry:
main_forex.sh
#!/bin/bash
PATH=/home/pi/.poetry/bin:/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/home/pi/.poetry/bin:/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/home/pi/.cargo/bin:/home/pi/.poetry/bin:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
SHELL=/usr/bin/bash
DISPLAY=:10.0
XAUTHORITY=/home/pi/.Xauthority
touch ~/.bashrc
cd <path_to_project>
source .env
poetry run run_forex
Edit the crontab (crontab -e):
@reboot /usr/bin/env bash <path_to_your_project>/execute_mt5.sh
*/5 * * * 0-5 <path_to_your_project>/main_forex.sh >> /tmp/crontab_script_log.txt 2>&1
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tradeo-0.17.1.tar.gz
.
File metadata
- Download URL: tradeo-0.17.1.tar.gz
- Upload date:
- Size: 33.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abe9ade853989ee1f48bf51584bb624b598e75640fff5e47ddfe13e9542a6d4d |
|
MD5 | dd6ce31ef99884628c6fbe01277375e6 |
|
BLAKE2b-256 | d5d936a2e47e43c876420f4ca86120d63aa7edb7a897bf7c188323051f44dd86 |
File details
Details for the file tradeo-0.17.1-py3-none-any.whl
.
File metadata
- Download URL: tradeo-0.17.1-py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 468bbdce728921f0d2675dd4da0d30cee2d358b289d37c1ba84f09aab3cb872e |
|
MD5 | dcf8b4603ecd3f0723b61bd2eea944cf |
|
BLAKE2b-256 | fdd03300722e6df432443f93c6e239d0b06b6be75d4fb9ec132d380211c56057 |