commit 17b0ad38a8cd109b17ecc561973fc367cd009111 Author: GeneralTradingSarl Date: Mon Jun 23 08:56:56 2025 +0100 Initial commit: Optimized MetaTrader 5 EAs with screenshots and documentation diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/.ipynb_checkpoints/scrap-checkpoint.ipynb b/.ipynb_checkpoints/scrap-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/.ipynb_checkpoints/scrap-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ffadda --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Expert MT Collection + +A curated collection of **MetaTrader 5 Expert Advisors (EAs)** — all carefully optimized for performance and reliability. Each EA comes with screenshots and documentation to help you get started quickly. + +## 🚀 Why this project? +- Every EA in this repository has been **optimized** for better results and efficiency. +- Perfect for traders, developers, and anyone looking to automate their trading on MetaTrader 5. +- Explore, test, and improve these EAs as you wish! + +## 📂 Project Structure +- `mql5_experts_mt5/` — Main folder containing all expert advisors. Each subfolder = 1 EA, with its own README and screenshots. +- Each EA folder contains: + - The `.mq5` source file + - Example screenshots (strategy in action) + - A detailed README + +## 🙏 Support & Motivation +If you find this project useful, please: +- ⭐ Star the repository +- 📱 Share it with your friends and trading communities +- 💬 Leave feedback or suggestions +- ☕ Consider sending a small donation to support further development and free sharing! + +> *Your support is the best motivation to keep improving and sharing more optimized trading tools!* + +--- + +**Happy trading and thank you for your encouragement!** \ No newline at end of file diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..e09bb14 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,745 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "b8a14d71", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=== Scraping page 1/137: https://www.mql5.com/en/code/mt5/indicators\n", + "-- 40 indicateurs trouvĂ©s\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56228\n", + " ▶ Dossier: mql5_indicators_mt5\\Price Time Scale - indicator for MetaTrader 5\n", + "[↓] pricetimescale.mq5 ← https://www.mql5.com/en/code/download/56228/pricetimescale.mq5\n", + "[✔] TĂ©lĂ©chargĂ©: pricetimescale.mq5\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56281\n", + " ▶ Dossier: mql5_indicators_mt5\\Candle size - indicator for MetaTrader 5\n", + "[↓] candle_size.mq5 ← https://www.mql5.com/en/code/download/56281/candle_size.mq5\n", + "[✔] TĂ©lĂ©chargĂ©: candle_size.mq5\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56382\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'MACD coloured histogram'\n", + " ▶ Dossier: mql5_indicators_mt5\\MACD coloured histogram\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56432\n", + " ▶ Dossier: mql5_indicators_mt5\\Candle Counter - indicator for MetaTrader 5\n", + "[↓] candle_counter.mq5 ← https://www.mql5.com/en/code/download/56432/candle_counter.mq5\n", + "[✔] TĂ©lĂ©chargĂ©: candle_counter.mq5\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/60537\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Moving Average based on Heiken-Ashi'\n", + " ▶ Dossier: mql5_indicators_mt5\\Moving Average based on Heiken-Ashi\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/60369\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Supertrend by KivancOzbilgic'\n", + " ▶ Dossier: mql5_indicators_mt5\\Supertrend by KivancOzbilgic\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56820\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Divergence Awesome Ocilator'\n", + " ▶ Dossier: mql5_indicators_mt5\\Divergence Awesome Ocilator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56909\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Daily Trend'\n", + " ▶ Dossier: mql5_indicators_mt5\\Daily Trend\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/60194\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'ATR Channels Indicator'\n", + " ▶ Dossier: mql5_indicators_mt5\\ATR Channels Indicator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/54459\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'AlphaTrend'\n", + " ▶ Dossier: mql5_indicators_mt5\\AlphaTrend\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56972\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'False Breakups'\n", + " ▶ Dossier: mql5_indicators_mt5\\False Breakups\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/60054\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Baseline: iMA + ATR Bands'\n", + " ▶ Dossier: mql5_indicators_mt5\\Baseline_ iMA + ATR Bands\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/60023\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Show Positions on Custom Chart (or standard chart) for MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Show Positions on Custom Chart (or standard chart) for MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57174\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Divergence DeMarker'\n", + " ▶ Dossier: mql5_indicators_mt5\\Divergence DeMarker\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58896\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Change the colour of candles and wick'\n", + " ▶ Dossier: mql5_indicators_mt5\\Change the colour of candles and wick\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58845\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Customised bmap chart'\n", + " ▶ Dossier: mql5_indicators_mt5\\Customised bmap chart\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59733\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Engulfing Pattern Indicator with Volume Confirmation'\n", + " ▶ Dossier: mql5_indicators_mt5\\Engulfing Pattern Indicator with Volume Confirmation\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59792\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Trendline zigzag in qualitative channel'\n", + " ▶ Dossier: mql5_indicators_mt5\\Trendline zigzag in qualitative channel\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59744\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Equity and Balance Indicator - History based'\n", + " ▶ Dossier: mql5_indicators_mt5\\Equity and Balance Indicator - History based\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58516\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Candle Filter'\n", + " ▶ Dossier: mql5_indicators_mt5\\Candle Filter\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58104\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'RSI Divergence'\n", + " ▶ Dossier: mql5_indicators_mt5\\RSI Divergence\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58229\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'EquiPeak Drawdown Tracker'\n", + " ▶ Dossier: mql5_indicators_mt5\\EquiPeak Drawdown Tracker\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59477\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'DailyHighLow Indicator for MQL5'\n", + " ▶ Dossier: mql5_indicators_mt5\\DailyHighLow Indicator for MQL5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59368\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Swaps Monitor for a Single Symbol'\n", + " ▶ Dossier: mql5_indicators_mt5\\Swaps Monitor for a Single Symbol\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59342\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'ADX Indicator (MQL5)'\n", + " ▶ Dossier: mql5_indicators_mt5\\ADX Indicator (MQL5)\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59268\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Custom MACD: Elevate Your Trading with Real-Time Signal Alerts to Your Phone'\n", + " ▶ Dossier: mql5_indicators_mt5\\Custom MACD_ Elevate Your Trading with Real-Time Signal Alerts to Your Phone\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59227\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'BBMA - Bollinger Band Moving Average'\n", + " ▶ Dossier: mql5_indicators_mt5\\BBMA - Bollinger Band Moving Average\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59204\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Range BreakOut Indicator - Indicator Buffer Only'\n", + " ▶ Dossier: mql5_indicators_mt5\\Range BreakOut Indicator - Indicator Buffer Only\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/59157\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Multi-Day Dynamic VWAP'\n", + " ▶ Dossier: mql5_indicators_mt5\\Multi-Day Dynamic VWAP\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58838\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Brooky Trend Strength for MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Brooky Trend Strength for MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58789\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'SignalAI - Indicator'\n", + " ▶ Dossier: mql5_indicators_mt5\\SignalAI - Indicator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58636\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Custom MA Cross with RSI Indicator for MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Custom MA Cross with RSI Indicator for MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58650\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'CTJM Candle Timer'\n", + " ▶ Dossier: mql5_indicators_mt5\\CTJM Candle Timer\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58562\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Volume MA with candle color tracking'\n", + " ▶ Dossier: mql5_indicators_mt5\\Volume MA with candle color tracking\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57731\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Countdown 2.0'\n", + " ▶ Dossier: mql5_indicators_mt5\\Countdown 2.0\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57644\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'MACD Divergence'\n", + " ▶ Dossier: mql5_indicators_mt5\\MACD Divergence\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57620\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Spreads'\n", + " ▶ Dossier: mql5_indicators_mt5\\Spreads\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57320\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'AveragePrice'\n", + " ▶ Dossier: mql5_indicators_mt5\\AveragePrice\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56678\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Better volume'\n", + " ▶ Dossier: mql5_indicators_mt5\\Better volume\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49558\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Volatility Stop'\n", + " ▶ Dossier: mql5_indicators_mt5\\Volatility Stop\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "=== Scraping page 2/137: https://www.mql5.com/en/code/mt5/indicators/page2\n", + "-- 40 indicateurs trouvĂ©s\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49404\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'SMI Ergodic Oscillator'\n", + " ▶ Dossier: mql5_indicators_mt5\\SMI Ergodic Oscillator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49334\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Net Volume'\n", + " ▶ Dossier: mql5_indicators_mt5\\Net Volume\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49265\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Know Sure Thing'\n", + " ▶ Dossier: mql5_indicators_mt5\\Know Sure Thing\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49182\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Correlation Coefficient'\n", + " ▶ Dossier: mql5_indicators_mt5\\Correlation Coefficient\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49029\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Chaikin Money Flow'\n", + " ▶ Dossier: mql5_indicators_mt5\\Chaikin Money Flow\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58257\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'ColorXMA_Ishimoku_StDev - indicator for MetaTrader 5'\n", + " ▶ Dossier: mql5_indicators_mt5\\ColorXMA_Ishimoku_StDev - indicator for MetaTrader 5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49459\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Volume Oscillator'\n", + " ▶ Dossier: mql5_indicators_mt5\\Volume Oscillator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/58231\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'EquiPeak Drawdown Tracker'\n", + " ▶ Dossier: mql5_indicators_mt5\\EquiPeak Drawdown Tracker\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/54894\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Kuskus Starlight'\n", + " ▶ Dossier: mql5_indicators_mt5\\Kuskus Starlight\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49175\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Chande Kroll Stop'\n", + " ▶ Dossier: mql5_indicators_mt5\\Chande Kroll Stop\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49132\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'PriceChanges'\n", + " ▶ Dossier: mql5_indicators_mt5\\PriceChanges\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/48962\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Second Bars'\n", + " ▶ Dossier: mql5_indicators_mt5\\Second Bars\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57975\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Uniformity Factor Indicator'\n", + " ▶ Dossier: mql5_indicators_mt5\\Uniformity Factor Indicator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/49985\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Angle and Speed'\n", + " ▶ Dossier: mql5_indicators_mt5\\Angle and Speed\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/25229\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Pan PrizMA No leverage 72'\n", + " ▶ Dossier: mql5_indicators_mt5\\Pan PrizMA No leverage 72\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57724\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'PSAR Zigzag (Non lagging)'\n", + " ▶ Dossier: mql5_indicators_mt5\\PSAR Zigzag (Non lagging)\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57684\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Ranging Market Detector'\n", + " ▶ Dossier: mql5_indicators_mt5\\Ranging Market Detector\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57597\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Breakout Finder by LonesomeTheBlue'\n", + " ▶ Dossier: mql5_indicators_mt5\\Breakout Finder by LonesomeTheBlue\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57377\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'FVG based Momentum Detection'\n", + " ▶ Dossier: mql5_indicators_mt5\\FVG based Momentum Detection\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57302\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Trend Zigzag (on ma cross)'\n", + " ▶ Dossier: mql5_indicators_mt5\\Trend Zigzag (on ma cross)\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57063\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Supertrend'\n", + " ▶ Dossier: mql5_indicators_mt5\\Supertrend\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/57038\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'BarDuration'\n", + " ▶ Dossier: mql5_indicators_mt5\\BarDuration\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56927\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'T3 Moving Average'\n", + " ▶ Dossier: mql5_indicators_mt5\\T3 Moving Average\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56869\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Daily Vertical Lines'\n", + " ▶ Dossier: mql5_indicators_mt5\\Daily Vertical Lines\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56619\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Fibonacci ZigZag'\n", + " ▶ Dossier: mql5_indicators_mt5\\Fibonacci ZigZag\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56616\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Autoscaling Zigzag'\n", + " ▶ Dossier: mql5_indicators_mt5\\Autoscaling Zigzag\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56559\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Time To Close v1.01 - MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Time To Close v1.01 - MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/56289\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Self Optimized SMA'\n", + " ▶ Dossier: mql5_indicators_mt5\\Self Optimized SMA\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55923\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Intrabar Volume Flow'\n", + " ▶ Dossier: mql5_indicators_mt5\\Intrabar Volume Flow\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55521\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Trade Assistant MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Trade Assistant MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55622\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Portable Moving Average'\n", + " ▶ Dossier: mql5_indicators_mt5\\Portable Moving Average\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55519\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Total Power Indicator MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Total Power Indicator MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55517\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'TD Sequential Ultimate MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\TD Sequential Ultimate MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55371\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Coppock MT5 indicator'\n", + " ▶ Dossier: mql5_indicators_mt5\\Coppock MT5 indicator\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55515\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Support and Resistance MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Support and Resistance MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55513\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Spread indicator MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Spread indicator MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55511\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Schaff Trend Cycle MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Schaff Trend Cycle MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55509\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'RSIOMA MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\RSIOMA MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55507\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Round Levels MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Round Levels MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "→ Indicateur: https://www.mql5.com/en/code/55504\n", + " [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: 'Recent High/Low Alert MT5'\n", + " ▶ Dossier: mql5_indicators_mt5\\Recent High_Low Alert MT5\n", + " [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\n", + " ▶ 0 images dĂ©tectĂ©es\n", + "\n", + "=== Scraping page 3/137: https://www.mql5.com/en/code/mt5/indicators/page3\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 4/137: https://www.mql5.com/en/code/mt5/indicators/page4\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 5/137: https://www.mql5.com/en/code/mt5/indicators/page5\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 6/137: https://www.mql5.com/en/code/mt5/indicators/page6\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 7/137: https://www.mql5.com/en/code/mt5/indicators/page7\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 8/137: https://www.mql5.com/en/code/mt5/indicators/page8\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 9/137: https://www.mql5.com/en/code/mt5/indicators/page9\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 10/137: https://www.mql5.com/en/code/mt5/indicators/page10\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 11/137: https://www.mql5.com/en/code/mt5/indicators/page11\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 12/137: https://www.mql5.com/en/code/mt5/indicators/page12\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 13/137: https://www.mql5.com/en/code/mt5/indicators/page13\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 14/137: https://www.mql5.com/en/code/mt5/indicators/page14\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 15/137: https://www.mql5.com/en/code/mt5/indicators/page15\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 16/137: https://www.mql5.com/en/code/mt5/indicators/page16\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 17/137: https://www.mql5.com/en/code/mt5/indicators/page17\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 18/137: https://www.mql5.com/en/code/mt5/indicators/page18\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 19/137: https://www.mql5.com/en/code/mt5/indicators/page19\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 20/137: https://www.mql5.com/en/code/mt5/indicators/page20\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 21/137: https://www.mql5.com/en/code/mt5/indicators/page21\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 22/137: https://www.mql5.com/en/code/mt5/indicators/page22\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 23/137: https://www.mql5.com/en/code/mt5/indicators/page23\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 24/137: https://www.mql5.com/en/code/mt5/indicators/page24\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 25/137: https://www.mql5.com/en/code/mt5/indicators/page25\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 26/137: https://www.mql5.com/en/code/mt5/indicators/page26\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 27/137: https://www.mql5.com/en/code/mt5/indicators/page27\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 28/137: https://www.mql5.com/en/code/mt5/indicators/page28\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 29/137: https://www.mql5.com/en/code/mt5/indicators/page29\n", + "-- 0 indicateurs trouvĂ©s\n", + "\n", + "=== Scraping page 30/137: https://www.mql5.com/en/code/mt5/indicators/page30\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[5], line 55\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m=== Scraping page \u001b[39m\u001b[38;5;132;01m{\u001b[39;00midx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mPAGES_TO_SCRAPE\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpage_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 54\u001b[0m driver\u001b[38;5;241m.\u001b[39mget(page_url)\n\u001b[1;32m---> 55\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[43mPAGE_DELAY\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 57\u001b[0m soup \u001b[38;5;241m=\u001b[39m BeautifulSoup(driver\u001b[38;5;241m.\u001b[39mpage_source, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 58\u001b[0m tiles \u001b[38;5;241m=\u001b[39m soup\u001b[38;5;241m.\u001b[39mselect(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.codebase-list__content .code-tile .title > a\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import os\n", + "import time\n", + "import re\n", + "import requests\n", + "from urllib.parse import urljoin, urlparse\n", + "from bs4 import BeautifulSoup\n", + "from selenium import webdriver\n", + "from selenium.webdriver.chrome.options import Options\n", + "from selenium.webdriver.chrome.service import Service\n", + "\n", + "# === CONFIGURATION ===\n", + "BASE_URL = \"https://www.mql5.com\"\n", + "START_URL = f\"{BASE_URL}/en/code/mt5/indicators\"\n", + "# Il y a 137 pages d'indicateurs\n", + "PAGES_TO_SCRAPE = 137\n", + "DOWNLOAD_ROOT = \"mql5_indicators_mt5\"\n", + "PAGE_DELAY = 2 # secondes d’attente aprĂšs chargement de chaque page\n", + "REQ_TIMEOUT = 30 # timeout pour requests.get\n", + "\n", + "# === UTILITAIRES ===\n", + "def safe_mkdir(path):\n", + " if not os.path.isdir(path):\n", + " os.makedirs(path, exist_ok=True)\n", + "\n", + "def download_file(url, dest_folder):\n", + " safe_mkdir(dest_folder)\n", + " filename = os.path.basename(urlparse(url).path)\n", + " dest_path = os.path.join(dest_folder, filename)\n", + " print(f\"[↓] {filename} ← {url}\")\n", + " try:\n", + " r = requests.get(url, stream=True, timeout=REQ_TIMEOUT)\n", + " r.raise_for_status()\n", + " with open(dest_path, \"wb\") as f:\n", + " for chunk in r.iter_content(1024):\n", + " f.write(chunk)\n", + " print(f\"[✔] TĂ©lĂ©chargĂ©: {filename}\")\n", + " except Exception as e:\n", + " print(f\"[✘] Erreur download {filename}: {e}\")\n", + "\n", + "# === SETUP SELENIUM HEADLESS ===\n", + "chrome_opts = Options()\n", + "chrome_opts.add_argument(\"--headless\")\n", + "chrome_opts.add_argument(\"--disable-gpu\")\n", + "chrome_opts.add_argument(\"--no-sandbox\")\n", + "driver = webdriver.Chrome(service=Service(), options=chrome_opts)\n", + "\n", + "# === CRÉER LE DOSSIER RACINE ===\n", + "safe_mkdir(DOWNLOAD_ROOT)\n", + "\n", + "# === SCRAPING PAGES ===\n", + "for idx in range(1, PAGES_TO_SCRAPE + 1):\n", + " page_url = START_URL if idx == 1 else f\"{START_URL}/page{idx}\"\n", + " print(f\"\\n=== Scraping page {idx}/{PAGES_TO_SCRAPE}: {page_url}\")\n", + " driver.get(page_url)\n", + " time.sleep(PAGE_DELAY)\n", + "\n", + " soup = BeautifulSoup(driver.page_source, \"html.parser\")\n", + " tiles = soup.select(\".codebase-list__content .code-tile .title > a\")\n", + " print(f\"-- {len(tiles)} indicateurs trouvĂ©s\")\n", + "\n", + " for a in tiles:\n", + " href = a.get(\"href\")\n", + " list_title = a.text.strip()\n", + " indicator_url = urljoin(BASE_URL, href)\n", + " print(f\"\\n→ Indicateur: {indicator_url}\")\n", + " driver.get(indicator_url)\n", + " time.sleep(PAGE_DELAY)\n", + " esoup = BeautifulSoup(driver.page_source, \"html.parser\")\n", + "\n", + " # Nom de l’indicateur: prioritĂ© au

, sinon titre depuis la liste\n", + " h1 = esoup.select_one(\"h1\")\n", + " if h1 and h1.text.strip():\n", + " name_raw = h1.text.strip()\n", + " else:\n", + " name_raw = list_title or href.split('/')[-1]\n", + " print(f\" [â„č] Pas de

trouvĂ©, utilisation du titre listĂ©: '{name_raw}'\")\n", + " name = re.sub(r\"[\\\\/:*?\\\"<>|]\", \"_\", name_raw)\n", + " folder = os.path.join(DOWNLOAD_ROOT, name)\n", + " safe_mkdir(folder)\n", + " print(f\" ▶ Dossier: {folder}\")\n", + "\n", + " # TĂ©lĂ©charger le code : ZIP ou .mq5/.mq4\n", + " zip_link = esoup.find(\"a\", string=re.compile(r\"Download as ZIP\", re.I))\n", + " if zip_link and zip_link.get(\"href\"):\n", + " download_file(urljoin(BASE_URL, zip_link[\"href\"]), folder)\n", + " else:\n", + " code_link = esoup.find(\"a\", href=re.compile(r\"\\.mq[45]$\"))\n", + " if code_link:\n", + " download_file(urljoin(BASE_URL, code_link[\"href\"]), folder)\n", + " else:\n", + " print(\" [!] Aucun code trouvĂ© (.mq5/.mq4 ou ZIP).\")\n", + "\n", + " # TĂ©lĂ©charger les images de prĂ©sentation\n", + " images = esoup.select(\".codebase-detail img\")\n", + " print(f\" ▶ {len(images)} images dĂ©tectĂ©es\")\n", + " for img in images:\n", + " src = img.get(\"src\") or img.get(\"data-src\")\n", + " if not src or not re.search(r\"\\.(png|jpe?g|gif)$\", src, re.I):\n", + " continue\n", + " download_file(urljoin(BASE_URL, src), folder)\n", + "\n", + "# === FIN ===\n", + "driver.quit()\n", + "print(\"\\n=== FIN DU SCRAPING INDICATEURS ===\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96d1eda1", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/generate_all_readmes.py b/generate_all_readmes.py new file mode 100644 index 0000000..7913274 --- /dev/null +++ b/generate_all_readmes.py @@ -0,0 +1,56 @@ +import os + +ROOT = "mql5_experts_mt5" + +def is_valid_image(filename): + lower = filename.lower() + return ( + lower.endswith((".png", ".jpg", ".jpeg", ".gif")) + and not any(x in lower for x in ["avatar", "indicator", "expert", "logo"]) + ) + +def get_mq5_files(files): + return [f for f in files if f.lower().endswith('.mq5')] + +def get_images(files): + return [f for f in files if is_valid_image(f)] + +def generate_readme(folder, mq5_files, images): + title = os.path.basename(folder) + lines = [f"# {title}\n", "## Description"] + lines.append( + "This folder contains a professional trading expert advisor (EA) for MetaTrader 5.\n\n" + "Below are example screenshots of the strategy in action. \n" + "*Feel free to explore, test, and improve!*\n\n" + "*You can add a detailed description of the strategy, parameters, and usage here.*\n\n" + "---\n\n" + "If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you!\n" + ) + for img in images: + lines.append(f"![Screenshot]({img})") + lines.append("\n## Files") + for mq5 in mq5_files: + lines.append(f"- `{mq5}`") + lines.append("\n## How to use") + lines.append("1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder.") + lines.append("2. Compile in MetaEditor.") + lines.append("3. Attach the expert to a chart.") + lines.append("4. Configure parameters as needed.\n") + return "\n".join(lines) + +for subdir in os.listdir(ROOT): + folder = os.path.join(ROOT, subdir) + if os.path.isdir(folder): + files = os.listdir(folder) + mq5_files = get_mq5_files(files) + images = get_images(files) + if mq5_files: # Only process if there is at least one .mq5 file + readme_path = os.path.join(folder, "README.md") + new_content = generate_readme(folder, mq5_files, images) + # Write or overwrite README.md if missing or different + if not os.path.exists(readme_path) or open(readme_path, encoding="utf-8").read() != new_content: + with open(readme_path, "w", encoding="utf-8") as f: + f.write(new_content) + print(f"README.md updated in: {folder}") + +print("VĂ©rification et gĂ©nĂ©ration terminĂ©es pour tous les dossiers !") \ No newline at end of file diff --git a/mql5_experts_mt5/10 pips EURUSD/10_pips_eurusd.mq5 b/mql5_experts_mt5/10 pips EURUSD/10_pips_eurusd.mq5 new file mode 100644 index 0000000..6577c44 Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/10_pips_eurusd.mq5 differ diff --git a/mql5_experts_mt5/10 pips EURUSD/10pip_eur2_1.gif b/mql5_experts_mt5/10 pips EURUSD/10pip_eur2_1.gif new file mode 100644 index 0000000..7963f81 Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/10pip_eur2_1.gif differ diff --git a/mql5_experts_mt5/10 pips EURUSD/README.md b/mql5_experts_mt5/10 pips EURUSD/README.md new file mode 100644 index 0000000..3d4c66a --- /dev/null +++ b/mql5_experts_mt5/10 pips EURUSD/README.md @@ -0,0 +1,25 @@ +# 10 pips EURUSD + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](10pip_eur2_1.gif) +![Screenshot](script.png) + +## Files +- `10_pips_eurusd.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/10 pips EURUSD/expert.png b/mql5_experts_mt5/10 pips EURUSD/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/expert.png differ diff --git a/mql5_experts_mt5/10 pips EURUSD/indicator.png b/mql5_experts_mt5/10 pips EURUSD/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/indicator.png differ diff --git a/mql5_experts_mt5/10 pips EURUSD/logo-2.png b/mql5_experts_mt5/10 pips EURUSD/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/logo-2.png differ diff --git a/mql5_experts_mt5/10 pips EURUSD/script.png b/mql5_experts_mt5/10 pips EURUSD/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/10 pips EURUSD/script.png differ diff --git a/mql5_experts_mt5/10 pips/10_pips.mq5 b/mql5_experts_mt5/10 pips/10_pips.mq5 new file mode 100644 index 0000000..e0b3168 Binary files /dev/null and b/mql5_experts_mt5/10 pips/10_pips.mq5 differ diff --git a/mql5_experts_mt5/10 pips/README.md b/mql5_experts_mt5/10 pips/README.md new file mode 100644 index 0000000..35d3be2 --- /dev/null +++ b/mql5_experts_mt5/10 pips/README.md @@ -0,0 +1,23 @@ +# 10 pips + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `10_pips.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/10 pips/expert.png b/mql5_experts_mt5/10 pips/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/10 pips/expert.png differ diff --git a/mql5_experts_mt5/10 pips/indicator.png b/mql5_experts_mt5/10 pips/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/10 pips/indicator.png differ diff --git a/mql5_experts_mt5/10 pips/logo-2.png b/mql5_experts_mt5/10 pips/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/10 pips/logo-2.png differ diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/10pipsonceadayoppositelastnhourtrend.mq5 b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/10pipsonceadayoppositelastnhourtrend.mq5 new file mode 100644 index 0000000..edf6c64 Binary files /dev/null and b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/10pipsonceadayoppositelastnhourtrend.mq5 differ diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/README.md b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/README.md new file mode 100644 index 0000000..73836f1 --- /dev/null +++ b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/README.md @@ -0,0 +1,24 @@ +# 10pipsOnceADayOppositeLastNHourTrend + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](library.png) + +## Files +- `10pipsonceadayoppositelastnhourtrend.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/expert.png b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/expert.png differ diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/indicator.png b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/indicator.png differ diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/library.png b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/library.png differ diff --git a/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/logo-2.png b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/10pipsOnceADayOppositeLastNHourTrend/logo-2.png differ diff --git a/mql5_experts_mt5/1H EUR_USD/1H_EUR_USD.png b/mql5_experts_mt5/1H EUR_USD/1H_EUR_USD.png new file mode 100644 index 0000000..dfc960a Binary files /dev/null and b/mql5_experts_mt5/1H EUR_USD/1H_EUR_USD.png differ diff --git a/mql5_experts_mt5/1H EUR_USD/1h_eur_usd.mq5 b/mql5_experts_mt5/1H EUR_USD/1h_eur_usd.mq5 new file mode 100644 index 0000000..e0836f7 Binary files /dev/null and b/mql5_experts_mt5/1H EUR_USD/1h_eur_usd.mq5 differ diff --git a/mql5_experts_mt5/1H EUR_USD/README.md b/mql5_experts_mt5/1H EUR_USD/README.md new file mode 100644 index 0000000..d3d5218 --- /dev/null +++ b/mql5_experts_mt5/1H EUR_USD/README.md @@ -0,0 +1,24 @@ +# 1H EUR_USD + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1H_EUR_USD.png) + +## Files +- `1h_eur_usd.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/1H EUR_USD/expert.png b/mql5_experts_mt5/1H EUR_USD/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/1H EUR_USD/expert.png differ diff --git a/mql5_experts_mt5/1H EUR_USD/indicator.png b/mql5_experts_mt5/1H EUR_USD/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/1H EUR_USD/indicator.png differ diff --git a/mql5_experts_mt5/1H EUR_USD/logo-2.png b/mql5_experts_mt5/1H EUR_USD/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/1H EUR_USD/logo-2.png differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/2-pair_correlation_ea.mq5 b/mql5_experts_mt5/2-Pair Correlation EA/2-pair_correlation_ea.mq5 new file mode 100644 index 0000000..d96161e Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/2-pair_correlation_ea.mq5 differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/5D643B69-63F2.jpg b/mql5_experts_mt5/2-Pair Correlation EA/5D643B69-63F2.jpg new file mode 100644 index 0000000..2c5a173 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/5D643B69-63F2.jpg differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/5FC3C6E9-F973.jpg b/mql5_experts_mt5/2-Pair Correlation EA/5FC3C6E9-F973.jpg new file mode 100644 index 0000000..2e0a891 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/5FC3C6E9-F973.jpg differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/6776FFC1-040E.png b/mql5_experts_mt5/2-Pair Correlation EA/6776FFC1-040E.png new file mode 100644 index 0000000..ce3cba4 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/6776FFC1-040E.png differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/README.md b/mql5_experts_mt5/2-Pair Correlation EA/README.md new file mode 100644 index 0000000..ef1cbbc --- /dev/null +++ b/mql5_experts_mt5/2-Pair Correlation EA/README.md @@ -0,0 +1,26 @@ +# 2-Pair Correlation EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5D643B69-63F2.jpg) +![Screenshot](5FC3C6E9-F973.jpg) +![Screenshot](6776FFC1-040E.png) + +## Files +- `2-pair_correlation_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/2-Pair Correlation EA/avatar_na2.png b/mql5_experts_mt5/2-Pair Correlation EA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/avatar_na2.png differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/expert.png b/mql5_experts_mt5/2-Pair Correlation EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/expert.png differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/indicator.png b/mql5_experts_mt5/2-Pair Correlation EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/indicator.png differ diff --git a/mql5_experts_mt5/2-Pair Correlation EA/logo-2.png b/mql5_experts_mt5/2-Pair Correlation EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/2-Pair Correlation EA/logo-2.png differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/20_pips_opposite_last_n_hour_trend.mq5 b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/20_pips_opposite_last_n_hour_trend.mq5 new file mode 100644 index 0000000..6817a2c Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/20_pips_opposite_last_n_hour_trend.mq5 differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/5DD7B1CB-5121.jpg b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/5DD7B1CB-5121.jpg new file mode 100644 index 0000000..4906f5e Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/5DD7B1CB-5121.jpg differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/README.md b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/README.md new file mode 100644 index 0000000..181bdcf --- /dev/null +++ b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/README.md @@ -0,0 +1,25 @@ +# 20 Pips Opposite Last N Hour Trend + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5DD7B1CB-5121.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `20_pips_opposite_last_n_hour_trend.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/expert.png b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/expert.png differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/indicator.png b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/indicator.png differ diff --git a/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/logo-2.png b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/20 Pips Opposite Last N Hour Trend/logo-2.png differ diff --git a/mql5_experts_mt5/20PRExp-3/20PRExp-3.png b/mql5_experts_mt5/20PRExp-3/20PRExp-3.png new file mode 100644 index 0000000..8d5ad04 Binary files /dev/null and b/mql5_experts_mt5/20PRExp-3/20PRExp-3.png differ diff --git a/mql5_experts_mt5/20PRExp-3/20prexp-3.mq5 b/mql5_experts_mt5/20PRExp-3/20prexp-3.mq5 new file mode 100644 index 0000000..b961589 Binary files /dev/null and b/mql5_experts_mt5/20PRExp-3/20prexp-3.mq5 differ diff --git a/mql5_experts_mt5/20PRExp-3/README.md b/mql5_experts_mt5/20PRExp-3/README.md new file mode 100644 index 0000000..8327b3f --- /dev/null +++ b/mql5_experts_mt5/20PRExp-3/README.md @@ -0,0 +1,24 @@ +# 20PRExp-3 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](20PRExp-3.png) + +## Files +- `20prexp-3.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/20PRExp-3/expert.png b/mql5_experts_mt5/20PRExp-3/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/20PRExp-3/expert.png differ diff --git a/mql5_experts_mt5/20PRExp-3/indicator.png b/mql5_experts_mt5/20PRExp-3/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/20PRExp-3/indicator.png differ diff --git a/mql5_experts_mt5/20PRExp-3/logo-2.png b/mql5_experts_mt5/20PRExp-3/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/20PRExp-3/logo-2.png differ diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/2016-10-27_08h51_32.png b/mql5_experts_mt5/20_200 expert v 4.2 AntS/2016-10-27_08h51_32.png new file mode 100644 index 0000000..a3e376c Binary files /dev/null and b/mql5_experts_mt5/20_200 expert v 4.2 AntS/2016-10-27_08h51_32.png differ diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/20_200_expert_v_4.2_ants.mq5 b/mql5_experts_mt5/20_200 expert v 4.2 AntS/20_200_expert_v_4.2_ants.mq5 new file mode 100644 index 0000000..8d7b7e0 Binary files /dev/null and b/mql5_experts_mt5/20_200 expert v 4.2 AntS/20_200_expert_v_4.2_ants.mq5 differ diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/README.md b/mql5_experts_mt5/20_200 expert v 4.2 AntS/README.md new file mode 100644 index 0000000..ef9139e --- /dev/null +++ b/mql5_experts_mt5/20_200 expert v 4.2 AntS/README.md @@ -0,0 +1,24 @@ +# 20_200 expert v 4.2 AntS + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2016-10-27_08h51_32.png) + +## Files +- `20_200_expert_v_4.2_ants.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/expert.png b/mql5_experts_mt5/20_200 expert v 4.2 AntS/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/20_200 expert v 4.2 AntS/expert.png differ diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/indicator.png b/mql5_experts_mt5/20_200 expert v 4.2 AntS/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/20_200 expert v 4.2 AntS/indicator.png differ diff --git a/mql5_experts_mt5/20_200 expert v 4.2 AntS/logo-2.png b/mql5_experts_mt5/20_200 expert v 4.2 AntS/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/20_200 expert v 4.2 AntS/logo-2.png differ diff --git a/mql5_experts_mt5/21hour/21hour.mq5 b/mql5_experts_mt5/21hour/21hour.mq5 new file mode 100644 index 0000000..53a58f7 Binary files /dev/null and b/mql5_experts_mt5/21hour/21hour.mq5 differ diff --git a/mql5_experts_mt5/21hour/21hour_tester_v1.01.png b/mql5_experts_mt5/21hour/21hour_tester_v1.01.png new file mode 100644 index 0000000..da3f0cd Binary files /dev/null and b/mql5_experts_mt5/21hour/21hour_tester_v1.01.png differ diff --git a/mql5_experts_mt5/21hour/README.md b/mql5_experts_mt5/21hour/README.md new file mode 100644 index 0000000..d49551a --- /dev/null +++ b/mql5_experts_mt5/21hour/README.md @@ -0,0 +1,24 @@ +# 21hour + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](21hour_tester_v1.01.png) + +## Files +- `21hour.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/21hour/expert.png b/mql5_experts_mt5/21hour/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/21hour/expert.png differ diff --git a/mql5_experts_mt5/21hour/logo-2.png b/mql5_experts_mt5/21hour/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/21hour/logo-2.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert.png b/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert.png new file mode 100644 index 0000000..16ae160 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert_indicators.png b/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert_indicators.png new file mode 100644 index 0000000..7b76238 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/2MA_Bunny_Cross_Expert_indicators.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/2ma_bunny_cross_expert.mq5 b/mql5_experts_mt5/2MA Bunny Cross Expert/2ma_bunny_cross_expert.mq5 new file mode 100644 index 0000000..a066ef9 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/2ma_bunny_cross_expert.mq5 differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/5E6B718B-C6BF.png b/mql5_experts_mt5/2MA Bunny Cross Expert/5E6B718B-C6BF.png new file mode 100644 index 0000000..b290341 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/5E6B718B-C6BF.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/647a2180-1856.png b/mql5_experts_mt5/2MA Bunny Cross Expert/647a2180-1856.png new file mode 100644 index 0000000..39b0f6c Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/647a2180-1856.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/2MA Bunny Cross Expert/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/README.md b/mql5_experts_mt5/2MA Bunny Cross Expert/README.md new file mode 100644 index 0000000..3c6d9ea --- /dev/null +++ b/mql5_experts_mt5/2MA Bunny Cross Expert/README.md @@ -0,0 +1,26 @@ +# 2MA Bunny Cross Expert + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5E6B718B-C6BF.png) +![Screenshot](647a2180-1856.png) +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `2ma_bunny_cross_expert.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/expert.png b/mql5_experts_mt5/2MA Bunny Cross Expert/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/expert.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/indicator.png b/mql5_experts_mt5/2MA Bunny Cross Expert/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/indicator.png differ diff --git a/mql5_experts_mt5/2MA Bunny Cross Expert/logo-2.png b/mql5_experts_mt5/2MA Bunny Cross Expert/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/2MA Bunny Cross Expert/logo-2.png differ diff --git a/mql5_experts_mt5/2MA_4Level/2018-08-12_08h02_38__1.png b/mql5_experts_mt5/2MA_4Level/2018-08-12_08h02_38__1.png new file mode 100644 index 0000000..6e89a77 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/2018-08-12_08h02_38__1.png differ diff --git a/mql5_experts_mt5/2MA_4Level/2018-08-12_08h04_05__1.png b/mql5_experts_mt5/2MA_4Level/2018-08-12_08h04_05__1.png new file mode 100644 index 0000000..855ff43 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/2018-08-12_08h04_05__1.png differ diff --git a/mql5_experts_mt5/2MA_4Level/2MA_4Level_tester.png b/mql5_experts_mt5/2MA_4Level/2MA_4Level_tester.png new file mode 100644 index 0000000..8e1b0c9 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/2MA_4Level_tester.png differ diff --git a/mql5_experts_mt5/2MA_4Level/2ma_4level.mq5 b/mql5_experts_mt5/2MA_4Level/2ma_4level.mq5 new file mode 100644 index 0000000..443d931 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/2ma_4level.mq5 differ diff --git a/mql5_experts_mt5/2MA_4Level/6341bf46-f0b0.png b/mql5_experts_mt5/2MA_4Level/6341bf46-f0b0.png new file mode 100644 index 0000000..2f44ee9 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/6341bf46-f0b0.png differ diff --git a/mql5_experts_mt5/2MA_4Level/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/2MA_4Level/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/2MA_4Level/README.md b/mql5_experts_mt5/2MA_4Level/README.md new file mode 100644 index 0000000..c06d51b --- /dev/null +++ b/mql5_experts_mt5/2MA_4Level/README.md @@ -0,0 +1,29 @@ +# 2MA_4Level + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-08-12_08h02_38__1.png) +![Screenshot](2018-08-12_08h04_05__1.png) +![Screenshot](2MA_4Level_tester.png) +![Screenshot](6341bf46-f0b0.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](journal__1.jpg) + +## Files +- `2ma_4level.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/2MA_4Level/expert.png b/mql5_experts_mt5/2MA_4Level/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/expert.png differ diff --git a/mql5_experts_mt5/2MA_4Level/journal__1.jpg b/mql5_experts_mt5/2MA_4Level/journal__1.jpg new file mode 100644 index 0000000..b79e988 Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/journal__1.jpg differ diff --git a/mql5_experts_mt5/2MA_4Level/logo-2.png b/mql5_experts_mt5/2MA_4Level/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/2MA_4Level/logo-2.png differ diff --git a/mql5_experts_mt5/3MACross EA/130e3a1w8c.png b/mql5_experts_mt5/3MACross EA/130e3a1w8c.png new file mode 100644 index 0000000..4ee5917 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/130e3a1w8c.png differ diff --git a/mql5_experts_mt5/3MACross EA/3MACross_EA.png b/mql5_experts_mt5/3MACross EA/3MACross_EA.png new file mode 100644 index 0000000..28f24b3 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/3MACross_EA.png differ diff --git a/mql5_experts_mt5/3MACross EA/3macross_ea.mq5 b/mql5_experts_mt5/3MACross EA/3macross_ea.mq5 new file mode 100644 index 0000000..3cedd4b Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/3macross_ea.mq5 differ diff --git a/mql5_experts_mt5/3MACross EA/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/3MACross EA/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/3MACross EA/README.md b/mql5_experts_mt5/3MACross EA/README.md new file mode 100644 index 0000000..9ef00f5 --- /dev/null +++ b/mql5_experts_mt5/3MACross EA/README.md @@ -0,0 +1,28 @@ +# 3MACross EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](130e3a1w8c.png) +![Screenshot](3MACross_EA.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](gb47jqktj12.png) +![Screenshot](qz9neoqsau1.png) + +## Files +- `3macross_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/3MACross EA/avatar_na2.png b/mql5_experts_mt5/3MACross EA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/avatar_na2.png differ diff --git a/mql5_experts_mt5/3MACross EA/expert.png b/mql5_experts_mt5/3MACross EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/expert.png differ diff --git a/mql5_experts_mt5/3MACross EA/gb47jqktj12.png b/mql5_experts_mt5/3MACross EA/gb47jqktj12.png new file mode 100644 index 0000000..96a2e39 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/gb47jqktj12.png differ diff --git a/mql5_experts_mt5/3MACross EA/indicator.png b/mql5_experts_mt5/3MACross EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/indicator.png differ diff --git a/mql5_experts_mt5/3MACross EA/logo-2.png b/mql5_experts_mt5/3MACross EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/logo-2.png differ diff --git a/mql5_experts_mt5/3MACross EA/qz9neoqsau1.png b/mql5_experts_mt5/3MACross EA/qz9neoqsau1.png new file mode 100644 index 0000000..838d7b2 Binary files /dev/null and b/mql5_experts_mt5/3MACross EA/qz9neoqsau1.png differ diff --git a/mql5_experts_mt5/3sma/3sma.mq5 b/mql5_experts_mt5/3sma/3sma.mq5 new file mode 100644 index 0000000..dc925c8 Binary files /dev/null and b/mql5_experts_mt5/3sma/3sma.mq5 differ diff --git a/mql5_experts_mt5/3sma/3sma.png b/mql5_experts_mt5/3sma/3sma.png new file mode 100644 index 0000000..d05beb2 Binary files /dev/null and b/mql5_experts_mt5/3sma/3sma.png differ diff --git a/mql5_experts_mt5/3sma/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/3sma/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/3sma/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/3sma/README.md b/mql5_experts_mt5/3sma/README.md new file mode 100644 index 0000000..56a2081 --- /dev/null +++ b/mql5_experts_mt5/3sma/README.md @@ -0,0 +1,25 @@ +# 3sma + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](3sma.png) +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `3sma.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/3sma/avatar_na2.png b/mql5_experts_mt5/3sma/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/3sma/avatar_na2.png differ diff --git a/mql5_experts_mt5/3sma/expert.png b/mql5_experts_mt5/3sma/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/3sma/expert.png differ diff --git a/mql5_experts_mt5/3sma/indicator.png b/mql5_experts_mt5/3sma/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/3sma/indicator.png differ diff --git a/mql5_experts_mt5/3sma/logo-2.png b/mql5_experts_mt5/3sma/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/3sma/logo-2.png differ diff --git a/mql5_experts_mt5/55 MA/55_MA_optimization__1.png b/mql5_experts_mt5/55 MA/55_MA_optimization__1.png new file mode 100644 index 0000000..79d8deb Binary files /dev/null and b/mql5_experts_mt5/55 MA/55_MA_optimization__1.png differ diff --git a/mql5_experts_mt5/55 MA/55_ma.mq5 b/mql5_experts_mt5/55 MA/55_ma.mq5 new file mode 100644 index 0000000..775356b Binary files /dev/null and b/mql5_experts_mt5/55 MA/55_ma.mq5 differ diff --git a/mql5_experts_mt5/55 MA/README.md b/mql5_experts_mt5/55 MA/README.md new file mode 100644 index 0000000..7c9776a --- /dev/null +++ b/mql5_experts_mt5/55 MA/README.md @@ -0,0 +1,24 @@ +# 55 MA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](55_MA_optimization__1.png) + +## Files +- `55_ma.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/55 MA/expert.png b/mql5_experts_mt5/55 MA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/55 MA/expert.png differ diff --git a/mql5_experts_mt5/55 MA/indicator.png b/mql5_experts_mt5/55 MA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/55 MA/indicator.png differ diff --git a/mql5_experts_mt5/55 MA/logo-2.png b/mql5_experts_mt5/55 MA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/55 MA/logo-2.png differ diff --git a/mql5_experts_mt5/5_8 MACross/5_8_macross.mq5 b/mql5_experts_mt5/5_8 MACross/5_8_macross.mq5 new file mode 100644 index 0000000..e3ee0cd Binary files /dev/null and b/mql5_experts_mt5/5_8 MACross/5_8_macross.mq5 differ diff --git a/mql5_experts_mt5/5_8 MACross/README.md b/mql5_experts_mt5/5_8 MACross/README.md new file mode 100644 index 0000000..2d277cb --- /dev/null +++ b/mql5_experts_mt5/5_8 MACross/README.md @@ -0,0 +1,24 @@ +# 5_8 MACross + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](library.png) + +## Files +- `5_8_macross.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/5_8 MACross/expert.png b/mql5_experts_mt5/5_8 MACross/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/5_8 MACross/expert.png differ diff --git a/mql5_experts_mt5/5_8 MACross/indicator.png b/mql5_experts_mt5/5_8 MACross/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/5_8 MACross/indicator.png differ diff --git a/mql5_experts_mt5/5_8 MACross/library.png b/mql5_experts_mt5/5_8 MACross/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/5_8 MACross/library.png differ diff --git a/mql5_experts_mt5/5_8 MACross/logo-2.png b/mql5_experts_mt5/5_8 MACross/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/5_8 MACross/logo-2.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/4491929582288__1.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/4491929582288__1.png new file mode 100644 index 0000000..016ba6d Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/4491929582288__1.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/584F20BE-8336.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/584F20BE-8336.png new file mode 100644 index 0000000..836c44f Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/584F20BE-8336.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/README.md b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/README.md new file mode 100644 index 0000000..20ab874 --- /dev/null +++ b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/README.md @@ -0,0 +1,27 @@ +# A Code block to detect A _New Candle_Bar_ using bars history (very effective way) + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](4491929582288__1.png) +![Screenshot](584F20BE-8336.png) +![Screenshot](library.png) +![Screenshot](script.png) + +## Files +- `new_bar_check.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/expert.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/expert.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/indicator.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/indicator.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/library.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/library.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/logo-2.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/logo-2.png differ diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/new_bar_check.mq5 b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/new_bar_check.mq5 new file mode 100644 index 0000000..feafc7d --- /dev/null +++ b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/new_bar_check.mq5 @@ -0,0 +1,22 @@ +int BarsTotal_OnInt; +int BarsTotal_OnTick; +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { + BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Asign the total bars at initialization + return(INIT_SUCCEEDED); + } + +void OnTick() // OnTick Function + { + BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Stores the latest amount + + if(BarsTotal_OnTick > BarsTotal_OnInt) // New bar has arrived + { + BarsTotal_OnInt = BarsTotal_OnTick; // Updates the history. + Alert("New Bar has arrived"); + Comment("Bars Count in history -: ", BarsTotal_OnInt, "\n", "Bars Count in Live -: ", BarsTotal_OnTick); + } + } diff --git a/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/script.png b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/A Code block to detect A _New Candle_Bar_ using bars history (very effective way)/script.png differ diff --git a/mql5_experts_mt5/ADX & MA/ADX_h_MA_tester.png b/mql5_experts_mt5/ADX & MA/ADX_h_MA_tester.png new file mode 100644 index 0000000..fa90112 Binary files /dev/null and b/mql5_experts_mt5/ADX & MA/ADX_h_MA_tester.png differ diff --git a/mql5_experts_mt5/ADX & MA/README.md b/mql5_experts_mt5/ADX & MA/README.md new file mode 100644 index 0000000..0f38d65 --- /dev/null +++ b/mql5_experts_mt5/ADX & MA/README.md @@ -0,0 +1,24 @@ +# ADX & MA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](ADX_h_MA_tester.png) + +## Files +- `adx_2_ma.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ADX & MA/adx_2_ma.mq5 b/mql5_experts_mt5/ADX & MA/adx_2_ma.mq5 new file mode 100644 index 0000000..d04bc54 Binary files /dev/null and b/mql5_experts_mt5/ADX & MA/adx_2_ma.mq5 differ diff --git a/mql5_experts_mt5/ADX & MA/expert.png b/mql5_experts_mt5/ADX & MA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ADX & MA/expert.png differ diff --git a/mql5_experts_mt5/ADX & MA/indicator.png b/mql5_experts_mt5/ADX & MA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/ADX & MA/indicator.png differ diff --git a/mql5_experts_mt5/ADX & MA/logo-2.png b/mql5_experts_mt5/ADX & MA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ADX & MA/logo-2.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/2018-12-10_14h26_37.png b/mql5_experts_mt5/ADX MACD Deev/2018-12-10_14h26_37.png new file mode 100644 index 0000000..58df56f Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/2018-12-10_14h26_37.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/61D47E25-F2EF.jpg b/mql5_experts_mt5/ADX MACD Deev/61D47E25-F2EF.jpg new file mode 100644 index 0000000..d8c62ac Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/61D47E25-F2EF.jpg differ diff --git a/mql5_experts_mt5/ADX MACD Deev/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/ADX MACD Deev/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/ADX MACD Deev/README.md b/mql5_experts_mt5/ADX MACD Deev/README.md new file mode 100644 index 0000000..6234e5f --- /dev/null +++ b/mql5_experts_mt5/ADX MACD Deev/README.md @@ -0,0 +1,27 @@ +# ADX MACD Deev + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-12-10_14h26_37.png) +![Screenshot](61D47E25-F2EF.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](script.png) + +## Files +- `adx_macd_deev.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ADX MACD Deev/adx_macd_deev.mq5 b/mql5_experts_mt5/ADX MACD Deev/adx_macd_deev.mq5 new file mode 100644 index 0000000..05ce258 Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/adx_macd_deev.mq5 differ diff --git a/mql5_experts_mt5/ADX MACD Deev/avatar_na2.png b/mql5_experts_mt5/ADX MACD Deev/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/avatar_na2.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/expert.png b/mql5_experts_mt5/ADX MACD Deev/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/expert.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/indicator.png b/mql5_experts_mt5/ADX MACD Deev/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/indicator.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/logo-2.png b/mql5_experts_mt5/ADX MACD Deev/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/logo-2.png differ diff --git a/mql5_experts_mt5/ADX MACD Deev/script.png b/mql5_experts_mt5/ADX MACD Deev/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/ADX MACD Deev/script.png differ diff --git a/mql5_experts_mt5/ADX System/63394109-5a03.jpg b/mql5_experts_mt5/ADX System/63394109-5a03.jpg new file mode 100644 index 0000000..5a21d71 Binary files /dev/null and b/mql5_experts_mt5/ADX System/63394109-5a03.jpg differ diff --git a/mql5_experts_mt5/ADX System/ADX_System_tester__3.png b/mql5_experts_mt5/ADX System/ADX_System_tester__3.png new file mode 100644 index 0000000..13df324 Binary files /dev/null and b/mql5_experts_mt5/ADX System/ADX_System_tester__3.png differ diff --git a/mql5_experts_mt5/ADX System/README.md b/mql5_experts_mt5/ADX System/README.md new file mode 100644 index 0000000..9218cff --- /dev/null +++ b/mql5_experts_mt5/ADX System/README.md @@ -0,0 +1,25 @@ +# ADX System + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](63394109-5a03.jpg) +![Screenshot](ADX_System_tester__3.png) + +## Files +- `adx_system.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ADX System/adx_system.mq5 b/mql5_experts_mt5/ADX System/adx_system.mq5 new file mode 100644 index 0000000..58cd8e8 --- /dev/null +++ b/mql5_experts_mt5/ADX System/adx_system.mq5 @@ -0,0 +1,240 @@ +//+------------------------------------------------------------------+ +//| ADX System(barabashkakvn's edition).mq5 | +//| System | +//| work_a@ukr.net | +//+------------------------------------------------------------------+ +#property copyright "System" +#property link "work_a@ukr.net" +#include +#include +#include +#include +CPositionInfo m_position; // trade position object +CTrade m_trade; // trading object +CSymbolInfo m_symbol; // symbol info object +CAccountInfo m_account; // account info wrapper +input ushort InpTakeProfit = 15; // TakeProfit +input double Lots = 1; // Lot +input ushort InpTrailingStop = 20; // TrailingStop +input ushort InpStopLoss = 100; // StopLoss +//--- +ulong m_magic = 16384; +double ExtTakeProfit = 0.0; +double ExtTrailingStop = 0.0; +double ExtStopLoss = 0.0; +int handle_iADX; // variable for storing the handle of the iADX indicator +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//SetMarginMode(); +//if(!IsHedging()) +// { +// Print("Hedging only!"); +// return(INIT_FAILED); +// } +//--- + m_symbol.Name(Symbol()); // sets symbol name + if(!RefreshRates()) + { + Print("Error RefreshRates. Bid=",DoubleToString(m_symbol.Bid(),Digits()), + ", Ask=",DoubleToString(m_symbol.Ask(),Digits())); + return(INIT_FAILED); + } +//--- + m_trade.SetExpertMagicNumber(m_magic); // sets magic number +//--- tuning for 3 or 5 digits + int digits_adjust=1; + if(m_symbol.Digits()==3 || m_symbol.Digits()==5) + digits_adjust=10; + + ExtTakeProfit = InpTakeProfit * digits_adjust; + ExtTrailingStop = InpTrailingStop * digits_adjust; + ExtStopLoss = InpStopLoss * digits_adjust; + +//--- create handle of the indicator iADX + handle_iADX=iADX(Symbol(),Period(),14); +//--- if the handle is not created + if(handle_iADX==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iADX indicator for the symbol %s/%s, error code %d", + Symbol(), + EnumToString(Period()), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } + + if(Bars(Symbol(),Period())<100) + { + Print("bars less than 100"); + return(INIT_FAILED); + } + if(ExtTakeProfit<10) + { + Print("ExtTakeProfit less than 10"); + return(INIT_FAILED); // check ExtTakeProfit + } +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { + double ADXP,ADXC,ADXDIPP; + double ADXDIPC,ADXDIMP,ADXDIMC; + + ADXP = iADXGet(MAIN_LINE, 2); + ADXC = iADXGet(MAIN_LINE, 1); + ADXDIPP = iADXGet(PLUSDI_LINE, 2); + ADXDIPC = iADXGet(PLUSDI_LINE, 1); + ADXDIMP = iADXGet(MINUSDI_LINE, 2); + ADXDIMC = iADXGet(MINUSDI_LINE, 1); + + int total=0; + for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions + if(m_position.SelectByIndex(i)) + if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic) + total++; + + if(total==0) + { + //--- no opened positions identified + if(m_account.FreeMargin()<(1000*Lots)) + { + Print("We have no money. Free Margin = ",m_account.FreeMargin()); + return; + } + //--- check for long position (BUY) possibility + if((ADXPADXC)) + { + if(!RefreshRates()) + return; + + if(m_trade.Buy(Lots,m_symbol.Name(),m_symbol.Ask(),m_symbol.Ask()-ExtStopLoss*Point(), + m_symbol.Ask()+ExtTakeProfit*Point(),"adx sample")) + { + Print("BUY order opened : ",m_trade.ResultPrice()); + } + else + { + Print("Error opening BUY. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription(), + ", ticket of deal: ",m_trade.ResultDeal()); + return; + } + } + //--- check for short position (SELL) possibility + if((ADXPADXC)) + { + if(!RefreshRates()) + return; + + if(m_trade.Sell(Lots,m_symbol.Name(),m_symbol.Bid(),m_symbol.Bid()+ExtStopLoss*Point(), + m_symbol.Bid()-ExtTakeProfit*Point(),"adx sample")) + { + Print("SELL order opened : ",m_trade.ResultPrice()); + } + else + Print("Error opening Sell. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription(), + ", ticket of deal: ",m_trade.ResultDeal()); + return; + } + return; + } + + for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions + if(m_position.SelectByIndex(i)) + if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic) + { + if(m_position.PositionType()==POSITION_TYPE_BUY) // long position is opened + { + if(ADXP>ADXC && ADXDIPP>ADXP && ADXDIPC0) + { + if(!RefreshRates()) + return; + + if(m_symbol.Bid()-m_position.PriceOpen()>Point()*ExtTrailingStop) + { + if(m_position.StopLoss()ADXC && ADXDIMP>ADXP && ADXDIMC0) + { + if(!RefreshRates()) + return; + + if((m_position.PriceOpen()-m_symbol.Ask())>(Point()*ExtTrailingStop)) + { + if((m_position.StopLoss()>(m_symbol.Ask()+Point()*ExtTrailingStop)) || + (m_position.StopLoss()==0)) + { + m_trade.PositionModify(m_position.Ticket(),m_symbol.Ask()+Point()*ExtTrailingStop, + m_position.TakeProfit()); + return; + } + } + } + } + } + return; + } +//+------------------------------------------------------------------+ +//| Refreshes the symbol quotes data | +//+------------------------------------------------------------------+ +bool RefreshRates() + { +//--- refresh rates + if(!m_symbol.RefreshRates()) + return(false); +//--- protection against the return value of "zero" + if(m_symbol.Ask()==0 || m_symbol.Bid()==0) + return(false); +//--- + return(true); + } +//+------------------------------------------------------------------+ +//| Get value of buffers for the iADX | +//| the buffer numbers are the following: | +//| 0 - iADXBuffer, 1 - DI_plusBuffer, 2 - DI_minusBuffer | +//+------------------------------------------------------------------+ +double iADXGet(const int buffer,const int index) + { + double ADX[]; + ArraySetAsSeries(ADX,true); +//--- reset error code + ResetLastError(); +//--- fill a part of the iADXBuffer array with values from the indicator buffer that has 0 index + if(CopyBuffer(handle_iADX,buffer,0,index+1,ADX)<0) + { + //--- if the copying fails, tell the error code + PrintFormat("Failed to copy data from the iADX indicator, error code %d",GetLastError()); + //--- quit with zero result - it means that the indicator is considered as not calculated + return(0.0); + } + return(ADX[index]); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/ADX System/expert.png b/mql5_experts_mt5/ADX System/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ADX System/expert.png differ diff --git a/mql5_experts_mt5/ADX System/indicator.png b/mql5_experts_mt5/ADX System/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/ADX System/indicator.png differ diff --git a/mql5_experts_mt5/ADX System/logo-2.png b/mql5_experts_mt5/ADX System/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ADX System/logo-2.png differ diff --git a/mql5_experts_mt5/AIS1/README.md b/mql5_experts_mt5/AIS1/README.md new file mode 100644 index 0000000..6018bc1 --- /dev/null +++ b/mql5_experts_mt5/AIS1/README.md @@ -0,0 +1,24 @@ +# AIS1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) + +## Files +- `ais1.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AIS1/ais1.mq5 b/mql5_experts_mt5/AIS1/ais1.mq5 new file mode 100644 index 0000000..db205b1 Binary files /dev/null and b/mql5_experts_mt5/AIS1/ais1.mq5 differ diff --git a/mql5_experts_mt5/AIS1/expert.png b/mql5_experts_mt5/AIS1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AIS1/expert.png differ diff --git a/mql5_experts_mt5/AIS1/indicator.png b/mql5_experts_mt5/AIS1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AIS1/indicator.png differ diff --git a/mql5_experts_mt5/AIS1/logo-2.png b/mql5_experts_mt5/AIS1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AIS1/logo-2.png differ diff --git a/mql5_experts_mt5/AIS1/script.png b/mql5_experts_mt5/AIS1/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/AIS1/script.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/5B608564-DCCB.png b/mql5_experts_mt5/AIS2 Trading Robot/5B608564-DCCB.png new file mode 100644 index 0000000..18e4b69 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/5B608564-DCCB.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/5B9159C3-EF07.jpg b/mql5_experts_mt5/AIS2 Trading Robot/5B9159C3-EF07.jpg new file mode 100644 index 0000000..517f594 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/5B9159C3-EF07.jpg differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/6066EA8C-31F7.jpg b/mql5_experts_mt5/AIS2 Trading Robot/6066EA8C-31F7.jpg new file mode 100644 index 0000000..1653e87 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/6066EA8C-31F7.jpg differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/AIS2_Trading_Robot__2.png b/mql5_experts_mt5/AIS2 Trading Robot/AIS2_Trading_Robot__2.png new file mode 100644 index 0000000..909d3c0 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/AIS2_Trading_Robot__2.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/README.md b/mql5_experts_mt5/AIS2 Trading Robot/README.md new file mode 100644 index 0000000..c8edf26 --- /dev/null +++ b/mql5_experts_mt5/AIS2 Trading Robot/README.md @@ -0,0 +1,27 @@ +# AIS2 Trading Robot + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5B608564-DCCB.png) +![Screenshot](5B9159C3-EF07.jpg) +![Screenshot](6066EA8C-31F7.jpg) +![Screenshot](AIS2_Trading_Robot__2.png) + +## Files +- `ais2_trading_robot.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AIS2 Trading Robot/ais2_trading_robot.mq5 b/mql5_experts_mt5/AIS2 Trading Robot/ais2_trading_robot.mq5 new file mode 100644 index 0000000..0f583dd Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/ais2_trading_robot.mq5 differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/avatar_na2.png b/mql5_experts_mt5/AIS2 Trading Robot/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/avatar_na2.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/expert.png b/mql5_experts_mt5/AIS2 Trading Robot/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/expert.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/indicator.png b/mql5_experts_mt5/AIS2 Trading Robot/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/indicator.png differ diff --git a/mql5_experts_mt5/AIS2 Trading Robot/logo-2.png b/mql5_experts_mt5/AIS2 Trading Robot/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AIS2 Trading Robot/logo-2.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/646A8AE1-940A.png b/mql5_experts_mt5/AK-47 Scalper EA/646A8AE1-940A.png new file mode 100644 index 0000000..b00ec4d Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/646A8AE1-940A.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/663D27F7-97AC.png b/mql5_experts_mt5/AK-47 Scalper EA/663D27F7-97AC.png new file mode 100644 index 0000000..ce32a90 Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/663D27F7-97AC.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/README.md b/mql5_experts_mt5/AK-47 Scalper EA/README.md new file mode 100644 index 0000000..0a4cf69 --- /dev/null +++ b/mql5_experts_mt5/AK-47 Scalper EA/README.md @@ -0,0 +1,26 @@ +# AK-47 Scalper EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](646A8AE1-940A.png) +![Screenshot](663D27F7-97AC.png) +![Screenshot](library.png) + +## Files +- `ak-47_scalper_ea_-_mt5.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AK-47 Scalper EA/ak-47_scalper_ea_-_mt5.mq5 b/mql5_experts_mt5/AK-47 Scalper EA/ak-47_scalper_ea_-_mt5.mq5 new file mode 100644 index 0000000..3c45484 Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/ak-47_scalper_ea_-_mt5.mq5 differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/avatar_na2.png b/mql5_experts_mt5/AK-47 Scalper EA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/avatar_na2.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/expert.png b/mql5_experts_mt5/AK-47 Scalper EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/expert.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/indicator.png b/mql5_experts_mt5/AK-47 Scalper EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/indicator.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/library.png b/mql5_experts_mt5/AK-47 Scalper EA/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/library.png differ diff --git a/mql5_experts_mt5/AK-47 Scalper EA/logo-2.png b/mql5_experts_mt5/AK-47 Scalper EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AK-47 Scalper EA/logo-2.png differ diff --git a/mql5_experts_mt5/AMA Trader 2/AMA_Trader.png b/mql5_experts_mt5/AMA Trader 2/AMA_Trader.png new file mode 100644 index 0000000..d68a49c Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/AMA_Trader.png differ diff --git a/mql5_experts_mt5/AMA Trader 2/README.md b/mql5_experts_mt5/AMA Trader 2/README.md new file mode 100644 index 0000000..23e5e95 --- /dev/null +++ b/mql5_experts_mt5/AMA Trader 2/README.md @@ -0,0 +1,24 @@ +# AMA Trader 2 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](AMA_Trader.png) + +## Files +- `ama_trader_2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AMA Trader 2/ama_trader_2.mq5 b/mql5_experts_mt5/AMA Trader 2/ama_trader_2.mq5 new file mode 100644 index 0000000..3fdf572 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/ama_trader_2.mq5 differ diff --git a/mql5_experts_mt5/AMA Trader 2/avatar_na2.png b/mql5_experts_mt5/AMA Trader 2/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/avatar_na2.png differ diff --git a/mql5_experts_mt5/AMA Trader 2/expert.png b/mql5_experts_mt5/AMA Trader 2/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/expert.png differ diff --git a/mql5_experts_mt5/AMA Trader 2/indicator.png b/mql5_experts_mt5/AMA Trader 2/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/indicator.png differ diff --git a/mql5_experts_mt5/AMA Trader 2/logo-2.png b/mql5_experts_mt5/AMA Trader 2/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AMA Trader 2/logo-2.png differ diff --git a/mql5_experts_mt5/AMA Trader/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/AMA Trader/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/AMA Trader/AMA_Trader.png b/mql5_experts_mt5/AMA Trader/AMA_Trader.png new file mode 100644 index 0000000..d68a49c Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/AMA_Trader.png differ diff --git a/mql5_experts_mt5/AMA Trader/AMA_Trader_Withdrawal.png b/mql5_experts_mt5/AMA Trader/AMA_Trader_Withdrawal.png new file mode 100644 index 0000000..12ef88c Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/AMA_Trader_Withdrawal.png differ diff --git a/mql5_experts_mt5/AMA Trader/README.md b/mql5_experts_mt5/AMA Trader/README.md new file mode 100644 index 0000000..9aee959 --- /dev/null +++ b/mql5_experts_mt5/AMA Trader/README.md @@ -0,0 +1,26 @@ +# AMA Trader + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](AMA_Trader.png) +![Screenshot](AMA_Trader_Withdrawal.png) + +## Files +- `ama_trader.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AMA Trader/ama_trader.mq5 b/mql5_experts_mt5/AMA Trader/ama_trader.mq5 new file mode 100644 index 0000000..ce6541d Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/ama_trader.mq5 differ diff --git a/mql5_experts_mt5/AMA Trader/avatar_na2.png b/mql5_experts_mt5/AMA Trader/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/avatar_na2.png differ diff --git a/mql5_experts_mt5/AMA Trader/expert.png b/mql5_experts_mt5/AMA Trader/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/expert.png differ diff --git a/mql5_experts_mt5/AMA Trader/indicator.png b/mql5_experts_mt5/AMA Trader/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/indicator.png differ diff --git a/mql5_experts_mt5/AMA Trader/logo-2.png b/mql5_experts_mt5/AMA Trader/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AMA Trader/logo-2.png differ diff --git a/mql5_experts_mt5/AO Lightning/README.md b/mql5_experts_mt5/AO Lightning/README.md new file mode 100644 index 0000000..e1b1a55 --- /dev/null +++ b/mql5_experts_mt5/AO Lightning/README.md @@ -0,0 +1,24 @@ +# AO Lightning + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](ao_lightning_test.png) + +## Files +- `ao_lightning.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AO Lightning/ao_lightning.mq5 b/mql5_experts_mt5/AO Lightning/ao_lightning.mq5 new file mode 100644 index 0000000..d1c0e72 --- /dev/null +++ b/mql5_experts_mt5/AO Lightning/ao_lightning.mq5 @@ -0,0 +1,380 @@ +//+------------------------------------------------------------------+ +//| AO_Lightning.mq5 | +//| Evgeny Kravchenko | +//| https://www.mql5.com/ru/users/evgen333 | +//+------------------------------------------------------------------+ +#property copyright "Evgeny Kravchenko" +#property link "https://www.mql5.com/ru/users/evgen333" +#property version "1.00" +#include + +//--- input parameters +input double LotFixed=0.01; //Lots +input int LotFromPercent=0; //Lot From Percent +input int Period_sma_slow=5; //Period sma slow +input int Period_sma_fast=34; //Period sma fast +input int Orders=10; //Orders max +input int Magic=5632; //Magic number + + +//---Create a object for opening positions +CTrade trade; + +//---create variables and arrays +int bars; +int buy_total; +int sell_total; + +double buy_profit; +double sell_profit; +double Bid; +double Ask; +double Lot; +double AO[10]; +double High[],Low[],Media[]; + +datetime Time[]; +datetime time_bar=0; + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- set the magic number + trade.SetExpertMagicNumber(Magic); + + bars=Period_sma_fast+Period_sma_slow; + + ArrayResize(Media,bars); + + Alert("AO_Lightning Load"); +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//---Let's check how many bars + if(Bars(_Symbol,PERIOD_CURRENT)0) + { + Alert("Close Sell ",sell_profit); + close_sell(_Symbol); + } + + if(buy_totalAO[1]) + { + //---Close buy orders + if(buy_total>0) + { + Alert("Close Buy ",buy_profit); + close_buy(_Symbol); + } + + if(sell_total0) return(true); + else + return(false); + } +//+------------------------------------------------------------------+ +//| Low | +//+------------------------------------------------------------------+ +bool low(string symbol,ENUM_TIMEFRAMES timeframe,double &data[]) + { + ArraySetAsSeries(data,true); + int copied=CopyLow(symbol,timeframe,0,bars,data); + if(copied>0) return(true); + else + return(false); + } +//+------------------------------------------------------------------+ +//| high | +//+------------------------------------------------------------------+ +bool high(string symbol,ENUM_TIMEFRAMES timeframe,double &data[]) + { + ArraySetAsSeries(data,true); + int copied=CopyHigh(symbol,timeframe,0,bars,data); + if(copied>0) return(true); + else + return(false); + } +//+------------------------------------------------------------------+ +//| info_order | +//+------------------------------------------------------------------+ +void info_order(string simb,int magic) + { + + buy_total=0; + sell_total=0; + buy_profit=0.0; + sell_profit=0.0; + + for(int i=0; i0) + { + lot=MathFloor(Free*proc/contrakt/Lot_step)*Lot_step; + } + + if(lotLot_max) + { + lot=Lot_max; + } + + return(NormalizeDouble(lot,2)); + } +//+------------------------------------------------------------------+ +//| CheckMoneyForTrade | +//+------------------------------------------------------------------+ +bool CheckMoneyForTrade(string symb,double lots,ENUM_ORDER_TYPE type,double price) + { + string eror=""; + +//--- value of necessary and free margin + double margin,free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE); +//--- call the validation function + if(!OrderCalcMargin(type,symb,lots,price,margin)) + { + eror="Error in Function CheckMoneyForTrade "; + Print("Error in ",__FUNCTION__," code=",GetLastError()); + return(true); + } +//--- if there is not enough money for the operation + if(margin>free_margin) + { + eror="Not enough money for "+EnumToString(type)+" "+DoubleToString(lots,2)+" "+symb+". "; + + //--- report an error and return true + MessageBox(eror,NULL,0); + Print(eror); + return(true); + } + +//--- the check was successful + return(false); + } +//+------------------------------------------------------------------+ +//| normalPrice | +//+------------------------------------------------------------------+ +bool normalPrice(double &price) + { + double tick_size_simb=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); + if(tick_size_simb>0) + { + int ratio=(int)MathRound(price/tick_size_simb); + if(MathAbs(ratio*tick_size_simb-price)>0.0000001) + { + price=NormalizeDouble(ratio*tick_size_simb,_Digits); + return true; + } + } + return false; + } +//+------------------------------------------------------------------+ +//| close_buy | +//+------------------------------------------------------------------+ +void close_buy(string simb) + { + while(buy_total>0) + { + for(int i=0; i0) + { + for(int i=0; i 0; + + ind0handler = iStochastic(NULL,0,Ind0Param0,Ind0Param1,Ind0Param2,MODE_SMA,STO_LOWHIGH); + ind1handler = iStochastic(NULL,0,Ind1Param0,Ind1Param1,Ind1Param2,MODE_SMA,0); + ind2handler = iStochastic(NULL,0,Ind2Param0,Ind2Param1,Ind2Param2,MODE_SMA,0); + ind3handler = iAC(NULL,0); + ind4handler = iAO(NULL,0); + + const ENUM_INIT_RETCODE initRetcode = ValidateInit(); + + return (initRetcode); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + datetime time=Time(0); + if(time>barTime) + { + barTime=time; + OnBar(); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnBar() + { + UpdatePosition(); + + if(posType!=OP_FLAT && IsForceSessionClose()) + { + ClosePosition(); + return; + } + + if(IsOutOfSession()) + return; + + if(posType!=OP_FLAT) + { + ManageClose(); + UpdatePosition(); + } + + if(posType!=OP_FLAT && isTrailingStop) + { + double trailingStop=GetTrailingStop(); + ManageTrailingStop(trailingStop); + UpdatePosition(); + } + + if(posType==OP_FLAT) + { + ManageOpen(); + UpdatePosition(); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void UpdatePosition() + { + posType = OP_FLAT; + posTicket = 0; + posLots = 0; + int posTotal=PositionsTotal(); + for(int posIndex=0;posIndex ind0val2 + sigma; + bool ind0short = ind0val1 < ind0val2 - sigma; + + double ind1buffer[]; CopyBuffer(ind1handler,MAIN_LINE,1,3,ind1buffer); + double ind1val1 = ind1buffer[2]; + bool ind1long = ind1val1 > Ind1Param3 + sigma; + bool ind1short = ind1val1 < 100 - Ind1Param3 - sigma; + + double ind2buffer[]; CopyBuffer(ind2handler,MAIN_LINE,1,3,ind2buffer); + double ind2val1 = ind2buffer[2]; + bool ind2long = ind2val1 < Ind2Param3 - sigma; + bool ind2short = ind2val1 > 100 - Ind2Param3 + sigma; + + double ind3buffer[]; CopyBuffer(ind3handler,0,1,3,ind3buffer); + double ind3val1 = ind3buffer[2]; + double ind3val2 = ind3buffer[1]; + bool ind3long = ind3val1 > Ind3Param0 + sigma && ind3val2 < Ind3Param0 - sigma; + bool ind3short = ind3val1 < -Ind3Param0 - sigma && ind3val2 > -Ind3Param0 + sigma; + + const bool canOpenLong = ind0long && ind1long && ind2long && ind3long; + const bool canOpenShort = ind0short && ind1short && ind2short && ind3short; + + if(canOpenLong && canOpenShort) return; + + if(canOpenLong) + OpenPosition(OP_BUY); + else if(canOpenShort) + OpenPosition(OP_SELL); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageClose() + { + double ind4buffer[]; CopyBuffer(ind4handler,0,1,3,ind4buffer); + double ind4val1 = ind4buffer[2]; + double ind4val2 = ind4buffer[1]; + bool ind4long = ind4val1 < Ind4Param0 - sigma && ind4val2 > Ind4Param0 + sigma; + bool ind4short = ind4val1 > -Ind4Param0 + sigma && ind4val2 < -Ind4Param0 - sigma; + + if(posType==OP_BUY && ind4long) + ClosePosition(); + else if(posType==OP_SELL && ind4short) + ClosePosition(); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OpenPosition(int command) + { + const double stopLoss = GetStopLossPrice(command); + const double takeProfit = GetTakeProfitPrice(command); + ManageOrderSend(command,Entry_Amount,stopLoss,takeProfit,0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ClosePosition() + { + const int command=posType==OP_BUY ? OP_SELL : OP_BUY; + ManageOrderSend(command,posLots,0,0,posTicket); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageOrderSend(int command,double lots,double stopLoss,double takeProfit,ulong ticket) + { + for(int attempt=0; attempt=tick.bid-stopLevelPoints) + ? tick.bid - stopLevelPoints + : stopLossPrice; + + return (fixedStopLossPrice); + } + else + { + return (tick.bid); + } + } + } + + else if(posType==OP_SELL) + { + const double stopLossPrice=Low(1)+stopLossPoints; + if(posStopLoss>stopLossPrice+pip) + { + if(stopLossPrice>tick.ask) + { + if(stopLossPrice<=tick.ask+stopLevelPoints) + return (tick.ask + stopLevelPoints); + else + return (stopLossPrice); + } + else + { + return (tick.ask); + } + } + } + + return (posStopLoss); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageTrailingStop(double trailingStop) + { + MqlTick tick; SymbolInfoTick(_Symbol,tick); + + if(posType==OP_BUY && MathAbs(trailingStop-tick.bid)<_Point) + { + ClosePosition(); + } + + else if(posType==OP_SELL && MathAbs(trailingStop-tick.ask)<_Point) + { + ClosePosition(); + } + + else if(MathAbs(trailingStop-posStopLoss)>_Point) + { + posStopLoss=NormalizeDouble(trailingStop,digits); + ModifyPosition(posStopLoss,posTakeProfit,posTicket); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetTakeProfitPrice(int command) + { + if(Take_Profit==0) return (0); + + MqlTick tick; SymbolInfoTick(_Symbol,tick); + const double delta = MathMax(pip*Take_Profit, _Point*stopLevel); + const double price = command==OP_BUY ? tick.bid : tick.ask; + const double takeProfit = command==OP_BUY ? price+delta : price-delta; + const double normalizedTakeProfit = NormalizeDouble(takeProfit, _Digits); + + return (normalizedTakeProfit); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +datetime Time(int bar) + { + datetime buffer[]; ArrayResize(buffer,1); + const int result=CopyTime(_Symbol,_Period,bar,1,buffer); + return (result==1 ? buffer[0] : 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Open(int bar) + { + double buffer[]; ArrayResize(buffer,1); + const int result=CopyOpen(_Symbol,_Period,bar,1,buffer); + return (result==1 ? buffer[0] : 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double High(int bar) + { + double buffer[]; ArrayResize(buffer,1); + const int result=CopyHigh(_Symbol,_Period,bar,1,buffer); + return (result==1 ? buffer[0] : 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Low(int bar) + { + double buffer[]; ArrayResize(buffer,1); + const int result=CopyLow(_Symbol,_Period,bar,1,buffer); + return (result==1 ? buffer[0] : 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Close(int bar) + { + double buffer[]; ArrayResize(buffer,1); + const int result=CopyClose(_Symbol,_Period,bar,1,buffer); + return (result==1 ? buffer[0] : 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetPipValue(int digit) + { + if(digit==4 || digit==5) + return (0.0001); + if(digit==2 || digit==3) + return (0.01); + if(digit==1) + return (0.1); + return (1); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsTradeContextFree() + { + if(MQL5InfoInteger(MQL5_TRADE_ALLOWED)) return (true); + + uint startWait=GetTickCount(); + Print("Trade context is busy! Waiting..."); + + while(true) + { + if(IsStopped()) return (false); + + uint diff=GetTickCount()-startWait; + if(diff>30*1000) + { + Print("The waiting limit exceeded!"); + return (false); + } + + if(MQL5InfoInteger(MQL5_TRADE_ALLOWED)) return (true); + + Sleep(TRADE_RETRY_WAIT); + } + + return (true); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsOutOfSession() + { + MqlDateTime time0; TimeToStruct(Time(0),time0); + const int weekDay = time0.day_of_week; + const long timeFromMidnight = Time(0)%86400; + const int periodLength = PeriodSeconds(_Period); + + if(weekDay==0) + { + if(sessionIgnoreSunday) return (true); + + const int lastBarFix = sessionCloseAtSessionClose ? periodLength : 0; + const bool skipTrade = timeFromMidnightsessionSundayClose; + + return (skipTrade); + } + + if(weekDay<5) + { + const int lastBarFix = sessionCloseAtSessionClose ? periodLength : 0; + const bool skipTrade = timeFromMidnightsessionMondayThursdayClose; + + return (skipTrade); + } + + const int lastBarFix=sessionCloseAtFridayClose || sessionCloseAtSessionClose ? periodLength : 0; + const bool skipTrade=timeFromMidnightsessionFridayClose; + + return (skipTrade); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsForceSessionClose() + { + if(!sessionCloseAtFridayClose && !sessionCloseAtSessionClose) return (false); + + MqlDateTime time0; TimeToStruct(Time(0),time0); + const int weekDay = time0.day_of_week; + const long timeFromMidnight = Time(0)%86400; + const int periodLength = PeriodSeconds(_Period); + + bool forceExit=false; + if(weekDay==0 && sessionCloseAtSessionClose) + { + forceExit=timeFromMidnight+periodLength>sessionSundayClose; + } + else if(weekDay<5 && sessionCloseAtSessionClose) + { + forceExit=timeFromMidnight+periodLength>sessionMondayThursdayClose; + } + else if(weekDay==5) + { + forceExit=timeFromMidnight+periodLength>sessionFridayClose; + } + + return (forceExit); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +ENUM_ORDER_TYPE_FILLING GetOrderFillingType() + { + const int oftIndex=(int) SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE); + const ENUM_ORDER_TYPE_FILLING fillType=(ENUM_ORDER_TYPE_FILLING)(oftIndex>0 ? oftIndex-1 : oftIndex); + + return (fillType); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +ENUM_INIT_RETCODE ValidateInit() + { + return (INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +/*STRATEGY MARKET Premium Data; EURUSD; H4 */ +/*STRATEGY CODE {"properties":{"entryLots":0.01,"tradeDirectionMode":0,"stopLoss":40,"takeProfit":70,"useStopLoss":true,"useTakeProfit":true,"isTrailingStop":false},"openFilters":[{"name":"Stochastic Signal","listIndexes":[2,0,0,0,0],"numValues":[40,10,10,0,0,0]},{"name":"Stochastic","listIndexes":[2,0,0,0,0],"numValues":[40,10,10,20,0,0]},{"name":"Stochastic","listIndexes":[3,0,0,0,0],"numValues":[40,10,10,75,0,0]},{"name":"Accelerator Oscillator","listIndexes":[4,0,0,0,0],"numValues":[0.0002,0,0,0,0,0]}],"closeFilters":[{"name":"Awesome Oscillator","listIndexes":[5,0,0,0,0],"numValues":[0.0013,0,0,0,0,0]}]} */ diff --git a/mql5_experts_mt5/AO n Stochastic/library.png b/mql5_experts_mt5/AO n Stochastic/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/AO n Stochastic/library.png differ diff --git a/mql5_experts_mt5/AO n Stochastic/logo-2.png b/mql5_experts_mt5/AO n Stochastic/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AO n Stochastic/logo-2.png differ diff --git a/mql5_experts_mt5/AOCCI/README.md b/mql5_experts_mt5/AOCCI/README.md new file mode 100644 index 0000000..25df0b2 --- /dev/null +++ b/mql5_experts_mt5/AOCCI/README.md @@ -0,0 +1,23 @@ +# AOCCI + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `aocci.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AOCCI/aocci.mq5 b/mql5_experts_mt5/AOCCI/aocci.mq5 new file mode 100644 index 0000000..4607891 Binary files /dev/null and b/mql5_experts_mt5/AOCCI/aocci.mq5 differ diff --git a/mql5_experts_mt5/AOCCI/expert.png b/mql5_experts_mt5/AOCCI/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AOCCI/expert.png differ diff --git a/mql5_experts_mt5/AOCCI/indicator.png b/mql5_experts_mt5/AOCCI/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AOCCI/indicator.png differ diff --git a/mql5_experts_mt5/AOCCI/logo-2.png b/mql5_experts_mt5/AOCCI/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AOCCI/logo-2.png differ diff --git a/mql5_experts_mt5/ASCV/ASCV.png b/mql5_experts_mt5/ASCV/ASCV.png new file mode 100644 index 0000000..8f5cb60 Binary files /dev/null and b/mql5_experts_mt5/ASCV/ASCV.png differ diff --git a/mql5_experts_mt5/ASCV/BrainTrend1Sig.png b/mql5_experts_mt5/ASCV/BrainTrend1Sig.png new file mode 100644 index 0000000..ac8b2a6 Binary files /dev/null and b/mql5_experts_mt5/ASCV/BrainTrend1Sig.png differ diff --git a/mql5_experts_mt5/ASCV/README.md b/mql5_experts_mt5/ASCV/README.md new file mode 100644 index 0000000..e368292 --- /dev/null +++ b/mql5_experts_mt5/ASCV/README.md @@ -0,0 +1,26 @@ +# ASCV + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](ASCV.png) +![Screenshot](BrainTrend1Sig.png) +![Screenshot](library.png) + +## Files +- `ascv.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ASCV/ascv.mq5 b/mql5_experts_mt5/ASCV/ascv.mq5 new file mode 100644 index 0000000..76a91c7 Binary files /dev/null and b/mql5_experts_mt5/ASCV/ascv.mq5 differ diff --git a/mql5_experts_mt5/ASCV/expert.png b/mql5_experts_mt5/ASCV/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ASCV/expert.png differ diff --git a/mql5_experts_mt5/ASCV/indicator.png b/mql5_experts_mt5/ASCV/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/ASCV/indicator.png differ diff --git a/mql5_experts_mt5/ASCV/library.png b/mql5_experts_mt5/ASCV/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/ASCV/library.png differ diff --git a/mql5_experts_mt5/ASCV/logo-2.png b/mql5_experts_mt5/ASCV/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ASCV/logo-2.png differ diff --git a/mql5_experts_mt5/Above Below MA/63ee7fbe-743c.jpg b/mql5_experts_mt5/Above Below MA/63ee7fbe-743c.jpg new file mode 100644 index 0000000..96f99fa Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/63ee7fbe-743c.jpg differ diff --git a/mql5_experts_mt5/Above Below MA/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Above Below MA/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Above Below MA/Above_Below_MA.png b/mql5_experts_mt5/Above Below MA/Above_Below_MA.png new file mode 100644 index 0000000..68fcb16 Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/Above_Below_MA.png differ diff --git a/mql5_experts_mt5/Above Below MA/README.md b/mql5_experts_mt5/Above Below MA/README.md new file mode 100644 index 0000000..69618d2 --- /dev/null +++ b/mql5_experts_mt5/Above Below MA/README.md @@ -0,0 +1,26 @@ +# Above Below MA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](63ee7fbe-743c.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Above_Below_MA.png) + +## Files +- `above_below_ma.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Above Below MA/above_below_ma.mq5 b/mql5_experts_mt5/Above Below MA/above_below_ma.mq5 new file mode 100644 index 0000000..9a62185 Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/above_below_ma.mq5 differ diff --git a/mql5_experts_mt5/Above Below MA/avatar_na2.png b/mql5_experts_mt5/Above Below MA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/avatar_na2.png differ diff --git a/mql5_experts_mt5/Above Below MA/expert.png b/mql5_experts_mt5/Above Below MA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/expert.png differ diff --git a/mql5_experts_mt5/Above Below MA/indicator.png b/mql5_experts_mt5/Above Below MA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/indicator.png differ diff --git a/mql5_experts_mt5/Above Below MA/logo-2.png b/mql5_experts_mt5/Above Below MA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Above Below MA/logo-2.png differ diff --git a/mql5_experts_mt5/Absorption/Absorption.png b/mql5_experts_mt5/Absorption/Absorption.png new file mode 100644 index 0000000..be7f8cb Binary files /dev/null and b/mql5_experts_mt5/Absorption/Absorption.png differ diff --git a/mql5_experts_mt5/Absorption/Absorption_in_bar_1.png b/mql5_experts_mt5/Absorption/Absorption_in_bar_1.png new file mode 100644 index 0000000..38d4008 Binary files /dev/null and b/mql5_experts_mt5/Absorption/Absorption_in_bar_1.png differ diff --git a/mql5_experts_mt5/Absorption/Absorption_in_bar_2.png b/mql5_experts_mt5/Absorption/Absorption_in_bar_2.png new file mode 100644 index 0000000..b2691dc Binary files /dev/null and b/mql5_experts_mt5/Absorption/Absorption_in_bar_2.png differ diff --git a/mql5_experts_mt5/Absorption/README.md b/mql5_experts_mt5/Absorption/README.md new file mode 100644 index 0000000..899d6af --- /dev/null +++ b/mql5_experts_mt5/Absorption/README.md @@ -0,0 +1,26 @@ +# Absorption + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Absorption.png) +![Screenshot](Absorption_in_bar_1.png) +![Screenshot](Absorption_in_bar_2.png) + +## Files +- `absorption.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Absorption/absorption.mq5 b/mql5_experts_mt5/Absorption/absorption.mq5 new file mode 100644 index 0000000..531d468 Binary files /dev/null and b/mql5_experts_mt5/Absorption/absorption.mq5 differ diff --git a/mql5_experts_mt5/Absorption/expert.png b/mql5_experts_mt5/Absorption/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Absorption/expert.png differ diff --git a/mql5_experts_mt5/Absorption/indicator.png b/mql5_experts_mt5/Absorption/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Absorption/indicator.png differ diff --git a/mql5_experts_mt5/Absorption/logo-2.png b/mql5_experts_mt5/Absorption/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Absorption/logo-2.png differ diff --git a/mql5_experts_mt5/Active Chart/Image_1.png b/mql5_experts_mt5/Active Chart/Image_1.png new file mode 100644 index 0000000..608ecc4 Binary files /dev/null and b/mql5_experts_mt5/Active Chart/Image_1.png differ diff --git a/mql5_experts_mt5/Active Chart/README.md b/mql5_experts_mt5/Active Chart/README.md new file mode 100644 index 0000000..e08509a --- /dev/null +++ b/mql5_experts_mt5/Active Chart/README.md @@ -0,0 +1,24 @@ +# Active Chart + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Image_1.png) + +## Files +- `chart_bring_to_topagetb.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Active Chart/chart_bring_to_topagetb.mq5 b/mql5_experts_mt5/Active Chart/chart_bring_to_topagetb.mq5 new file mode 100644 index 0000000..1779dec --- /dev/null +++ b/mql5_experts_mt5/Active Chart/chart_bring_to_topagetb.mq5 @@ -0,0 +1,57 @@ +//+------------------------------------------------------------------+ +//| CHART_BRING_TO_TOP(GET).mq5 | +//| Copyright © 2015, Vladimir Karputov | +//| http://wmua.ru/slesar/ | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2015, Vladimir Karputov" +#property link "http://wmua.ru/slesar/" +#property version "1.01" +#property description "Determine the active chart" +//+------------------------------------------------------------------+ +//| Determine the active chart | +//| Îïđćäćëÿćì àêòèâíûé ăđàôèê | +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- + EventSetTimer(3); +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTimer() + { +//Print(__FUNCTION__); +//--- variables for chart ID +//--- ïćđćìćííûć äëÿ èäćíòèôèêàòîđîâ ăđàôèêîâ + long currChart,prevChart=ChartFirst(); + bool var=false; + int i=0,limit=100; + while(i + +// Define signal states +#define SIGNAL_BUY 1 +#define SIGNAL_NOT 0 +#define SIGNAL_SELL -1 + +// Input parameters +input double MaxRiskPercent = 0.2; // Risk percentage for each trade +input int OptimizationInterval = 3600; // Interval (in seconds) to optimize parameters (1 hour) +input long InpMagicNumber = 121300; // Magic number for EA trades +input int MaxSimultaneousTrades = 1; // Maximum number of trades allowed at the same time +input int TrendPeriod = 20; // Trend period for 5-minute charts +input double BreakEvenMultiplier = 1.5; // Move stop loss to break even after this ATR multiplier is reached +input double PartialTakeProfitPercent = 0.5; // Percent of position to close at the first take-profit level +input int PerformanceCheckInterval = 14400; // Interval to check and adjust parameters (4 hours) +input double MaxSpreadPoints = 20; // Maximum spread allowed for opening trades +input int NewsAvoidanceMinutes = 30; // Time in minutes to avoid trading around high-impact news + +// Multi-timeframe settings +input ENUM_TIMEFRAMES HigherTimeframe = PERIOD_H1; // Higher timeframe for trend confirmation (1 hour) +input int HigherTimeframeTrendPeriod = 50; // Trend period on the higher timeframe + +// RSI and ATR Optimization input parameters +input int RSI_Min_Period = 8; +input int RSI_Max_Period = 14; +input double ATR_Min_Multiplier = 1.0; +input double ATR_Max_Multiplier = 2.0; +input double TrailingStop_Min_Multiplier = 1.0; +input double TrailingStop_Max_Multiplier = 2.0; +input double TrailingTP_Min_Multiplier = 1.0; +input double TrailingTP_Max_Multiplier = 2.0; + +// Structure to hold parameter sets +struct ParameterSet { + int periodRSI; + double atrMultiplier; + double trailingStopMultiplier; + double trailingTakeProfitMultiplier; + double performanceScore; +}; + +// Structure to track trade states per symbol +struct SymbolTradeState { + string symbol; + bool tradeActive; + bool breakEvenApplied; + datetime lastTradeTime; + int rsiHandle; + int atrHandle; + int trendHandle; + int higherTimeframeTrendHandle; + int winCount; + int lossCount; +}; + +// Global variables +ParameterSet currentBestSet; +CTrade ExtTrade; +double currentRiskPercent; // Adjustable risk percentage +datetime lastOptimization = 0; +datetime lastPerformanceCheck = 0; +SymbolTradeState symbolTradeStates[100]; // Adjust the size if tracking more symbols +int symbolCount = 0; + +// Function declarations +void OptimizeParameters(); +void AdjustParametersBasedOnPerformance(int symbolIndex); +void CheckTradeSignals(); +void ApplyTrailingStop(); +double iATRValue(int handle); +double iRSIValue(int handle); +double iTrendValue(int handle); +double BacktestWithParameters(int rsiPeriod, double atrMultiplier, double trailingStopMultiplier, double trailingTPMultiplier); +bool IsSpreadAcceptable(string symbol); +bool IsHighImpactNewsUpcoming(int minutesAhead); + +// Function to log information +void LogInfo(string message) { + Print(TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES | TIME_SECONDS) + ": " + message); +} + +// Function to find a symbol in the trade state array +int FindSymbolStateIndex(string symbol) { + for (int i = 0; i < symbolCount; i++) { + if (symbolTradeStates[i].symbol == symbol) { + return i; + } + } + return -1; // Symbol not found +} + +// Function to add a new symbol to the trade state array +void AddSymbolState(string symbol) { + if (symbolCount < 100) { + if (SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) > 0) { // Validate if the symbol is available + symbolTradeStates[symbolCount].symbol = symbol; + symbolTradeStates[symbolCount].tradeActive = false; + symbolTradeStates[symbolCount].breakEvenApplied = false; + symbolTradeStates[symbolCount].lastTradeTime = 0; + symbolTradeStates[symbolCount].winCount = 0; + symbolTradeStates[symbolCount].lossCount = 0; + symbolTradeStates[symbolCount].rsiHandle = iRSI(symbol, PERIOD_M5, 14, PRICE_CLOSE); + symbolTradeStates[symbolCount].atrHandle = iATR(symbol, PERIOD_M5, 14); + symbolTradeStates[symbolCount].trendHandle = iMA(symbol, PERIOD_M5, TrendPeriod, 0, MODE_SMA, PRICE_CLOSE); + symbolTradeStates[symbolCount].higherTimeframeTrendHandle = iMA(symbol, HigherTimeframe, HigherTimeframeTrendPeriod, 0, MODE_SMA, PRICE_CLOSE); + + if (symbolTradeStates[symbolCount].rsiHandle == INVALID_HANDLE || + symbolTradeStates[symbolCount].atrHandle == INVALID_HANDLE || + symbolTradeStates[symbolCount].trendHandle == INVALID_HANDLE || + symbolTradeStates[symbolCount].higherTimeframeTrendHandle == INVALID_HANDLE) { + LogInfo("Error: Failed to initialize indicators for symbol: " + symbol); + } + symbolCount++; + } else { + LogInfo("Error: Invalid symbol - " + symbol); + } + } else { + LogInfo("Error: Maximum symbol limit reached. Cannot add symbol: " + symbol); + } +} + +// Function to calculate lot size based on optimized parameters +double CalculateLotSize(int symbolIndex) { + double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); + double atrValue = iATRValue(symbolTradeStates[symbolIndex].atrHandle); + if (atrValue <= 0) { + LogInfo("Error: Invalid ATR value. Unable to calculate lot size."); + return 0.0; + } + + double riskAmount = accountBalance * currentRiskPercent / 100.0; + double stopLossPoints = atrValue * currentBestSet.atrMultiplier; + double lotSize = riskAmount / (stopLossPoints * _Point); + + // Declare variables to hold symbol information + double minVolume, maxVolume, volumeStep; + + // Retrieve symbol information using the reference form of SymbolInfoDouble + if (!SymbolInfoDouble(symbolTradeStates[symbolIndex].symbol, SYMBOL_VOLUME_MIN, minVolume) || + !SymbolInfoDouble(symbolTradeStates[symbolIndex].symbol, SYMBOL_VOLUME_MAX, maxVolume) || + !SymbolInfoDouble(symbolTradeStates[symbolIndex].symbol, SYMBOL_VOLUME_STEP, volumeStep)) { + LogInfo("Error: Failed to retrieve volume information for symbol: " + symbolTradeStates[symbolIndex].symbol); + return 0.0; + } + + // Calculate the lot size within the symbol's volume constraints + lotSize = MathFloor(lotSize / volumeStep) * volumeStep; + if (lotSize < minVolume) lotSize = minVolume; + else if (lotSize > maxVolume) lotSize = maxVolume; + + return NormalizeDouble(lotSize, 2); +} + +// Function to retrieve the latest trend value (moving average) +double iTrendValue(int handle) { + double trendValues[]; + int copied = CopyBuffer(handle, 0, 0, 1, trendValues); + if (copied > 0 && ArraySize(trendValues) > 0) { + return trendValues[0]; + } + LogInfo("Error: Failed to retrieve trend value."); + return 0.0; +} + +// Function to retrieve the latest ATR value +double iATRValue(int handle) { + double atrValues[]; + int copied = CopyBuffer(handle, 0, 0, 1, atrValues); + if (copied > 0 && ArraySize(atrValues) > 0) { + return atrValues[0]; + } + LogInfo("Error: Failed to retrieve ATR value."); + return 0.0; +} + +// Function to retrieve the latest RSI value +double iRSIValue(int handle) { + double rsiValues[]; + int copied = CopyBuffer(handle, 0, 0, 1, rsiValues); + if (copied > 0 && ArraySize(rsiValues) > 0) { + return rsiValues[0]; + } + LogInfo("Error: Failed to retrieve RSI value."); + return 0.0; +} + +// Function to check if the current spread is acceptable +bool IsSpreadAcceptable(string symbol) { + double spread = (SymbolInfoDouble(symbol, SYMBOL_ASK) - SymbolInfoDouble(symbol, SYMBOL_BID)) / _Point; + return spread <= MaxSpreadPoints; +} + +// Placeholder function to check for high-impact news +bool IsHighImpactNewsUpcoming(int minutesAhead) { + // Placeholder: Implement actual high-impact news checking logic here + return false; // Assume no high-impact news is upcoming +} + +// Main function to check trading signals +void CheckTradeSignals() { + for (int i = 0; i < symbolCount; i++) { + if (symbolTradeStates[i].tradeActive) continue; // Ensure only one trade per symbol + + // Avoid trading during high-impact news or if the spread is too high + if (IsHighImpactNewsUpcoming(NewsAvoidanceMinutes) || !IsSpreadAcceptable(symbolTradeStates[i].symbol)) { + continue; + } + + double rsiValue = iRSIValue(symbolTradeStates[i].rsiHandle); + double atrValue = iATRValue(symbolTradeStates[i].atrHandle); + double trendValue = iTrendValue(symbolTradeStates[i].trendHandle); + double higherTimeframeTrendValue = iTrendValue(symbolTradeStates[i].higherTimeframeTrendHandle); + double price = SymbolInfoDouble(symbolTradeStates[i].symbol, SYMBOL_BID); + double lotSize = CalculateLotSize(i); // Pass the symbol index 'i' to the function + + if (lotSize <= 0) { + LogInfo("Invalid lot size. Cannot execute trade for symbol: " + symbolTradeStates[i].symbol); + continue; + } + + double stopLoss = atrValue * currentBestSet.atrMultiplier; + double takeProfit = atrValue * currentBestSet.trailingTakeProfitMultiplier; + + // Buy Condition + if (rsiValue < 30 && price > trendValue && price > higherTimeframeTrendValue) { + if (ExtTrade.Buy(lotSize, symbolTradeStates[i].symbol, price, price - stopLoss, price + takeProfit, "Buy Signal")) { + symbolTradeStates[i].tradeActive = true; + symbolTradeStates[i].lastTradeTime = TimeCurrent(); + LogInfo("Buy trade executed for symbol: " + symbolTradeStates[i].symbol); + } else { + LogInfo("Buy trade failed: " + IntegerToString(GetLastError())); + } + } + // Sell Condition + else if (rsiValue > 70 && price < trendValue && price < higherTimeframeTrendValue) { + if (ExtTrade.Sell(lotSize, symbolTradeStates[i].symbol, price, price + stopLoss, price - takeProfit, "Sell Signal")) { + symbolTradeStates[i].tradeActive = true; + symbolTradeStates[i].lastTradeTime = TimeCurrent(); + LogInfo("Sell trade executed for symbol: " + symbolTradeStates[i].symbol); + } else { + LogInfo("Sell trade failed: " + IntegerToString(GetLastError())); + } + } + } +} + +// Function to perform backtesting with given parameters +double BacktestWithParameters(int rsiPeriod, double atrMultiplier, double trailingStopMultiplier, double trailingTPMultiplier) { + // Placeholder for backtesting logic + double simulatedProfit = 0.0; + + // Implement real backtesting logic using historical data (this is a placeholder) + return simulatedProfit; +} + +// Function to optimize parameters using brute-force optimization +void OptimizeParameters() { + LogInfo("Starting parameter optimization..."); + double bestPerformance = -DBL_MAX; + ParameterSet bestSet; + + for (int rsiPeriod = RSI_Min_Period; rsiPeriod <= RSI_Max_Period; rsiPeriod++) { + for (double atrMultiplier = ATR_Min_Multiplier; atrMultiplier <= ATR_Max_Multiplier; atrMultiplier += 0.5) { + for (double trailingStopMultiplier = TrailingStop_Min_Multiplier; trailingStopMultiplier <= TrailingStop_Max_Multiplier; trailingStopMultiplier += 0.5) { + for (double trailingTPMultiplier = TrailingTP_Min_Multiplier; trailingTPMultiplier <= TrailingTP_Max_Multiplier; trailingTPMultiplier += 0.5) { + double profit = BacktestWithParameters(rsiPeriod, atrMultiplier, trailingStopMultiplier, trailingTPMultiplier); + if (profit > bestPerformance) { + bestPerformance = profit; + bestSet.periodRSI = rsiPeriod; + bestSet.atrMultiplier = atrMultiplier; + bestSet.trailingStopMultiplier = trailingStopMultiplier; + bestSet.trailingTakeProfitMultiplier = trailingTPMultiplier; + } + } + } + } + } + + currentBestSet = bestSet; + LogInfo("Optimization complete. Best RSI: " + IntegerToString(currentBestSet.periodRSI) + + ", ATR Multiplier: " + DoubleToString(currentBestSet.atrMultiplier) + + ", Trailing Stop Multiplier: " + DoubleToString(currentBestSet.trailingStopMultiplier) + + ", Trailing TP Multiplier: " + DoubleToString(currentBestSet.trailingTakeProfitMultiplier)); +} + +// Function to apply trailing stop +void ApplyTrailingStop() { + for (int i = 0; i < symbolCount; i++) { + if (!symbolTradeStates[i].tradeActive) continue; + + double atrValue = iATRValue(symbolTradeStates[i].atrHandle); + double price = 0.0; + + if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { + price = SymbolInfoDouble(symbolTradeStates[i].symbol, SYMBOL_BID); + } else if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { + price = SymbolInfoDouble(symbolTradeStates[i].symbol, SYMBOL_ASK); + } + + if (price <= 0.0) { + LogInfo("Error: Failed to retrieve current price for symbol: " + symbolTradeStates[i].symbol); + continue; + } + + double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); + double profitLevel = MathAbs(price - openPrice); + + double newStopLoss; + if (profitLevel > 2.0 * atrValue) { + newStopLoss = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? price - 1.5 * atrValue : price + 1.5 * atrValue; + } else if (profitLevel > 1.0 * atrValue) { + newStopLoss = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? price - 1.0 * atrValue : price + 1.0 * atrValue; + } else { + newStopLoss = (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) ? price - 0.5 * atrValue : price + 0.5 * atrValue; + } + + if (ExtTrade.PositionModify(PositionGetInteger(POSITION_TICKET), newStopLoss, 0)) { + LogInfo("Trailing stop updated for symbol: " + symbolTradeStates[i].symbol); + } + } +} + +// Function to adjust parameters based on performance +void AdjustParametersBasedOnPerformance(int symbolIndex) { + int wins = symbolTradeStates[symbolIndex].winCount; + int losses = symbolTradeStates[symbolIndex].lossCount; + double winRate = (wins + losses > 0) ? (double)wins / (wins + losses) : 0.0; + + if (winRate < 0.4) { + currentRiskPercent = MathMax(currentRiskPercent - 0.05, 0.05); + LogInfo("Risk reduced due to low win rate for symbol: " + symbolTradeStates[symbolIndex].symbol); + } else if (winRate > 0.6) { + currentRiskPercent = MathMin(currentRiskPercent + 0.05, MaxRiskPercent); + LogInfo("Risk increased due to high win rate for symbol: " + symbolTradeStates[symbolIndex].symbol); + } +} + +// Main OnTick function +void OnTick() { + datetime currentTime = TimeCurrent(); + LogInfo("OnTick called."); + + if (currentTime - lastOptimization > OptimizationInterval) { + OptimizeParameters(); + lastOptimization = currentTime; + } + + if (currentTime - lastPerformanceCheck > PerformanceCheckInterval) { + for (int i = 0; i < symbolCount; i++) { + AdjustParametersBasedOnPerformance(i); + } + lastPerformanceCheck = currentTime; + } + + CheckTradeSignals(); + ApplyTrailingStop(); +} + +// Initialization function +int OnInit() { + LogInfo("Initializing EA..."); + currentRiskPercent = MaxRiskPercent; + AddSymbolState(_Symbol); // Add the current symbol to the symbol state + OptimizeParameters(); // Perform initial parameter optimization + return INIT_SUCCEEDED; // Return success +} + +// Deinitialization function +void OnDeinit(const int reason) { + LogInfo("EA Deinitialized."); + for (int i = 0; i < symbolCount; i++) { + if (symbolTradeStates[i].rsiHandle != INVALID_HANDLE) { + IndicatorRelease(symbolTradeStates[i].rsiHandle); + } + if (symbolTradeStates[i].atrHandle != INVALID_HANDLE) { + IndicatorRelease(symbolTradeStates[i].atrHandle); + } + if (symbolTradeStates[i].trendHandle != INVALID_HANDLE) { + IndicatorRelease(symbolTradeStates[i].trendHandle); + } + if (symbolTradeStates[i].higherTimeframeTrendHandle != INVALID_HANDLE) { + IndicatorRelease(symbolTradeStates[i].higherTimeframeTrendHandle); + } + } +} diff --git a/mql5_experts_mt5/AdaptiveTrader Pro EA/avatar_na2.png b/mql5_experts_mt5/AdaptiveTrader Pro EA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AdaptiveTrader Pro EA/avatar_na2.png differ diff --git a/mql5_experts_mt5/AdaptiveTrader Pro EA/expert.png b/mql5_experts_mt5/AdaptiveTrader Pro EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AdaptiveTrader Pro EA/expert.png differ diff --git a/mql5_experts_mt5/AdaptiveTrader Pro EA/indicator.png b/mql5_experts_mt5/AdaptiveTrader Pro EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AdaptiveTrader Pro EA/indicator.png differ diff --git a/mql5_experts_mt5/AdaptiveTrader Pro EA/library.png b/mql5_experts_mt5/AdaptiveTrader Pro EA/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/AdaptiveTrader Pro EA/library.png differ diff --git a/mql5_experts_mt5/AdaptiveTrader Pro EA/logo-2.png b/mql5_experts_mt5/AdaptiveTrader Pro EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AdaptiveTrader Pro EA/logo-2.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/65bb907b-b187.jpg b/mql5_experts_mt5/Advisor Based on RSI and Martingale/65bb907b-b187.jpg new file mode 100644 index 0000000..2747e7d Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/65bb907b-b187.jpg differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/668743C5-3EB9.jpg b/mql5_experts_mt5/Advisor Based on RSI and Martingale/668743C5-3EB9.jpg new file mode 100644 index 0000000..6a2b8c4 Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/668743C5-3EB9.jpg differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/README.md b/mql5_experts_mt5/Advisor Based on RSI and Martingale/README.md new file mode 100644 index 0000000..5bf8f35 --- /dev/null +++ b/mql5_experts_mt5/Advisor Based on RSI and Martingale/README.md @@ -0,0 +1,26 @@ +# Advisor Based on RSI and Martingale + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65bb907b-b187.jpg) +![Screenshot](668743C5-3EB9.jpg) +![Screenshot](RSI__1.png) + +## Files +- `rsijmartingale1.5.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/RSI__1.png b/mql5_experts_mt5/Advisor Based on RSI and Martingale/RSI__1.png new file mode 100644 index 0000000..b46421c Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/RSI__1.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/avatar_na2.png b/mql5_experts_mt5/Advisor Based on RSI and Martingale/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/avatar_na2.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/expert.png b/mql5_experts_mt5/Advisor Based on RSI and Martingale/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/expert.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/indicator.png b/mql5_experts_mt5/Advisor Based on RSI and Martingale/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/indicator.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/logo-2.png b/mql5_experts_mt5/Advisor Based on RSI and Martingale/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/logo-2.png differ diff --git a/mql5_experts_mt5/Advisor Based on RSI and Martingale/rsijmartingale1.5.mq5 b/mql5_experts_mt5/Advisor Based on RSI and Martingale/rsijmartingale1.5.mq5 new file mode 100644 index 0000000..536ea21 Binary files /dev/null and b/mql5_experts_mt5/Advisor Based on RSI and Martingale/rsijmartingale1.5.mq5 differ diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/Aeron_JJN_Scalper_EA.png b/mql5_experts_mt5/Aeron JJN Scalper EA/Aeron_JJN_Scalper_EA.png new file mode 100644 index 0000000..c864240 Binary files /dev/null and b/mql5_experts_mt5/Aeron JJN Scalper EA/Aeron_JJN_Scalper_EA.png differ diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/README.md b/mql5_experts_mt5/Aeron JJN Scalper EA/README.md new file mode 100644 index 0000000..badd86a --- /dev/null +++ b/mql5_experts_mt5/Aeron JJN Scalper EA/README.md @@ -0,0 +1,24 @@ +# Aeron JJN Scalper EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Aeron_JJN_Scalper_EA.png) + +## Files +- `aeron_jjn_scalper_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/aeron_jjn_scalper_ea.mq5 b/mql5_experts_mt5/Aeron JJN Scalper EA/aeron_jjn_scalper_ea.mq5 new file mode 100644 index 0000000..dd661f6 Binary files /dev/null and b/mql5_experts_mt5/Aeron JJN Scalper EA/aeron_jjn_scalper_ea.mq5 differ diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/expert.png b/mql5_experts_mt5/Aeron JJN Scalper EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Aeron JJN Scalper EA/expert.png differ diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/indicator.png b/mql5_experts_mt5/Aeron JJN Scalper EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Aeron JJN Scalper EA/indicator.png differ diff --git a/mql5_experts_mt5/Aeron JJN Scalper EA/logo-2.png b/mql5_experts_mt5/Aeron JJN Scalper EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Aeron JJN Scalper EA/logo-2.png differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/57E19E80-45F2.jpg b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/57E19E80-45F2.jpg new file mode 100644 index 0000000..6b79a78 Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/57E19E80-45F2.jpg differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/Alexav_D1_Profit_GBPUSD.png b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/Alexav_D1_Profit_GBPUSD.png new file mode 100644 index 0000000..3d17f69 Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/Alexav_D1_Profit_GBPUSD.png differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/README.md b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/README.md new file mode 100644 index 0000000..bd2f7f6 --- /dev/null +++ b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/README.md @@ -0,0 +1,25 @@ +# Alexav D1 Profit GBPUSD + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](57E19E80-45F2.jpg) +![Screenshot](Alexav_D1_Profit_GBPUSD.png) + +## Files +- `alexav_d1_profit_gbpusd.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/alexav_d1_profit_gbpusd.mq5 b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/alexav_d1_profit_gbpusd.mq5 new file mode 100644 index 0000000..1860f6f Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/alexav_d1_profit_gbpusd.mq5 differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/expert.png b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/expert.png differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/indicator.png b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/indicator.png differ diff --git a/mql5_experts_mt5/Alexav D1 Profit GBPUSD/logo-2.png b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Alexav D1 Profit GBPUSD/logo-2.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h06_34.png b/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h06_34.png new file mode 100644 index 0000000..7108019 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h06_34.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h10_33.png b/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h10_33.png new file mode 100644 index 0000000..7263b88 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/2018-03-07_09h10_33.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Alexav SpeedUp M1/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/README.md b/mql5_experts_mt5/Alexav SpeedUp M1/README.md new file mode 100644 index 0000000..9e36006 --- /dev/null +++ b/mql5_experts_mt5/Alexav SpeedUp M1/README.md @@ -0,0 +1,27 @@ +# Alexav SpeedUp M1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-03-07_09h06_34.png) +![Screenshot](2018-03-07_09h10_33.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](library.png) + +## Files +- `alexav_speedup_m1.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/alexav_speedup_m1.mq5 b/mql5_experts_mt5/Alexav SpeedUp M1/alexav_speedup_m1.mq5 new file mode 100644 index 0000000..f2a7b90 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/alexav_speedup_m1.mq5 differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/avatar_na2.png b/mql5_experts_mt5/Alexav SpeedUp M1/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/avatar_na2.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/expert.png b/mql5_experts_mt5/Alexav SpeedUp M1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/expert.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/indicator.png b/mql5_experts_mt5/Alexav SpeedUp M1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/indicator.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/library.png b/mql5_experts_mt5/Alexav SpeedUp M1/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/library.png differ diff --git a/mql5_experts_mt5/Alexav SpeedUp M1/logo-2.png b/mql5_experts_mt5/Alexav SpeedUp M1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Alexav SpeedUp M1/logo-2.png differ diff --git a/mql5_experts_mt5/All information about the symbol/All_information_about_the_symbol.png b/mql5_experts_mt5/All information about the symbol/All_information_about_the_symbol.png new file mode 100644 index 0000000..51450d1 Binary files /dev/null and b/mql5_experts_mt5/All information about the symbol/All_information_about_the_symbol.png differ diff --git a/mql5_experts_mt5/All information about the symbol/README.md b/mql5_experts_mt5/All information about the symbol/README.md new file mode 100644 index 0000000..5728f70 --- /dev/null +++ b/mql5_experts_mt5/All information about the symbol/README.md @@ -0,0 +1,24 @@ +# All information about the symbol + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](All_information_about_the_symbol.png) + +## Files +- `all_information_about_the_symbol.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/All information about the symbol/all_information_about_the_symbol.mq5 b/mql5_experts_mt5/All information about the symbol/all_information_about_the_symbol.mq5 new file mode 100644 index 0000000..39cd472 Binary files /dev/null and b/mql5_experts_mt5/All information about the symbol/all_information_about_the_symbol.mq5 differ diff --git a/mql5_experts_mt5/All information about the symbol/expert.png b/mql5_experts_mt5/All information about the symbol/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/All information about the symbol/expert.png differ diff --git a/mql5_experts_mt5/All information about the symbol/indicator.png b/mql5_experts_mt5/All information about the symbol/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/All information about the symbol/indicator.png differ diff --git a/mql5_experts_mt5/All information about the symbol/logo-2.png b/mql5_experts_mt5/All information about the symbol/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/All information about the symbol/logo-2.png differ diff --git a/mql5_experts_mt5/AlliHeik/5AC590C9-76B5.jpg b/mql5_experts_mt5/AlliHeik/5AC590C9-76B5.jpg new file mode 100644 index 0000000..6d9fa1c Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/5AC590C9-76B5.jpg differ diff --git a/mql5_experts_mt5/AlliHeik/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/AlliHeik/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/AlliHeik/AlliHeik_optimization.png b/mql5_experts_mt5/AlliHeik/AlliHeik_optimization.png new file mode 100644 index 0000000..d56671d Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/AlliHeik_optimization.png differ diff --git a/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Buy.png b/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Buy.png new file mode 100644 index 0000000..0f82750 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Buy.png differ diff --git a/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Sell.png b/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Sell.png new file mode 100644 index 0000000..2edef8f Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/AlliHeik_signal_Sell.png differ diff --git a/mql5_experts_mt5/AlliHeik/README.md b/mql5_experts_mt5/AlliHeik/README.md new file mode 100644 index 0000000..930b6c0 --- /dev/null +++ b/mql5_experts_mt5/AlliHeik/README.md @@ -0,0 +1,30 @@ +# AlliHeik + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5AC590C9-76B5.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](AlliHeik_optimization.png) +![Screenshot](AlliHeik_signal_Buy.png) +![Screenshot](AlliHeik_signal_Sell.png) +![Screenshot](cb-1__78.png) +![Screenshot](script.png) + +## Files +- `heiken_ashi_smoothed_oscillator.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AlliHeik/avatar_na2.png b/mql5_experts_mt5/AlliHeik/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/avatar_na2.png differ diff --git a/mql5_experts_mt5/AlliHeik/cb-1__78.png b/mql5_experts_mt5/AlliHeik/cb-1__78.png new file mode 100644 index 0000000..f282cea Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/cb-1__78.png differ diff --git a/mql5_experts_mt5/AlliHeik/expert.png b/mql5_experts_mt5/AlliHeik/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/expert.png differ diff --git a/mql5_experts_mt5/AlliHeik/heiken_ashi_smoothed_oscillator.mq5 b/mql5_experts_mt5/AlliHeik/heiken_ashi_smoothed_oscillator.mq5 new file mode 100644 index 0000000..80788b0 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/heiken_ashi_smoothed_oscillator.mq5 differ diff --git a/mql5_experts_mt5/AlliHeik/indicator.png b/mql5_experts_mt5/AlliHeik/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/indicator.png differ diff --git a/mql5_experts_mt5/AlliHeik/logo-2.png b/mql5_experts_mt5/AlliHeik/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/logo-2.png differ diff --git a/mql5_experts_mt5/AlliHeik/script.png b/mql5_experts_mt5/AlliHeik/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/AlliHeik/script.png differ diff --git a/mql5_experts_mt5/Alligator Simple v1.0/2018-10-16_09h53_24.png b/mql5_experts_mt5/Alligator Simple v1.0/2018-10-16_09h53_24.png new file mode 100644 index 0000000..407ce58 Binary files /dev/null and b/mql5_experts_mt5/Alligator Simple v1.0/2018-10-16_09h53_24.png differ diff --git a/mql5_experts_mt5/Alligator Simple v1.0/README.md b/mql5_experts_mt5/Alligator Simple v1.0/README.md new file mode 100644 index 0000000..df99f81 --- /dev/null +++ b/mql5_experts_mt5/Alligator Simple v1.0/README.md @@ -0,0 +1,24 @@ +# Alligator Simple v1.0 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-10-16_09h53_24.png) + +## Files +- `alligator_simple_v1.0.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Alligator Simple v1.0/alligator_simple_v1.0.mq5 b/mql5_experts_mt5/Alligator Simple v1.0/alligator_simple_v1.0.mq5 new file mode 100644 index 0000000..2166e25 Binary files /dev/null and b/mql5_experts_mt5/Alligator Simple v1.0/alligator_simple_v1.0.mq5 differ diff --git a/mql5_experts_mt5/Alligator Simple v1.0/expert.png b/mql5_experts_mt5/Alligator Simple v1.0/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Alligator Simple v1.0/expert.png differ diff --git a/mql5_experts_mt5/Alligator Simple v1.0/indicator.png b/mql5_experts_mt5/Alligator Simple v1.0/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Alligator Simple v1.0/indicator.png differ diff --git a/mql5_experts_mt5/Alligator Simple v1.0/logo-2.png b/mql5_experts_mt5/Alligator Simple v1.0/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Alligator Simple v1.0/logo-2.png differ diff --git a/mql5_experts_mt5/Alligator/5A341D3C-9040.JPG b/mql5_experts_mt5/Alligator/5A341D3C-9040.JPG new file mode 100644 index 0000000..28de7ac Binary files /dev/null and b/mql5_experts_mt5/Alligator/5A341D3C-9040.JPG differ diff --git a/mql5_experts_mt5/Alligator/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Alligator/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Alligator/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Alligator/Alligator_BUY.png b/mql5_experts_mt5/Alligator/Alligator_BUY.png new file mode 100644 index 0000000..b263155 Binary files /dev/null and b/mql5_experts_mt5/Alligator/Alligator_BUY.png differ diff --git a/mql5_experts_mt5/Alligator/Alligator_SELL.png b/mql5_experts_mt5/Alligator/Alligator_SELL.png new file mode 100644 index 0000000..c260d24 Binary files /dev/null and b/mql5_experts_mt5/Alligator/Alligator_SELL.png differ diff --git a/mql5_experts_mt5/Alligator/Alligator_Tester.png b/mql5_experts_mt5/Alligator/Alligator_Tester.png new file mode 100644 index 0000000..b5c32f9 Binary files /dev/null and b/mql5_experts_mt5/Alligator/Alligator_Tester.png differ diff --git a/mql5_experts_mt5/Alligator/README.md b/mql5_experts_mt5/Alligator/README.md new file mode 100644 index 0000000..ea72c77 --- /dev/null +++ b/mql5_experts_mt5/Alligator/README.md @@ -0,0 +1,28 @@ +# Alligator + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5A341D3C-9040.JPG) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Alligator_BUY.png) +![Screenshot](Alligator_SELL.png) +![Screenshot](Alligator_Tester.png) + +## Files +- `alligator.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Alligator/alligator.mq5 b/mql5_experts_mt5/Alligator/alligator.mq5 new file mode 100644 index 0000000..963f660 Binary files /dev/null and b/mql5_experts_mt5/Alligator/alligator.mq5 differ diff --git a/mql5_experts_mt5/Alligator/expert.png b/mql5_experts_mt5/Alligator/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Alligator/expert.png differ diff --git a/mql5_experts_mt5/Alligator/logo-2.png b/mql5_experts_mt5/Alligator/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Alligator/logo-2.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_H1.png b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_H1.png new file mode 100644 index 0000000..8c82ad0 Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_H1.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_M15.png b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_M15.png new file mode 100644 index 0000000..0430b22 Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_EURUSD_M15.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_H1.png b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_H1.png new file mode 100644 index 0000000..320fb36 Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_H1.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_M15.png b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_M15.png new file mode 100644 index 0000000..fc3181e Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/Altarius_RSI_Stohastic_USDJPY_M15.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/README.md b/mql5_experts_mt5/Altarius RSI Stohastic/README.md new file mode 100644 index 0000000..960333f --- /dev/null +++ b/mql5_experts_mt5/Altarius RSI Stohastic/README.md @@ -0,0 +1,27 @@ +# Altarius RSI Stohastic + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Altarius_RSI_Stohastic_EURUSD_H1.png) +![Screenshot](Altarius_RSI_Stohastic_EURUSD_M15.png) +![Screenshot](Altarius_RSI_Stohastic_USDJPY_H1.png) +![Screenshot](Altarius_RSI_Stohastic_USDJPY_M15.png) + +## Files +- `altarius_rsi_stohastic.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/altarius_rsi_stohastic.mq5 b/mql5_experts_mt5/Altarius RSI Stohastic/altarius_rsi_stohastic.mq5 new file mode 100644 index 0000000..83c3bdb Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/altarius_rsi_stohastic.mq5 differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/expert.png b/mql5_experts_mt5/Altarius RSI Stohastic/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/expert.png differ diff --git a/mql5_experts_mt5/Altarius RSI Stohastic/logo-2.png b/mql5_experts_mt5/Altarius RSI Stohastic/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Altarius RSI Stohastic/logo-2.png differ diff --git a/mql5_experts_mt5/Ambush/Ambush_EURUSDuM1.png b/mql5_experts_mt5/Ambush/Ambush_EURUSDuM1.png new file mode 100644 index 0000000..2a6568f Binary files /dev/null and b/mql5_experts_mt5/Ambush/Ambush_EURUSDuM1.png differ diff --git a/mql5_experts_mt5/Ambush/README.md b/mql5_experts_mt5/Ambush/README.md new file mode 100644 index 0000000..e6666c5 --- /dev/null +++ b/mql5_experts_mt5/Ambush/README.md @@ -0,0 +1,24 @@ +# Ambush + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Ambush_EURUSDuM1.png) + +## Files +- `ambush.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Ambush/ambush.mq5 b/mql5_experts_mt5/Ambush/ambush.mq5 new file mode 100644 index 0000000..4599890 Binary files /dev/null and b/mql5_experts_mt5/Ambush/ambush.mq5 differ diff --git a/mql5_experts_mt5/Ambush/expert.png b/mql5_experts_mt5/Ambush/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Ambush/expert.png differ diff --git a/mql5_experts_mt5/Ambush/logo-2.png b/mql5_experts_mt5/Ambush/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Ambush/logo-2.png differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/5920C545-5DFD.jpg b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/5920C545-5DFD.jpg new file mode 100644 index 0000000..89673b5 Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/5920C545-5DFD.jpg differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/README.md b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/README.md new file mode 100644 index 0000000..e43d082 --- /dev/null +++ b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/README.md @@ -0,0 +1,25 @@ +# An abstract trading robot, an OOP pattern + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5920C545-5DFD.jpg) +![Screenshot](library.png) + +## Files +- `pattern.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/expert.png b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/expert.png differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/indicator.png b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/indicator.png differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/library.png b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/library.png differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/logo-2.png b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/logo-2.png differ diff --git a/mql5_experts_mt5/An abstract trading robot, an OOP pattern/pattern.mq5 b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/pattern.mq5 new file mode 100644 index 0000000..a96a0d8 Binary files /dev/null and b/mql5_experts_mt5/An abstract trading robot, an OOP pattern/pattern.mq5 differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Angry Bird (Scalping)/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/README.md b/mql5_experts_mt5/Angry Bird (Scalping)/README.md new file mode 100644 index 0000000..f028717 --- /dev/null +++ b/mql5_experts_mt5/Angry Bird (Scalping)/README.md @@ -0,0 +1,25 @@ +# Angry Bird (Scalping) + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](library.png) + +## Files +- `angry_bird_vscalpingh.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/angry_bird_vscalpingh.mq5 b/mql5_experts_mt5/Angry Bird (Scalping)/angry_bird_vscalpingh.mq5 new file mode 100644 index 0000000..ac88827 Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/angry_bird_vscalpingh.mq5 differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/avatar_na2.png b/mql5_experts_mt5/Angry Bird (Scalping)/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/avatar_na2.png differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/expert.png b/mql5_experts_mt5/Angry Bird (Scalping)/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/expert.png differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/indicator.png b/mql5_experts_mt5/Angry Bird (Scalping)/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/indicator.png differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/library.png b/mql5_experts_mt5/Angry Bird (Scalping)/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/library.png differ diff --git a/mql5_experts_mt5/Angry Bird (Scalping)/logo-2.png b/mql5_experts_mt5/Angry Bird (Scalping)/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Angry Bird (Scalping)/logo-2.png differ diff --git a/mql5_experts_mt5/Anubis/README.md b/mql5_experts_mt5/Anubis/README.md new file mode 100644 index 0000000..2b066a6 --- /dev/null +++ b/mql5_experts_mt5/Anubis/README.md @@ -0,0 +1,23 @@ +# Anubis + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `anubis.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Anubis/anubis.mq5 b/mql5_experts_mt5/Anubis/anubis.mq5 new file mode 100644 index 0000000..09a1289 Binary files /dev/null and b/mql5_experts_mt5/Anubis/anubis.mq5 differ diff --git a/mql5_experts_mt5/Anubis/expert.png b/mql5_experts_mt5/Anubis/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Anubis/expert.png differ diff --git a/mql5_experts_mt5/Anubis/logo-2.png b/mql5_experts_mt5/Anubis/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Anubis/logo-2.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/647a2180-1856.png b/mql5_experts_mt5/Arbitrage Synthetic/647a2180-1856.png new file mode 100644 index 0000000..39b0f6c Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/647a2180-1856.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/README.md b/mql5_experts_mt5/Arbitrage Synthetic/README.md new file mode 100644 index 0000000..90e2542 --- /dev/null +++ b/mql5_experts_mt5/Arbitrage Synthetic/README.md @@ -0,0 +1,25 @@ +# Arbitrage Synthetic + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](647a2180-1856.png) +![Screenshot](snip_20180102161014.png) + +## Files +- `arbsint.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Arbitrage Synthetic/arbsint.mq5 b/mql5_experts_mt5/Arbitrage Synthetic/arbsint.mq5 new file mode 100644 index 0000000..ea9f09a Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/arbsint.mq5 differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/avatar_na2.png b/mql5_experts_mt5/Arbitrage Synthetic/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/avatar_na2.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/expert.png b/mql5_experts_mt5/Arbitrage Synthetic/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/expert.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/indicator.png b/mql5_experts_mt5/Arbitrage Synthetic/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/indicator.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/logo-2.png b/mql5_experts_mt5/Arbitrage Synthetic/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/logo-2.png differ diff --git a/mql5_experts_mt5/Arbitrage Synthetic/snip_20180102161014.png b/mql5_experts_mt5/Arbitrage Synthetic/snip_20180102161014.png new file mode 100644 index 0000000..9040c3e Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Synthetic/snip_20180102161014.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/6078E99A-355C.jpg b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/6078E99A-355C.jpg new file mode 100644 index 0000000..389473f Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/6078E99A-355C.jpg differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/63d3fe27-7289.jpg b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/63d3fe27-7289.jpg new file mode 100644 index 0000000..a253c18 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/63d3fe27-7289.jpg differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/66aa01cf-578a.jpg b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/66aa01cf-578a.jpg new file mode 100644 index 0000000..1d6d9d6 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/66aa01cf-578a.jpg differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/67a6ff9d-2779.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/67a6ff9d-2779.png new file mode 100644 index 0000000..ce0cfc7 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/67a6ff9d-2779.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/README.md b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/README.md new file mode 100644 index 0000000..4fc9c4d --- /dev/null +++ b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/README.md @@ -0,0 +1,29 @@ +# Arbitrage Triangle EURGBP-EURUSD-GBPUSD + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](6078E99A-355C.jpg) +![Screenshot](63d3fe27-7289.jpg) +![Screenshot](66aa01cf-578a.jpg) +![Screenshot](67a6ff9d-2779.png) +![Screenshot](arbitragevid_iTime_0_00_05h12d.png) +![Screenshot](script.png) + +## Files +- `arbitrage.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitrage.mq5 b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitrage.mq5 new file mode 100644 index 0000000..aad4734 --- /dev/null +++ b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitrage.mq5 @@ -0,0 +1,178 @@ +#property copyright "Copyright 2023, MetaQuotes Ltd." +#property link "https://www.mql5.com" +#property version "1.00" +#include // Include the Trade library for trading operations + +CTrade Trade; // Create a trading object for executing trades + +// Input variables to customize the EA's behavior +input double Lot_Size_Per_Thousand = 0.01; // Lot size per thousand dollars of account balance +input double Total_Commission_for_Lot_Traded = 7.0; // Total commission per lot traded +input bool Plot_Max_Difference = false; // Flag to control plotting of maximum price difference + +// Initialization function called when the EA is loaded +int OnInit() +{ + return INIT_SUCCEEDED; // Return initialization succeeded signal +} + +// Deinitialization function called when the EA is removed or the chart is closed +void OnDeinit(const int reason) +{ + // Clean-up code would go here +} + +// Main function called on every new tick of price data +void OnTick() +{ + // Calculate price ratios for arbitrage calculations + double EURUSDaskGBPUSDbid = SymbolInfoDouble("EURUSD", SYMBOL_ASK) / SymbolInfoDouble("GBPUSD", SYMBOL_BID); + double EURGBPask = SymbolInfoDouble("EURGBP", SYMBOL_ASK); + double EURUSDbidGBPUSDask = SymbolInfoDouble("EURUSD", SYMBOL_BID) / SymbolInfoDouble("GBPUSD", SYMBOL_ASK); + double EURGBPbid = SymbolInfoDouble("EURGBP", SYMBOL_BID); + + // Track and log the largest price difference if plotting is enabled + static double biggest = 0.0; + if(MathAbs(EURUSDaskGBPUSDbid - EURGBPask) > biggest && Plot_Max_Difference) + { + biggest = MathAbs(EURUSDaskGBPUSDbid - EURGBPask); + PrintFormat("Biggest Difference in points: %.5lf", biggest); + PrintFormat("Needed: %.5lf", _Point + Round(3*Total_Commission_for_Lot_Traded*_Point + SymbolInfoInteger("EURUSD", SYMBOL_SPREAD)*_Point + SymbolInfoInteger("GBPUSD", SYMBOL_SPREAD)*_Point + SymbolInfoInteger("EURGBP", SYMBOL_SPREAD)*_Point, _Digits)); + } + + // Check for an arbitrage opportunity to sell EURGBP + if(EURUSDaskGBPUSDbid - EURGBPask > _Point + Round(3*Total_Commission_for_Lot_Traded*_Point + SymbolInfoInteger("EURUSD", SYMBOL_SPREAD)*_Point + SymbolInfoInteger("GBPUSD", SYMBOL_SPREAD)*_Point + SymbolInfoInteger("EURGBP", SYMBOL_SPREAD)*_Point, _Digits)) + { + CloseNegSide(); // Close negative side of trades + if(!PositionsTotal()) // Check if there are no open positions + { + // calculate Volume + double Vol = MathMin(RoundtoLots(AccountInfoDouble(ACCOUNT_BALANCE) / 1000 * Lot_Size_Per_Thousand), SymbolInfoDouble("EURGBP", SYMBOL_VOLUME_MAX)); + Trade.Sell(Vol, "EURUSD"); + Trade.Buy(Vol, "GBPUSD"); + Trade.Buy(Vol, "EURGBP"); + } + } + + // Check for an arbitrage opportunity to buy EURGBP + if(EURUSDbidGBPUSDask - EURGBPbid < -_Point + Round(-3*Total_Commission_for_Lot_Traded*_Point - SymbolInfoInteger("EURUSD", SYMBOL_SPREAD)*_Point - SymbolInfoInteger("GBPUSD", SYMBOL_SPREAD)*_Point - SymbolInfoInteger("EURGBP", SYMBOL_SPREAD)*_Point, _Digits)) + { + ClosePosSide(); // Close positive side of trades + if(!PositionsTotal()) // Check if there are no open positions + { + // calculate Volume + double Vol = MathMin(RoundtoLots(AccountInfoDouble(ACCOUNT_BALANCE) / 1000 * Lot_Size_Per_Thousand), SymbolInfoDouble("EURGBP", SYMBOL_VOLUME_MAX)); + Trade.Buy(Vol, "EURUSD"); + Trade.Sell(Vol, "GBPUSD"); + Trade.Sell(Vol, "EURGBP"); + } + } +} + + +// Function to close the positive side: EURGBP GBPUSD Buy and EURUSD Sell positions +void ClosePosSide() +{ + // Iterate over all open positions + for(int i = 0; i < PositionsTotal(); i++) + { + // Select each position by its ticket number + if(PositionSelectByTicket(PositionGetTicket(i))) + { + // Get the type of the position (Buy/Sell) + ENUM_POSITION_TYPE Type = (ENUM_POSITION_TYPE) PositionGetInteger(POSITION_TYPE); + // Get the symbol of the position + string symb = PositionGetString(POSITION_SYMBOL); + // Close buy positions for GBPUSD or EURGBP + if(Type == POSITION_TYPE_BUY && (symb == "GBPUSD" || symb == "EURGBP")) + Trade.PositionClose(PositionGetTicket(i)); + // Close sell positions for EURUSD + if(Type == POSITION_TYPE_SELL && symb == "EURUSD") + Trade.PositionClose(PositionGetTicket(i)); + } + } +} + +// Function to close the negative side: EURGBP GBPUSD Sell and EURUSD Buy positions +void CloseNegSide() +{ + // Iterate over all open positions + for(int i = 0; i < PositionsTotal(); i++) + { + // Select each position by its ticket number + if(PositionSelectByTicket(PositionGetTicket(i))) + { + // Get the type of the position (Buy/Sell) + ENUM_POSITION_TYPE Type = (ENUM_POSITION_TYPE) PositionGetInteger(POSITION_TYPE); + // Get the symbol of the position + string symb = PositionGetString(POSITION_SYMBOL); + // Close sell positions for GBPUSD or EURGBP + if(Type == POSITION_TYPE_SELL && (symb == "GBPUSD" || symb == "EURGBP")) + Trade.PositionClose(PositionGetTicket(i)); + // Close buy positions for EURUSD + if(Type == POSITION_TYPE_BUY && symb == "EURUSD") + Trade.PositionClose(PositionGetTicket(i)); + } + } +} + +// Function to round a value to valid lot size +double RoundtoLots(double Val, bool down = false) +{ + // Round up by default + if(!down) + { + // Round according to the lot step size of the symbol + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.01) + return Round(Val, 2); + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.1) + return Round(Val, 1); + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.001) + return Round(Val, 3); + return Round(Val, 0); + } + // Round down when specified + else + { + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.01) + return RoundDown(Round(Val, 4), 2); + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.1) + return RoundDown(Round(Val, 3), 1); + if(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) == 0.001) + return RoundDown(Round(Val, 5), 3); + return RoundDown(Round(Val, 2), 0); + } +} + +// Generic function to round a value to a specified number of decimal places +double Round(double value, int decimals) +{ + // Validate input + if (decimals < 0) + { + Print("Wrong decimals input parameter, parameter can't be below 0"); + return 0; + } + double timesten = value * MathPow(10, decimals); + timesten = MathRound(timesten); + double truevalue = timesten / MathPow(10, decimals); + return truevalue; +} + +// Function to round a value up to a specified number of decimal places +double RoundUp(double val, int decim) +{ + if(Round(val, decim) < val) + return Round(val, decim) + MathPow(10, -decim); + else + return Round(val, decim); +} + +// Function to round a value down to a specified number of decimal places +double RoundDown(double val, int decim) +{ + if(Round(val, decim) > val) + return Round(val, decim) - MathPow(10, -decim); + else + return Round(val, decim); +} \ No newline at end of file diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitragevid_iTime_0_00_05h12d.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitragevid_iTime_0_00_05h12d.png new file mode 100644 index 0000000..cc4fa26 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/arbitragevid_iTime_0_00_05h12d.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/avatar_na2.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/avatar_na2.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/expert.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/expert.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/indicator.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/indicator.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/logo-2.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/logo-2.png differ diff --git a/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/script.png b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Arbitrage Triangle EURGBP-EURUSD-GBPUSD/script.png differ diff --git a/mql5_experts_mt5/Area MACD/Area_MACD_Lot.png b/mql5_experts_mt5/Area MACD/Area_MACD_Lot.png new file mode 100644 index 0000000..35f4679 Binary files /dev/null and b/mql5_experts_mt5/Area MACD/Area_MACD_Lot.png differ diff --git a/mql5_experts_mt5/Area MACD/Area_MACD_Risk.png b/mql5_experts_mt5/Area MACD/Area_MACD_Risk.png new file mode 100644 index 0000000..9e65c36 Binary files /dev/null and b/mql5_experts_mt5/Area MACD/Area_MACD_Risk.png differ diff --git a/mql5_experts_mt5/Area MACD/README.md b/mql5_experts_mt5/Area MACD/README.md new file mode 100644 index 0000000..9788ebd --- /dev/null +++ b/mql5_experts_mt5/Area MACD/README.md @@ -0,0 +1,25 @@ +# Area MACD + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Area_MACD_Lot.png) +![Screenshot](Area_MACD_Risk.png) + +## Files +- `area_macd.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Area MACD/area_macd.mq5 b/mql5_experts_mt5/Area MACD/area_macd.mq5 new file mode 100644 index 0000000..f3c6963 Binary files /dev/null and b/mql5_experts_mt5/Area MACD/area_macd.mq5 differ diff --git a/mql5_experts_mt5/Area MACD/expert.png b/mql5_experts_mt5/Area MACD/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Area MACD/expert.png differ diff --git a/mql5_experts_mt5/Area MACD/indicator.png b/mql5_experts_mt5/Area MACD/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Area MACD/indicator.png differ diff --git a/mql5_experts_mt5/Area MACD/logo-2.png b/mql5_experts_mt5/Area MACD/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Area MACD/logo-2.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_28__1.png b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_28__1.png new file mode 100644 index 0000000..fb9421a Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_28__1.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_50__1.png b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_50__1.png new file mode 100644 index 0000000..d22e0c3 Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h51_50__1.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h52_13__1.png b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h52_13__1.png new file mode 100644 index 0000000..7376dd0 Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/2020-06-16_06h52_13__1.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/6514D8FA-D3A9.png b/mql5_experts_mt5/Arrows and Curves EA/6514D8FA-D3A9.png new file mode 100644 index 0000000..5ee5cf9 Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/6514D8FA-D3A9.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Arrows and Curves EA/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/Arrows7Curves.png b/mql5_experts_mt5/Arrows and Curves EA/Arrows7Curves.png new file mode 100644 index 0000000..474c65c Binary files /dev/null and b/mql5_experts_mt5/Arrows and Curves EA/Arrows7Curves.png differ diff --git a/mql5_experts_mt5/Arrows and Curves EA/README.md b/mql5_experts_mt5/Arrows and Curves EA/README.md new file mode 100644 index 0000000..f740400 --- /dev/null +++ b/mql5_experts_mt5/Arrows and Curves EA/README.md @@ -0,0 +1,29 @@ +# Arrows and Curves EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2020-06-16_06h51_28__1.png) +![Screenshot](2020-06-16_06h51_50__1.png) +![Screenshot](2020-06-16_06h52_13__1.png) +![Screenshot](6514D8FA-D3A9.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Arrows7Curves.png) + +## Files +- `arrows_curves.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Arrows and Curves EA/arrows_curves.mq5 b/mql5_experts_mt5/Arrows and Curves EA/arrows_curves.mq5 new file mode 100644 index 0000000..0581ab2 --- /dev/null +++ b/mql5_experts_mt5/Arrows and Curves EA/arrows_curves.mq5 @@ -0,0 +1,377 @@ +//+------------------------------------------------------------------+ +//| Arrows&Curves.mq5 | +//| Copyright © 2007, Ëóêàűóê Âèêòîđ Ăćííàäüćâèś aka lukas1 | +//| lukas1@ngs.ru | +//+------------------------------------------------------------------+ +//---- àâòîđńòâî èíäèêàòîđà +#property copyright "Copyright © 2007, Ëóêàűóê Âèêòîđ Ăćííàäüćâèś aka lukas1" +//---- ńńûëêà íà ńàéò àâòîđà +#property link "lukas1@ngs.ru" +//---- íîìćđ âćđńèè èíäèêàòîđà +#property version "1.00" +//---- îòđèńîâêà èíäèêàòîđà â ăëàâíîì îêíć +#property indicator_chart_window +//---- äëÿ đàńśćòà è îòđèńîâêè èíäèêàòîđà èńïîëüçîâàíî âîńćìü áóôćđîâ +#property indicator_buffers 8 +//---- èńïîëüçîâàíî âńćăî âîńćìü ăđàôèśćńêèő ïîńòđîćíèé +#property indicator_plots 8 +//+----------------------------------------------+ +//| Ïàđàìćòđû îòđèńîâêè ìćäâćæüćăî èíäèêàòîđà | +//+----------------------------------------------+ +//---- îòđèńîâêà èíäèêàòîđà 1 â âèäć ńèìâîëà +#property indicator_type1 DRAW_ARROW +//---- â êàśćńòâć öâćòà ìćäâćæüćé ëèíèè èíäèêàòîđà èńïîëüçîâàí đîçîâûé öâćò +#property indicator_color1 Magenta +//---- òîëùèíà ëèíèè èíäèêàòîđà 1 đàâíà 4 +#property indicator_width1 4 +//---- îòîáđàæćíèć ìćòêè ìćäâćæüćé ëèíèè èíäèêàòîđà +#property indicator_label1 "Sell" +//+----------------------------------------------+ +//| Ïàđàìćòđû îòđèńîâêè áûśüăî èíäèêàòîđà | +//+----------------------------------------------+ +//---- îòđèńîâêà èíäèêàòîđà 2 â âèäć ńèìâîëà +#property indicator_type2 DRAW_ARROW +//---- â êàśćńòâć öâćòà áûśćé ëèíèè èíäèêàòîđà èńïîëüçîâàí çćëćíûé öâćò +#property indicator_color2 Lime +//---- òîëùèíà ëèíèè èíäèêàòîđà 2 đàâíà 4 +#property indicator_width2 4 +//---- îòîáđàæćíèć ìćòêè áûśüćé ëèíèè èíäèêàòîđà +#property indicator_label2 "Buy" +//+----------------------------------------------+ +//| Ïàđàìćòđû îòđèńîâêè ìćäâćæüćăî èíäèêàòîđà | +//+----------------------------------------------+ +//---- îòđèńîâêà èíäèêàòîđà 3 â âèäć ńèìâîëà +#property indicator_type3 DRAW_ARROW +//---- â êàśćńòâć öâćòà ìćäâćæüćé ëèíèè èíäèêàòîđà èńïîëüçîâàí đîçîâûé öâćò +#property indicator_color3 Magenta +//---- òîëùèíà ëèíèè èíäèêàòîđà 3 đàâíà 4 +#property indicator_width3 4 +//---- îòîáđàæćíèć ìćòêè ìćäâćæüćé ëèíèè èíäèêàòîđà +#property indicator_label3 "SellStop" +//+----------------------------------------------+ +//| Ïàđàìćòđû îòđèńîâêè áûśüăî èíäèêàòîđà | +//+----------------------------------------------+ +//---- îòđèńîâêà èíäèêàòîđà 4 â âèäć ńèìâîëà +#property indicator_type4 DRAW_ARROW +//---- â êàśćńòâć öâćòà áûśćé ëèíèè èíäèêàòîđà èńïîëüçîâàí çćëćíûé öâćò +#property indicator_color4 Lime +//---- òîëùèíà ëèíèè èíäèêàòîđà 4 đàâíà 4 +#property indicator_width4 4 +//---- îòîáđàæćíèć ìćòêè áûśüćé ëèíèè èíäèêàòîđà +#property indicator_label4 "BuyStop" +//+--------------------------------------------+ +//| Ïàđàìćòđû îòđèńîâêè óđîâíćé èíäèêàòîđà | +//+--------------------------------------------+ +//---- îòđèńîâêà óđîâíćé â âèäć ëèíèé +#property indicator_type5 DRAW_LINE +#property indicator_type6 DRAW_LINE +#property indicator_type7 DRAW_LINE +#property indicator_type8 DRAW_LINE +//---- â êàśćńòâć öâćòîâ óđîâíćé śćòûđć öâćòà +#property indicator_color5 Orange +#property indicator_color6 MediumSeaGreen +#property indicator_color7 MediumSeaGreen +#property indicator_color8 Orange +//---- óđîâíè Áîëëèíäæćđà - űòđèőïóíêòèđíûć êđèâûć +#property indicator_style5 STYLE_DASHDOTDOT +#property indicator_style6 STYLE_DASHDOTDOT +#property indicator_style7 STYLE_DASHDOTDOT +#property indicator_style8 STYLE_DASHDOTDOT +//---- òîëùèíà óđîâíćé Áîëëèíäæćđà đàâíà 1 +#property indicator_width5 1 +#property indicator_width6 1 +#property indicator_width7 1 +#property indicator_width8 1 +//---- îòîáđàæćíèć ìćòîê óđîâíćé Áîëëèíäæćđà +#property indicator_label5 "BUY from here" +#property indicator_label6 "BuyStop" +#property indicator_label7 "SellStop" +#property indicator_label8 "SELL from here" + +//+----------------------------------------------+ +//| Âőîäíûć ïàđàìćòđû èíäèêàòîđà | +//+----------------------------------------------+ +input int SSP = 20; //ïćđèîä ëèíćéíîăî đàçâîđîòà èíäèêàòîđà +input int Channel = 0; //óìćíüűćíèć äèàïàçîíà êàíàëà. Ä.á. â äèàïàçîíć 0-50 +input int Ch_Stop = 30; //óìćíüűćíèć ńòîïîâîăî êàíàëà (ńóììèđóćòńÿ ń îńíîâíûì) +input int relay = 10; //ńìćùćíèć ëèíèé âăëóáü èńòîđèè íà 4 áàđà +//+----------------------------------------------+ + +//---- îáúÿâëćíèć äèíàìèśćńêèő ìàńńèâîâ, êîòîđûć áóäóò +//---- â äàëüíćéűćì èńïîëüçîâàíû â êàśćńòâć èíäèêàòîđíûő áóôćđîâ +double BuyBuffer[]; +double SellBuffer[]; +double HBuffer[]; +double LBuffer[]; +double HSBuffer[]; +double LSBuffer[]; +double BuyStopBuffer[],SellStopBuffer[]; +//--- +int StartBars; +bool uptrend_,old_,uptrend2_,old2_; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +void OnInit() + { +//---- èíèöèàëèçàöèÿ ăëîáàëüíûő ïćđćìćííûő + StartBars=SSP+1+relay; + +//---- ïđćâđàùćíèć äèíàìèśćńêîăî ìàńńèâà â èíäèêàòîđíûé áóôćđ + SetIndexBuffer(0,SellBuffer,INDICATOR_DATA); +//---- îńóùćńòâëćíèć ńäâèăà íàśàëà îòńśćòà îòđèńîâêè èíäèêàòîđà 1 + PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartBars); +//--- ńîçäàíèć ìćòêè äëÿ îòîáđàæćíèÿ â DataWindow + PlotIndexSetString(0,PLOT_LABEL,"Sell"); +//---- ńèìâîë äëÿ èíäèêàòîđà + PlotIndexSetInteger(0,PLOT_ARROW,108); +//---- èíäćêńàöèÿ ęëćìćíòîâ â áóôćđć êàê â òàéìńćđèè + ArraySetAsSeries(SellBuffer,true); +//---- çàïđćò íà îòđèńîâêó èíäèêàòîđîì ïóńòûő çíàśćíèé + PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); + +//---- ïđćâđàùćíèć äèíàìèśćńêîăî ìàńńèâà â èíäèêàòîđíûé áóôćđ + SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA); +//---- îńóùćńòâëćíèć ńäâèăà íàśàëà îòńśćòà îòđèńîâêè èíäèêàòîđà 2 + PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,StartBars); +//--- ńîçäàíèć ìćòêè äëÿ îòîáđàæćíèÿ â DataWindow + PlotIndexSetString(1,PLOT_LABEL,"Buy"); +//---- ńèìâîë äëÿ èíäèêàòîđà + PlotIndexSetInteger(1,PLOT_ARROW,108); +//---- èíäćêńàöèÿ ęëćìćíòîâ â áóôćđć êàê â òàéìńćđèè + ArraySetAsSeries(BuyBuffer,true); +//---- çàïđćò íà îòđèńîâêó èíäèêàòîđîì ïóńòûő çíàśćíèé + PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); + +//---- ïđćâđàùćíèć äèíàìèśćńêîăî ìàńńèâà â èíäèêàòîđíûé áóôćđ + SetIndexBuffer(2,SellStopBuffer,INDICATOR_DATA); +//---- îńóùćńòâëćíèć ńäâèăà íàśàëà îòńśćòà îòđèńîâêè èíäèêàòîđà 3 + PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,StartBars); +//--- ńîçäàíèć ìćòêè äëÿ îòîáđàæćíèÿ â DataWindow + PlotIndexSetString(2,PLOT_LABEL,"SellStop"); +//---- ńèìâîë äëÿ èíäèêàòîđà + PlotIndexSetInteger(2,PLOT_ARROW,251); +//---- èíäćêńàöèÿ ęëćìćíòîâ â áóôćđć êàê â òàéìńćđèè + ArraySetAsSeries(SellStopBuffer,true); +//---- çàïđćò íà îòđèńîâêó èíäèêàòîđîì ïóńòûő çíàśćíèé + PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0); + +//---- ïđćâđàùćíèć äèíàìèśćńêîăî ìàńńèâà â èíäèêàòîđíûé áóôćđ + SetIndexBuffer(3,BuyStopBuffer,INDICATOR_DATA); +//---- îńóùćńòâëćíèć ńäâèăà íàśàëà îòńśćòà îòđèńîâêè èíäèêàòîđà 4 + PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,StartBars); +//--- ńîçäàíèć ìćòêè äëÿ îòîáđàæćíèÿ â DataWindow + PlotIndexSetString(3,PLOT_LABEL,"BuyStop"); +//---- ńèìâîë äëÿ èíäèêàòîđà + PlotIndexSetInteger(3,PLOT_ARROW,251); +//---- èíäćêńàöèÿ ęëćìćíòîâ â áóôćđć êàê â òàéìńćđèè + ArraySetAsSeries(BuyStopBuffer,true); +//---- çàïđćò íà îòđèńîâêó èíäèêàòîđîì ïóńòûő çíàśćíèé + PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0); + +//---- ïđćâđàùćíèć äèíàìèśćńêèő ìàńńèâîâ â èíäèêàòîđíûć áóôćđû + SetIndexBuffer(4,HBuffer,INDICATOR_DATA); + SetIndexBuffer(5,HSBuffer,INDICATOR_DATA); + SetIndexBuffer(6,LSBuffer,INDICATOR_DATA); + SetIndexBuffer(7,LBuffer,INDICATOR_DATA); +//---- óńòàíîâêà ïîçèöèè, ń êîòîđîé íàśèíàćòńÿ îòđèńîâêà óđîâíćé Áîëëèíäæćđà + PlotIndexSetInteger(4,PLOT_DRAW_BEGIN,StartBars); + PlotIndexSetInteger(5,PLOT_DRAW_BEGIN,StartBars); + PlotIndexSetInteger(6,PLOT_DRAW_BEGIN,StartBars); + PlotIndexSetInteger(7,PLOT_DRAW_BEGIN,StartBars); +//---- ńîçäàíèć ìćòîê äëÿ îòîáđàæćíèÿ â Îêíć äàííûő + PlotIndexSetString(4,PLOT_LABEL,"BUY from here"); + PlotIndexSetString(5,PLOT_LABEL,"BuyStop"); + PlotIndexSetString(6,PLOT_LABEL,"SellStop"); + PlotIndexSetString(7,PLOT_LABEL,"SELL from here"); +//---- çàïđćò íà îòđèńîâêó èíäèêàòîđîì ïóńòûő çíàśćíèé + PlotIndexSetDouble(4,PLOT_EMPTY_VALUE,0); + PlotIndexSetDouble(5,PLOT_EMPTY_VALUE,0); + PlotIndexSetDouble(6,PLOT_EMPTY_VALUE,0); + PlotIndexSetDouble(7,PLOT_EMPTY_VALUE,0); +//---- èíäćêńàöèÿ ęëćìćíòîâ â áóôćđć êàê â òàéìńćđèè + ArraySetAsSeries(HBuffer,true); + ArraySetAsSeries(HSBuffer,true); + ArraySetAsSeries(LSBuffer,true); + ArraySetAsSeries(LBuffer,true); + +//---- Óńòàíîâêà ôîđìàòà òîśíîńòè îòîáđàæćíèÿ èíäèêàòîđà + IndicatorSetInteger(INDICATOR_DIGITS,_Digits); +//---- èìÿ äëÿ îêîí äàííûő è ëęéáà äëÿ ńóáúîêîí + string short_name="Arrows&Curves"; + IndicatorSetString(INDICATOR_SHORTNAME,short_name); +//---- + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int OnCalculate(const int rates_total, + const int prev_calculated, + const datetime &time[], + const double &open[], + const double &high[], + const double &low[], + const double &close[], + const long &tick_volume[], + const long &volume[], + const int &spread[]) + { +//---- ïđîâćđêà êîëèśćńòâà áàđîâ íà äîńòàòîśíîńòü äëÿ đàńśćòà + if(rates_totalrates_total || prev_calculated<=0)// ïđîâćđêà íà ïćđâûé ńòàđò đàńśćòà èíäèêàòîđà + { + limit=rates_total-StartBars; // ńòàđòîâûé íîìćđ äëÿ đàńśćòà âńćő áàđîâ + } + else + { + limit=rates_total-prev_calculated; // ńòàđòîâûé íîìćđ äëÿ đàńśćòà íîâûő áàđîâ + } + +//---- èíäćêńàöèÿ ęëćìćíòîâ â ìàńńèâàő êàê â òàéìńćđèÿő + ArraySetAsSeries(high,true); + ArraySetAsSeries(low,true); + ArraySetAsSeries(close,true); + +//---- âîńńòàíàâëèâàćì çíàśćíèÿ ïćđćìćííûő + uptrend=uptrend_; + uptrend2=uptrend2_; + old=old_; + old2=old2_; + +//---- îńíîâíîé öèêë đàńśćòà èíäèêàòîđà + for(bar=limit; bar>=0; bar--) + { + //---- çàïîìèíàćì çíàśćíèÿ ïćđćìćííûő ïćđćä ïđîăîíàìè íà òćêóùćì áàđć + if(rates_total!=prev_calculated && bar==0) + { + uptrend_=uptrend; + uptrend2_=uptrend2; + old_=old; + old2_=old2; + } + + Close= close[bar]; + High = high[iHighest(high,SSP,bar+relay)]; + Low = low [iLowest (low, SSP,bar+relay)]; + smax = High -(Low-High)*Channel/ 100; // smax íèæć High ń óśćòîì êîęôô.Channel + smin = Low+(High-Low)*Channel / 100; // smin âûűć Low ń óśćòîì êîęôô.Channel + smax2= High -(High-Low)*(Channel+Ch_Stop)/ 100; // smax íèæć High ń óśćòîì êîęôô.Chan+Ch_Stop + smin2= Low+(High-Low)*(Channel+Ch_Stop) / 100; // smin âûűć Low ń óśćòîì êîęôô.Channel + BuyBuffer[bar]=0; + SellBuffer[bar]=0; + BuyStopBuffer[bar]=0; + SellStopBuffer[bar]=0; + //---- + if(Close smax && Close > smin && uptrend2 == false && bar!=0 ) uptrend = true; + if((Close > smax2 || Close > smin2) && uptrend == false && bar!=0 ) uptrend2 = false; + if((Closesmax && Close>smin && uptrend2==true && bar!=0) + { + BuyBuffer[bar]=High; + uptrend2=false; + } + //---- + if(uptrend != old && uptrend == false) SellBuffer[bar] = Low; + if(uptrend != old && uptrend == true ) BuyBuffer[bar] = High; + //---- + if(uptrend2 != old2 && uptrend2 == true ) BuyStopBuffer[bar] = smax2; + if(uptrend2 != old2 && uptrend2 == false) SellStopBuffer[bar] = smin2; + //---- + old=uptrend; + old2=uptrend2; + //---- + HBuffer[bar]=smax; + LBuffer[bar]=smin; + HSBuffer[bar]=smax2; + LSBuffer[bar]=smin2; + } +//---- + return(rates_total); + } +//+------------------------------------------------------------------+ +//| searching index of the highest bar | +//+------------------------------------------------------------------+ +int iHighest(const double &array[],// ìàńńèâ äëÿ ïîèńêà èíäćêńà ìàêńèìàëüíîăî ęëćìćíòà + int count, // śèńëî ęëćìćíòîâ ìàńńèâà (â íàïđàâëćíèè îò òćêóùćăî áàđà â ńòîđîíó óáûâàíèÿ èíäćêńà), + // ńđćäè êîòîđûő äîëæćí áûòü ïđîèçâćäćí ïîèńê. + int startPos // èíäćêń (ńìćùćíèć îòíîńèòćëüíî òćêóùćăî áàđà) íàśàëüíîăî áàđà, + // ń êîòîđîăî íàśèíàćòńÿ ïîèńê íàèáîëüűćăî çíàśćíèÿ + ) + { +//---- + int index=startPos; + +//---- ïđîâćđêà ńòàđòîâîăî èíäćêńà íà êîđđćêòíîńòü + if(startPos<0) + { + Print("Íćâćđíîć çíàśćíèć â ôóíêöèè iHighest, startPos = ",startPos); + return(0); + } + + double max=array[startPos]; + +//---- ïîèńê èíäćêńà + for(int i=startPos; imax) + { + index=i; + max=array[i]; + } + } +//---- âîçâđàò èíäćêńà íàèáîëüűćăî áàđà + return(index); + } +//+------------------------------------------------------------------+ +//| searching index of the lowest bar | +//+------------------------------------------------------------------+ +int iLowest(const double &array[], // ìàńńèâ äëÿ ïîèńêà èíäćêńà ìèíèìàëüíîăî ęëćìćíòà + int count, // śèńëî ęëćìćíòîâ ìàńńèâà (â íàïđàâëćíèè îò òćêóùćăî áàđà â ńòîđîíó óáûâàíèÿ èíäćêńà), + // ńđćäè êîòîđûő äîëæćí áûòü ïđîèçâćäćí ïîèńê. + int startPos // èíäćêń (ńìćùćíèć îòíîńèòćëüíî òćêóùćăî áàđà) íàśàëüíîăî áàđà, + // ń êîòîđîăî íàśèíàćòńÿ ïîèńê íàèìćíüűćăî çíàśćíèÿ + ) + { +//---- + int index=startPos; + +//---- ïđîâćđêà ńòàđòîâîăî èíäćêńà íà êîđđćêòíîńòü + if(startPos<0) + { + Print("Íćâćđíîć çíàśćíèć â ôóíêöèè iLowest, startPos = ",startPos); + return(0); + } + + double min=array[startPos]; + +//---- ïîèńê èíäćêńà + for(int i=startPos; i 0; + + InitIndicators(); + + return ValidateInit(); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + datetime time = Time(0); + if(time > barTime) + { + barTime = time; + OnBar(); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnBar() + { + UpdatePosition(); + + if(posType != OP_FLAT && IsForceSessionClose()) + { + ClosePosition(); + return; + } + + if(IsOutOfSession()) + return; + + if(posType != OP_FLAT) + { + ManageClose(); + UpdatePosition(); + } + + if(posType != OP_FLAT && isTrailingStop) + { + double trailingStop=GetTrailingStopPrice(); + ManageTrailingStop(trailingStop); + UpdatePosition(); + } + + int entrySignal = GetEntrySignal(); + + if(posType == OP_FLAT && entrySignal != OP_FLAT) + { + OpenPosition(entrySignal); + UpdatePosition(); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void UpdatePosition() + { + posType = OP_FLAT; + posTicket = 0; + posLots = 0; + int posTotal = PositionsTotal(); + for(int posIndex = 0; posIndex < posTotal; posIndex++) + { + ulong ticket = PositionGetTicket(posIndex); + if(PositionSelectByTicket(ticket) && + PositionGetString(POSITION_SYMBOL) == _Symbol && + PositionGetInteger(POSITION_MAGIC) == Magic_Number) + { + posType = (int) PositionGetInteger(POSITION_TYPE); + posTicket = ticket; + posLots = NormalizeDouble(PositionGetDouble(POSITION_VOLUME), 2); + posStopLoss = NormalizeDouble(PositionGetDouble(POSITION_SL), _Digits); + posTakeProfit = NormalizeDouble(PositionGetDouble(POSITION_TP), _Digits); + break; + } + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void InitIndicators() + { +// Bollinger Bands (Close, 5, 2.50) + indHandlers[0][0][0] = iBands(NULL, 0, Ind0Param0, 0, Ind0Param1, PRICE_CLOSE); +// Alligator (Smoothed, Median, 27, 17, 21, 0, 6, 4) + indHandlers[0][1][0] = iAlligator(NULL, 0, Ind1Param0, Ind1Param1, Ind1Param2, Ind1Param3, Ind1Param4, Ind1Param5, MODE_SMMA, PRICE_MEDIAN); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int GetEntrySignal() + { +// Bollinger Bands (Close, 5, 2.50) + double ind0buffer0[]; + CopyBuffer(indHandlers[0][0][0], 1, 1, 2, ind0buffer0); + double ind0buffer1[]; + CopyBuffer(indHandlers[0][0][0], 2, 1, 2, ind0buffer1); + double ind0upBand1 = ind0buffer0[1]; + double ind0dnBand1 = ind0buffer1[1]; + double ind0upBand2 = ind0buffer0[0]; + double ind0dnBand2 = ind0buffer1[0]; + bool ind0long = Open(0) < ind0dnBand1 - sigma && Open(1) > ind0dnBand2 + sigma; + bool ind0short = Open(0) > ind0upBand1 + sigma && Open(1) < ind0upBand2 - sigma; + + bool canOpenLong = ind0long; + bool canOpenShort = ind0short; + + return canOpenLong && !canOpenShort ? OP_BUY + : canOpenShort && !canOpenLong ? OP_SELL + : OP_FLAT; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageClose() + { +// Alligator (Smoothed, Median, 27, 17, 21, 0, 6, 4) + double ind1buffer0[]; + CopyBuffer(indHandlers[0][1][0], 0, 1, 2, ind1buffer0); + double ind1buffer1[]; + CopyBuffer(indHandlers[0][1][0], 1, 1, 2, ind1buffer1); + double ind1buffer2[]; + CopyBuffer(indHandlers[0][1][0], 2, 1, 2, ind1buffer2); + double ind1val1 = ind1buffer1[1]; + double ind1val2 = ind1buffer1[0]; + bool ind1long = ind1val1 > ind1val2 + sigma; + bool ind1short = ind1val1 < ind1val2 - sigma; + + if((posType == OP_BUY && ind1long) || + (posType == OP_SELL && ind1short)) + ClosePosition(); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OpenPosition(int command) + { + double stopLoss = GetStopLossPrice(command); + double takeProfit = GetTakeProfitPrice(command); + ManageOrderSend(command, Entry_Amount, stopLoss, takeProfit, 0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ClosePosition() + { + int command = posType == OP_BUY ? OP_SELL : OP_BUY; + ManageOrderSend(command, posLots, 0, 0, posTicket); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageOrderSend(int command, double lots, double stopLoss, double takeProfit, ulong ticket) + { + for(int attempt = 0; attempt < TRADE_RETRY_COUNT; attempt++) + { + if(IsTradeContextFree()) + { + MqlTradeRequest request; + MqlTradeResult result; + ZeroMemory(request); + ZeroMemory(result); + + request.action = TRADE_ACTION_DEAL; + request.symbol = _Symbol; + request.volume = lots; + request.type = command == OP_BUY ? ORDER_TYPE_BUY : ORDER_TYPE_SELL; + request.price = command == OP_BUY ? Ask() : Bid(); + request.type_filling = orderFillingType; + request.deviation = 10; + request.sl = stopLoss; + request.tp = takeProfit; + request.magic = Magic_Number; + request.position = ticket; + request.comment = IntegerToString(Magic_Number); + + bool isOrderCheck = CheckOrder(request); + bool isOrderSend = false; + + if(isOrderCheck) + { + ResetLastError(); + isOrderSend = OrderSend(request, result); + } + + if(isOrderCheck && isOrderSend && result.retcode == TRADE_RETCODE_DONE) + return; + } + + Sleep(TRADE_RETRY_WAIT); + Print("Order Send retry no: " + IntegerToString(attempt + 2)); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ModifyPosition(double stopLoss, double takeProfit, ulong ticket) + { + for(int attempt = 0; attempt < TRADE_RETRY_COUNT; attempt++) + { + if(IsTradeContextFree()) + { + MqlTradeRequest request; + MqlTradeResult result; + ZeroMemory(request); + ZeroMemory(result); + + request.action = TRADE_ACTION_SLTP; + request.symbol = _Symbol; + request.sl = stopLoss; + request.tp = takeProfit; + request.magic = Magic_Number; + request.position = ticket; + request.comment = IntegerToString(Magic_Number); + + bool isOrderCheck = CheckOrder(request); + bool isOrderSend = false; + + if(isOrderCheck) + { + ResetLastError(); + isOrderSend = OrderSend(request, result); + } + + if(isOrderCheck && isOrderSend && result.retcode == TRADE_RETCODE_DONE) + return; + } + + Sleep(TRADE_RETRY_WAIT); + Print("Order Send retry no: " + IntegerToString(attempt + 2)); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool CheckOrder(MqlTradeRequest &request) + { + MqlTradeCheckResult check; + ZeroMemory(check); + ResetLastError(); + + if(OrderCheck(request, check)) + return true; + + Print("Error with OrderCheck: " + check.comment); + + if(check.retcode == TRADE_RETCODE_INVALID_FILL) + { + switch(orderFillingType) + { + case ORDER_FILLING_FOK: + Print("Filling mode changed to: ORDER_FILLING_IOC"); + orderFillingType = ORDER_FILLING_IOC; + break; + case ORDER_FILLING_IOC: + Print("Filling mode changed to: ORDER_FILLING_RETURN"); + orderFillingType = ORDER_FILLING_RETURN; + break; + case ORDER_FILLING_RETURN: + Print("Filling mode changed to: ORDER_FILLING_FOK"); + orderFillingType = ORDER_FILLING_FOK; + break; + } + + request.type_filling = orderFillingType; + + return CheckOrder(request); + } + + return false; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetStopLossPrice(int command) + { + if(Stop_Loss == 0) + return 0; + + double delta = MathMax(pip * Stop_Loss, _Point * stopLevel); + double stopLoss = command == OP_BUY ? Bid() - delta : Ask() + delta; + + return NormalizeDouble(stopLoss, _Digits); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetTakeProfitPrice(int command) + { + if(Take_Profit == 0) + return 0; + + double delta = MathMax(pip * Take_Profit, _Point * stopLevel); + double takeProfit = command == OP_BUY ? Bid() + delta : Ask() - delta; + + return NormalizeDouble(takeProfit, _Digits); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetTrailingStopPrice() + { + double bid = Bid(); + double ask = Ask(); + double spread = ask - bid; + double stopLevelPoints = _Point * stopLevel; + double stopLossPoints = pip * Stop_Loss; + + if(posType == OP_BUY) + { + double newStopLoss = High(1) - stopLossPoints; + if(posStopLoss <= newStopLoss - pip) + return newStopLoss < bid + ? newStopLoss >= bid - stopLevelPoints + ? bid - stopLevelPoints + : newStopLoss + : bid; + } + + if(posType == OP_SELL) + { + double newStopLoss = Low(1) + spread + stopLossPoints; + if(posStopLoss >= newStopLoss + pip) + return newStopLoss > ask + ? newStopLoss <= ask + stopLevelPoints + ? ask + stopLevelPoints + : newStopLoss + : ask; + } + + return posStopLoss; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ManageTrailingStop(double trailingStop) + { + if((posType == OP_BUY && MathAbs(trailingStop - Bid()) < _Point) || + (posType == OP_SELL && MathAbs(trailingStop - Ask()) < _Point)) + { + ClosePosition(); + return; + } + + if(MathAbs(trailingStop - posStopLoss) > _Point) + { + posStopLoss = NormalizeDouble(trailingStop, _Digits); + ModifyPosition(posStopLoss, posTakeProfit, posTicket); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Bid() + { + return SymbolInfoDouble(_Symbol, SYMBOL_BID); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Ask() + { + return SymbolInfoDouble(_Symbol, SYMBOL_ASK); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +datetime Time(int bar) + { + datetime buffer[]; + ArrayResize(buffer, 1); + return CopyTime(_Symbol, _Period, bar, 1, buffer) == 1 ? buffer[0] : 0; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Open(int bar) + { + double buffer[]; + ArrayResize(buffer, 1); + return CopyOpen(_Symbol, _Period, bar, 1, buffer) == 1 ? buffer[0] : 0; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double High(int bar) + { + double buffer[]; + ArrayResize(buffer, 1); + return CopyHigh(_Symbol, _Period, bar, 1, buffer) == 1 ? buffer[0] : 0; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Low(int bar) + { + double buffer[]; + ArrayResize(buffer, 1); + return CopyLow(_Symbol, _Period, bar, 1, buffer) == 1 ? buffer[0] : 0; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double Close(int bar) + { + double buffer[]; + ArrayResize(buffer, 1); + return CopyClose(_Symbol, _Period, bar, 1, buffer) == 1 ? buffer[0] : 0; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GetPipValue() + { + return _Digits == 4 || _Digits == 5 ? 0.0001 + : _Digits == 2 || _Digits == 3 ? 0.01 + : _Digits == 1 ? 0.1 : 1; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsTradeAllowed() + { + return (bool) MQL5InfoInteger(MQL5_TRADE_ALLOWED); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void RefreshRates() + { +// Dummy function to make it compatible with MQL4 + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int DayOfWeek() + { + MqlDateTime mqlTime; + TimeToStruct(Time(0), mqlTime); + return mqlTime.day_of_week; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsTradeContextFree() + { + if(IsTradeAllowed()) + return true; + + uint startWait = GetTickCount(); + Print("Trade context is busy! Waiting..."); + + while(true) + { + if(IsStopped()) + return false; + + uint diff = GetTickCount() - startWait; + if(diff > 30 * 1000) + { + Print("The waiting limit exceeded!"); + return false; + } + + if(IsTradeAllowed()) + { + RefreshRates(); + return true; + } + + Sleep(TRADE_RETRY_WAIT); + } + + return true; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsOutOfSession() + { + int dayOfWeek = DayOfWeek(); + int periodStart = int(Time(0) % 86400); + int periodLength = PeriodSeconds(_Period); + int periodFix = periodStart + (sessionCloseAtSessionClose ? periodLength : 0); + int friBarFix = periodStart + (sessionCloseAtFridayClose || sessionCloseAtSessionClose ? periodLength : 0); + + return dayOfWeek == 0 && sessionIgnoreSunday ? true + : dayOfWeek == 0 ? periodStart < sessionSundayOpen || periodFix > sessionSundayClose + : dayOfWeek < 5 ? periodStart < sessionMondayThursdayOpen || periodFix > sessionMondayThursdayClose + : periodStart < sessionFridayOpen || friBarFix > sessionFridayClose; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsForceSessionClose() + { + if(!sessionCloseAtFridayClose && !sessionCloseAtSessionClose) + return false; + + int dayOfWeek = DayOfWeek(); + int periodEnd = int(Time(0) % 86400) + PeriodSeconds(_Period); + + return dayOfWeek == 0 && sessionCloseAtSessionClose ? periodEnd > sessionSundayClose + : dayOfWeek < 5 && sessionCloseAtSessionClose ? periodEnd > sessionMondayThursdayClose + : dayOfWeek == 5 ? periodEnd > sessionFridayClose : false; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +ENUM_INIT_RETCODE ValidateInit() + { + return INIT_SUCCEEDED; + } +//+------------------------------------------------------------------+ +/*STRATEGY MARKET FXOpen-ECN Live Server; GBPAUD; M15 */ +/*STRATEGY CODE {"properties":{"entryLots":0.3,"tradeDirectionMode":0,"oppositeEntrySignal":0,"stopLoss":46,"takeProfit":100,"useStopLoss":true,"useTakeProfit":false,"isTrailingStop":true},"openFilters":[{"name":"Bollinger Bands","listIndexes":[4,3,0,0,0],"numValues":[5,2.5,0,0,0,0]}],"closeFilters":[{"name":"Alligator","listIndexes":[2,3,4,0,0],"numValues":[27,17,21,0,6,4]}]} */ diff --git a/mql5_experts_mt5/Aussie Surfer/avatar_na2.png b/mql5_experts_mt5/Aussie Surfer/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Aussie Surfer/avatar_na2.png differ diff --git a/mql5_experts_mt5/Aussie Surfer/expert.png b/mql5_experts_mt5/Aussie Surfer/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Aussie Surfer/expert.png differ diff --git a/mql5_experts_mt5/Aussie Surfer/logo-2.png b/mql5_experts_mt5/Aussie Surfer/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Aussie Surfer/logo-2.png differ diff --git a/mql5_experts_mt5/Aussie Surfer/script.png b/mql5_experts_mt5/Aussie Surfer/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Aussie Surfer/script.png differ diff --git a/mql5_experts_mt5/Auto ADX/57E19E80-45F2.jpg b/mql5_experts_mt5/Auto ADX/57E19E80-45F2.jpg new file mode 100644 index 0000000..6b79a78 Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/57E19E80-45F2.jpg differ diff --git a/mql5_experts_mt5/Auto ADX/Auto_ADX.png b/mql5_experts_mt5/Auto ADX/Auto_ADX.png new file mode 100644 index 0000000..36352b2 Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/Auto_ADX.png differ diff --git a/mql5_experts_mt5/Auto ADX/Auto_ADX_jlevelm.png b/mql5_experts_mt5/Auto ADX/Auto_ADX_jlevelm.png new file mode 100644 index 0000000..ed4262e Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/Auto_ADX_jlevelm.png differ diff --git a/mql5_experts_mt5/Auto ADX/README.md b/mql5_experts_mt5/Auto ADX/README.md new file mode 100644 index 0000000..ffb0809 --- /dev/null +++ b/mql5_experts_mt5/Auto ADX/README.md @@ -0,0 +1,26 @@ +# Auto ADX + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](57E19E80-45F2.jpg) +![Screenshot](Auto_ADX.png) +![Screenshot](Auto_ADX_jlevelm.png) + +## Files +- `auto_adx.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Auto ADX/auto_adx.mq5 b/mql5_experts_mt5/Auto ADX/auto_adx.mq5 new file mode 100644 index 0000000..7401950 Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/auto_adx.mq5 differ diff --git a/mql5_experts_mt5/Auto ADX/expert.png b/mql5_experts_mt5/Auto ADX/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/expert.png differ diff --git a/mql5_experts_mt5/Auto ADX/indicator.png b/mql5_experts_mt5/Auto ADX/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/indicator.png differ diff --git a/mql5_experts_mt5/Auto ADX/logo-2.png b/mql5_experts_mt5/Auto ADX/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Auto ADX/logo-2.png differ diff --git a/mql5_experts_mt5/Auto Trader/1__1.png b/mql5_experts_mt5/Auto Trader/1__1.png new file mode 100644 index 0000000..d058083 Binary files /dev/null and b/mql5_experts_mt5/Auto Trader/1__1.png differ diff --git a/mql5_experts_mt5/Auto Trader/5A4760DE-4FC2.jpg b/mql5_experts_mt5/Auto Trader/5A4760DE-4FC2.jpg new file mode 100644 index 0000000..6b84d35 Binary files /dev/null and b/mql5_experts_mt5/Auto Trader/5A4760DE-4FC2.jpg differ diff --git a/mql5_experts_mt5/Auto Trader/5DE0F394-24D6.jpg b/mql5_experts_mt5/Auto Trader/5DE0F394-24D6.jpg new file mode 100644 index 0000000..a044d0e Binary files /dev/null and b/mql5_experts_mt5/Auto Trader/5DE0F394-24D6.jpg differ diff --git a/mql5_experts_mt5/Auto Trader/README.md b/mql5_experts_mt5/Auto Trader/README.md new file mode 100644 index 0000000..c799d74 --- /dev/null +++ b/mql5_experts_mt5/Auto Trader/README.md @@ -0,0 +1,26 @@ +# Auto Trader + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1__1.png) +![Screenshot](5A4760DE-4FC2.jpg) +![Screenshot](5DE0F394-24D6.jpg) + +## Files +- `autotraderrus.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Auto Trader/autotraderrus.mq5 b/mql5_experts_mt5/Auto Trader/autotraderrus.mq5 new file mode 100644 index 0000000..24e1ed7 --- /dev/null +++ b/mql5_experts_mt5/Auto Trader/autotraderrus.mq5 @@ -0,0 +1,114 @@ +//+------------------------------------------------------------------+ +//| AutoTrader.mq5 | +//| Copyright 2016, AM2 | +//| http://www.forexsystems.biz | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2016, AM2" +#property link "http://www.forexsystems.biz" +#property version "1.00" + +#define VK_CONTROL 0x11 //CTRL key +#define KEY_CODE 'E' + +// Ïîäêëțśàćì áèáëèîòćêó Windows äëÿ đàńïîçíàâàíèÿ íàæàòèÿ êëàâèű +#import "user32.dll" +void keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo); +#import + +// Èńïîëüçóćì êëàńń CTrade +#include + +//Îáúćêò êëàńńà CTrade +CTrade trade; + +// Îáúćêò êëàńńà CPositionInfo +CPositionInfo position; + +// Âőîäíûć ïćđćìćííûć +input int StartHour = 9; // Śàń íàśàëà òîđăîâëè +input int StartMinute = 30; // Ìèíóòà íàśàëà òîđăîâëè +input int StopHour = 23; // Śàń îêîíśàíèÿ òîđăîâëè +input int StopMinute = 30; // Ìèíóòà îêîíśàíèÿ òîđăîâëè +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { + Comment(""); + } +//+------------------------------------------------------------------+ +//| Íàæèìàćì êëàâèűè Ctrl+E | +//+------------------------------------------------------------------+ +void Key() + { + keybd_event(VK_CONTROL,0,0,0); + Sleep(10); + keybd_event(KEY_CODE,0,0,0); + Sleep(10); + keybd_event(KEY_CODE,0,2,0); + Sleep(10); + keybd_event(VK_CONTROL,0,2,0); + } +//+------------------------------------------------------------------+ +//| Ïđîâćđêà âđćìćíè òîđăîâëè | +//+------------------------------------------------------------------+ +bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur) + { +//--- âđćìÿ íàśàëà ńćńńèè + int StartTime=3600*aStartHour+60*aStartMinute; +//--- âđćìÿ îêîíśàíèÿ ńćńńèè + int StopTime=3600*aStopHour+60*aStopMinute; +//--- òćêóùćć âđćìÿ â ńćêóíäàő îò íàśàëà äíÿ + aTimeCur=aTimeCur%86400; + if(StopTime=StartTime || aTimeCur=StartTime && aTimeCur + +//--- Input parameters +input double TargetProfit = 100.0; // Target profit (in account currency) +input double MaxLoss = -50.0; // Max loss (in account currency, negative value) +input bool EnableProfitClose = true; // Enable closing on target profit +input bool EnableLossClose = true; // Enable closing on max loss +input bool ShowAlerts = true; // Show alerts when closing positions + +//--- Global variables +CTrade trade; + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + // Check connection to server + + + // Validate inputs + if(TargetProfit <= 0 && EnableProfitClose) + { + Alert("Error: TargetProfit must be greater than 0!"); + Print("Error: TargetProfit must be greater than 0!"); + return(INIT_PARAMETERS_INCORRECT); + } + if(MaxLoss >= 0 && EnableLossClose) + { + Alert("Error: MaxLoss must be a negative value!"); + Print("Error: MaxLoss must be a negative value!"); + return(INIT_PARAMETERS_INCORRECT); + } + + // Check if trading is allowed + if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)) + { + Alert("Error: Trading is not allowed for this account!"); + Print("Error: Trading is not allowed for this account!"); + return(INIT_FAILED); + } + + Print("EA initialized successfully at ", TimeToString(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS)); + return(INIT_SUCCEEDED); +} + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ + Print("EA deinitialized. Reason: ", reason, " | Time: ", TimeToString(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS)); +} + +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() +{ + // Calculate total profit/loss + double totalProfit = CalculateTotalProfit(); + Print("Total Profit/Loss on tick: ", DoubleToString(totalProfit, 2), " | Time: ", TimeToString(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS)); + + // Check if profit/loss conditions are met + bool shouldClose = false; + string closeReason = ""; + + if(EnableProfitClose && totalProfit >= TargetProfit) + { + shouldClose = true; + closeReason = "Target profit reached: " + DoubleToString(totalProfit, 2); + } + else if(EnableLossClose && totalProfit <= MaxLoss) + { + shouldClose = true; + closeReason = "Max loss reached: " + DoubleToString(totalProfit, 2); + } + + // Close all positions if conditions are met + if(shouldClose) + { + if(CloseAllPositions()) + { + if(ShowAlerts) + { + Alert("All positions closed! Reason: ", closeReason); + } + Print("All positions closed at: ", TimeToString(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + " | Reason: ", closeReason); + } + else + { + Print("Failed to close all positions! Check logs for details."); + } + } +} + +//+------------------------------------------------------------------+ +//| Calculate total profit/loss of all open positions | +//+------------------------------------------------------------------+ +double CalculateTotalProfit() +{ + double totalProfit = 0.0; + + // Loop through all open positions + int totalPositions = PositionsTotal(); + for(int i = totalPositions - 1; i >= 0; i--) + { + ulong ticket = PositionGetTicket(i); + if(PositionSelectByTicket(ticket)) + { + totalProfit += PositionGetDouble(POSITION_PROFIT); + } + else + { + Print("Warning: Could not select position with ticket #", ticket); + } + } + + return totalProfit; +} + +//+------------------------------------------------------------------+ +//| Close all open positions | +//+------------------------------------------------------------------+ +bool CloseAllPositions() +{ + bool allClosed = true; + + // Loop through all open positions + int totalPositions = PositionsTotal(); + for(int i = totalPositions - 1; i >= 0; i--) + { + ulong ticket = PositionGetTicket(i); + if(PositionSelectByTicket(ticket)) + { + string symbol = PositionGetString(POSITION_SYMBOL); + trade.SetDeviationInPoints(10); // Slippage tolerance + + // Close the position + if(!trade.PositionClose(ticket)) + { + Print("Failed to close position #", ticket, " | Symbol: ", symbol, + " | Error: ", trade.ResultRetcode()); + allClosed = false; + } + else + { + Print("Closed position #", ticket, " | Symbol: ", symbol, " | Result: ", trade.ResultRetcode()); + } + } + else + { + Print("Error: Could not select position with ticket #", ticket); + allClosed = false; + } + } + + return allClosed; +} +//+------------------------------------------------------------------+ \ No newline at end of file diff --git a/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/expert.png b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/expert.png differ diff --git a/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/indicator.png b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/indicator.png differ diff --git a/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/logo-2.png b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/logo-2.png differ diff --git a/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/script.png b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/AutoCloseOnProfitLoss Expert - Automatically Close All Positions on Profit_Loss/script.png differ diff --git a/mql5_experts_mt5/AutoRisk/README.md b/mql5_experts_mt5/AutoRisk/README.md new file mode 100644 index 0000000..d0fa98d --- /dev/null +++ b/mql5_experts_mt5/AutoRisk/README.md @@ -0,0 +1,23 @@ +# AutoRisk + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `autorisk.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AutoRisk/autorisk.mq5 b/mql5_experts_mt5/AutoRisk/autorisk.mq5 new file mode 100644 index 0000000..a19badf Binary files /dev/null and b/mql5_experts_mt5/AutoRisk/autorisk.mq5 differ diff --git a/mql5_experts_mt5/AutoRisk/avatar_na2.png b/mql5_experts_mt5/AutoRisk/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AutoRisk/avatar_na2.png differ diff --git a/mql5_experts_mt5/AutoRisk/expert.png b/mql5_experts_mt5/AutoRisk/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AutoRisk/expert.png differ diff --git a/mql5_experts_mt5/AutoRisk/indicator.png b/mql5_experts_mt5/AutoRisk/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AutoRisk/indicator.png differ diff --git a/mql5_experts_mt5/AutoRisk/logo-2.png b/mql5_experts_mt5/AutoRisk/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AutoRisk/logo-2.png differ diff --git a/mql5_experts_mt5/AutoSLTP/README.md b/mql5_experts_mt5/AutoSLTP/README.md new file mode 100644 index 0000000..fe235fe --- /dev/null +++ b/mql5_experts_mt5/AutoSLTP/README.md @@ -0,0 +1,23 @@ +# AutoSLTP + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `autosltp.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AutoSLTP/autosltp.mq5 b/mql5_experts_mt5/AutoSLTP/autosltp.mq5 new file mode 100644 index 0000000..28e1ca6 Binary files /dev/null and b/mql5_experts_mt5/AutoSLTP/autosltp.mq5 differ diff --git a/mql5_experts_mt5/AutoSLTP/expert.png b/mql5_experts_mt5/AutoSLTP/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AutoSLTP/expert.png differ diff --git a/mql5_experts_mt5/AutoSLTP/indicator.png b/mql5_experts_mt5/AutoSLTP/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AutoSLTP/indicator.png differ diff --git a/mql5_experts_mt5/AutoSLTP/logo-2.png b/mql5_experts_mt5/AutoSLTP/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AutoSLTP/logo-2.png differ diff --git a/mql5_experts_mt5/AutoSet SL TP/5B9159C3-EF07.jpg b/mql5_experts_mt5/AutoSet SL TP/5B9159C3-EF07.jpg new file mode 100644 index 0000000..517f594 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/5B9159C3-EF07.jpg differ diff --git a/mql5_experts_mt5/AutoSet SL TP/5D5713C0-2A4D.png b/mql5_experts_mt5/AutoSet SL TP/5D5713C0-2A4D.png new file mode 100644 index 0000000..5b299f6 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/5D5713C0-2A4D.png differ diff --git a/mql5_experts_mt5/AutoSet SL TP/661bc5a1-1de1.jpg b/mql5_experts_mt5/AutoSet SL TP/661bc5a1-1de1.jpg new file mode 100644 index 0000000..c9634c9 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/661bc5a1-1de1.jpg differ diff --git a/mql5_experts_mt5/AutoSet SL TP/README.md b/mql5_experts_mt5/AutoSet SL TP/README.md new file mode 100644 index 0000000..05197fb --- /dev/null +++ b/mql5_experts_mt5/AutoSet SL TP/README.md @@ -0,0 +1,26 @@ +# AutoSet SL TP + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5B9159C3-EF07.jpg) +![Screenshot](5D5713C0-2A4D.png) +![Screenshot](661bc5a1-1de1.jpg) + +## Files +- `autoset_sl_tp.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/AutoSet SL TP/autoset_sl_tp.mq5 b/mql5_experts_mt5/AutoSet SL TP/autoset_sl_tp.mq5 new file mode 100644 index 0000000..a324aa4 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/autoset_sl_tp.mq5 differ diff --git a/mql5_experts_mt5/AutoSet SL TP/avatar_na2.png b/mql5_experts_mt5/AutoSet SL TP/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/avatar_na2.png differ diff --git a/mql5_experts_mt5/AutoSet SL TP/expert.png b/mql5_experts_mt5/AutoSet SL TP/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/expert.png differ diff --git a/mql5_experts_mt5/AutoSet SL TP/indicator.png b/mql5_experts_mt5/AutoSet SL TP/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/indicator.png differ diff --git a/mql5_experts_mt5/AutoSet SL TP/logo-2.png b/mql5_experts_mt5/AutoSet SL TP/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/AutoSet SL TP/logo-2.png differ diff --git a/mql5_experts_mt5/Autotrade/59F2B2DF-AFD6.jpg b/mql5_experts_mt5/Autotrade/59F2B2DF-AFD6.jpg new file mode 100644 index 0000000..d36aa72 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/59F2B2DF-AFD6.jpg differ diff --git a/mql5_experts_mt5/Autotrade/Autotrade_start.png b/mql5_experts_mt5/Autotrade/Autotrade_start.png new file mode 100644 index 0000000..e5adae6 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/Autotrade_start.png differ diff --git a/mql5_experts_mt5/Autotrade/Autotrade_test.png b/mql5_experts_mt5/Autotrade/Autotrade_test.png new file mode 100644 index 0000000..eaaa413 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/Autotrade_test.png differ diff --git a/mql5_experts_mt5/Autotrade/README.md b/mql5_experts_mt5/Autotrade/README.md new file mode 100644 index 0000000..4c85420 --- /dev/null +++ b/mql5_experts_mt5/Autotrade/README.md @@ -0,0 +1,27 @@ +# Autotrade + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](59F2B2DF-AFD6.jpg) +![Screenshot](Autotrade_start.png) +![Screenshot](Autotrade_test.png) +![Screenshot](script.png) + +## Files +- `autotrade.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Autotrade/autotrade.mq5 b/mql5_experts_mt5/Autotrade/autotrade.mq5 new file mode 100644 index 0000000..948f136 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/autotrade.mq5 differ diff --git a/mql5_experts_mt5/Autotrade/expert.png b/mql5_experts_mt5/Autotrade/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/expert.png differ diff --git a/mql5_experts_mt5/Autotrade/logo-2.png b/mql5_experts_mt5/Autotrade/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Autotrade/logo-2.png differ diff --git a/mql5_experts_mt5/Autotrade/script.png b/mql5_experts_mt5/Autotrade/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Autotrade/script.png differ diff --git a/mql5_experts_mt5/Autotrader Momentum/README.md b/mql5_experts_mt5/Autotrader Momentum/README.md new file mode 100644 index 0000000..61a73b1 --- /dev/null +++ b/mql5_experts_mt5/Autotrader Momentum/README.md @@ -0,0 +1,23 @@ +# Autotrader Momentum + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `autotrader_momentum.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Autotrader Momentum/autotrader_momentum.mq5 b/mql5_experts_mt5/Autotrader Momentum/autotrader_momentum.mq5 new file mode 100644 index 0000000..4fd4a36 Binary files /dev/null and b/mql5_experts_mt5/Autotrader Momentum/autotrader_momentum.mq5 differ diff --git a/mql5_experts_mt5/Autotrader Momentum/expert.png b/mql5_experts_mt5/Autotrader Momentum/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Autotrader Momentum/expert.png differ diff --git a/mql5_experts_mt5/Autotrader Momentum/indicator.png b/mql5_experts_mt5/Autotrader Momentum/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Autotrader Momentum/indicator.png differ diff --git a/mql5_experts_mt5/Autotrader Momentum/logo-2.png b/mql5_experts_mt5/Autotrader Momentum/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Autotrader Momentum/logo-2.png differ diff --git a/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_1.png b/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_1.png new file mode 100644 index 0000000..56f84c6 Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_1.png differ diff --git a/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_2.png b/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_2.png new file mode 100644 index 0000000..7b7de30 Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/Avalanche_AV_test_2.png differ diff --git a/mql5_experts_mt5/Avalanche AV/README.md b/mql5_experts_mt5/Avalanche AV/README.md new file mode 100644 index 0000000..d2ccafd --- /dev/null +++ b/mql5_experts_mt5/Avalanche AV/README.md @@ -0,0 +1,25 @@ +# Avalanche AV + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Avalanche_AV_test_1.png) +![Screenshot](Avalanche_AV_test_2.png) + +## Files +- `avalanche_av.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Avalanche AV/avalanche_av.mq5 b/mql5_experts_mt5/Avalanche AV/avalanche_av.mq5 new file mode 100644 index 0000000..eff4213 Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/avalanche_av.mq5 differ diff --git a/mql5_experts_mt5/Avalanche AV/expert.png b/mql5_experts_mt5/Avalanche AV/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/expert.png differ diff --git a/mql5_experts_mt5/Avalanche AV/indicator.png b/mql5_experts_mt5/Avalanche AV/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/indicator.png differ diff --git a/mql5_experts_mt5/Avalanche AV/logo-2.png b/mql5_experts_mt5/Avalanche AV/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Avalanche AV/logo-2.png differ diff --git a/mql5_experts_mt5/BADX/2018-11-01_15h10_29.png b/mql5_experts_mt5/BADX/2018-11-01_15h10_29.png new file mode 100644 index 0000000..3c97bdd Binary files /dev/null and b/mql5_experts_mt5/BADX/2018-11-01_15h10_29.png differ diff --git a/mql5_experts_mt5/BADX/2018-11-01_15h15_03.png b/mql5_experts_mt5/BADX/2018-11-01_15h15_03.png new file mode 100644 index 0000000..e96c417 Binary files /dev/null and b/mql5_experts_mt5/BADX/2018-11-01_15h15_03.png differ diff --git a/mql5_experts_mt5/BADX/README.md b/mql5_experts_mt5/BADX/README.md new file mode 100644 index 0000000..1d3f240 --- /dev/null +++ b/mql5_experts_mt5/BADX/README.md @@ -0,0 +1,25 @@ +# BADX + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-11-01_15h10_29.png) +![Screenshot](2018-11-01_15h15_03.png) + +## Files +- `badx.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BADX/badx.mq5 b/mql5_experts_mt5/BADX/badx.mq5 new file mode 100644 index 0000000..a12bd5e Binary files /dev/null and b/mql5_experts_mt5/BADX/badx.mq5 differ diff --git a/mql5_experts_mt5/BADX/expert.png b/mql5_experts_mt5/BADX/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BADX/expert.png differ diff --git a/mql5_experts_mt5/BADX/indicator.png b/mql5_experts_mt5/BADX/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BADX/indicator.png differ diff --git a/mql5_experts_mt5/BADX/logo-2.png b/mql5_experts_mt5/BADX/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BADX/logo-2.png differ diff --git a/mql5_experts_mt5/BARS Alligator/2018-09-18_18h30_31.png b/mql5_experts_mt5/BARS Alligator/2018-09-18_18h30_31.png new file mode 100644 index 0000000..37b4d13 Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/2018-09-18_18h30_31.png differ diff --git a/mql5_experts_mt5/BARS Alligator/5DD7B1CB-5121.jpg b/mql5_experts_mt5/BARS Alligator/5DD7B1CB-5121.jpg new file mode 100644 index 0000000..4906f5e Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/5DD7B1CB-5121.jpg differ diff --git a/mql5_experts_mt5/BARS Alligator/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/BARS Alligator/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/BARS Alligator/README.md b/mql5_experts_mt5/BARS Alligator/README.md new file mode 100644 index 0000000..55af585 --- /dev/null +++ b/mql5_experts_mt5/BARS Alligator/README.md @@ -0,0 +1,26 @@ +# BARS Alligator + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-09-18_18h30_31.png) +![Screenshot](5DD7B1CB-5121.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `bars_alligator.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BARS Alligator/avatar_na2.png b/mql5_experts_mt5/BARS Alligator/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/avatar_na2.png differ diff --git a/mql5_experts_mt5/BARS Alligator/bars_alligator.mq5 b/mql5_experts_mt5/BARS Alligator/bars_alligator.mq5 new file mode 100644 index 0000000..2ca6306 Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/bars_alligator.mq5 differ diff --git a/mql5_experts_mt5/BARS Alligator/expert.png b/mql5_experts_mt5/BARS Alligator/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/expert.png differ diff --git a/mql5_experts_mt5/BARS Alligator/indicator.png b/mql5_experts_mt5/BARS Alligator/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/indicator.png differ diff --git a/mql5_experts_mt5/BARS Alligator/logo-2.png b/mql5_experts_mt5/BARS Alligator/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BARS Alligator/logo-2.png differ diff --git a/mql5_experts_mt5/BHS system/BHS_system.png b/mql5_experts_mt5/BHS system/BHS_system.png new file mode 100644 index 0000000..28edb24 Binary files /dev/null and b/mql5_experts_mt5/BHS system/BHS_system.png differ diff --git a/mql5_experts_mt5/BHS system/README.md b/mql5_experts_mt5/BHS system/README.md new file mode 100644 index 0000000..db868fb --- /dev/null +++ b/mql5_experts_mt5/BHS system/README.md @@ -0,0 +1,25 @@ +# BHS system + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](BHS_system.png) +![Screenshot](script.png) + +## Files +- `bhs_system.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BHS system/bhs_system.mq5 b/mql5_experts_mt5/BHS system/bhs_system.mq5 new file mode 100644 index 0000000..b0b7d78 Binary files /dev/null and b/mql5_experts_mt5/BHS system/bhs_system.mq5 differ diff --git a/mql5_experts_mt5/BHS system/expert.png b/mql5_experts_mt5/BHS system/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BHS system/expert.png differ diff --git a/mql5_experts_mt5/BHS system/indicator.png b/mql5_experts_mt5/BHS system/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BHS system/indicator.png differ diff --git a/mql5_experts_mt5/BHS system/logo-2.png b/mql5_experts_mt5/BHS system/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BHS system/logo-2.png differ diff --git a/mql5_experts_mt5/BHS system/script.png b/mql5_experts_mt5/BHS system/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/BHS system/script.png differ diff --git a/mql5_experts_mt5/BIG DOG/1_4_small__1.gif b/mql5_experts_mt5/BIG DOG/1_4_small__1.gif new file mode 100644 index 0000000..0a627fd Binary files /dev/null and b/mql5_experts_mt5/BIG DOG/1_4_small__1.gif differ diff --git a/mql5_experts_mt5/BIG DOG/README.md b/mql5_experts_mt5/BIG DOG/README.md new file mode 100644 index 0000000..4a5719d --- /dev/null +++ b/mql5_experts_mt5/BIG DOG/README.md @@ -0,0 +1,25 @@ +# BIG DOG + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1_4_small__1.gif) +![Screenshot](script.png) + +## Files +- `big_dog.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BIG DOG/big_dog.mq5 b/mql5_experts_mt5/BIG DOG/big_dog.mq5 new file mode 100644 index 0000000..b79f776 Binary files /dev/null and b/mql5_experts_mt5/BIG DOG/big_dog.mq5 differ diff --git a/mql5_experts_mt5/BIG DOG/expert.png b/mql5_experts_mt5/BIG DOG/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BIG DOG/expert.png differ diff --git a/mql5_experts_mt5/BIG DOG/logo-2.png b/mql5_experts_mt5/BIG DOG/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BIG DOG/logo-2.png differ diff --git a/mql5_experts_mt5/BIG DOG/script.png b/mql5_experts_mt5/BIG DOG/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/BIG DOG/script.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/README.md b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/README.md new file mode 100644 index 0000000..811792f --- /dev/null +++ b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/README.md @@ -0,0 +1,28 @@ +# BITEX.ONE MarketMaker v1.01 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](deals.png) +![Screenshot](orders__1.png) +![Screenshot](script.png) +![Screenshot](tester_equity.png) +![Screenshot](tester_stats.png) + +## Files +- `bitex.one_marketmaker.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/avatar_na2.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/avatar_na2.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/bitex.one_marketmaker.mq5 b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/bitex.one_marketmaker.mq5 new file mode 100644 index 0000000..74b934b Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/bitex.one_marketmaker.mq5 differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/deals.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/deals.png new file mode 100644 index 0000000..6f79ef7 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/deals.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/expert.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/expert.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/indicator.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/indicator.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/logo-2.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/logo-2.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/orders__1.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/orders__1.png new file mode 100644 index 0000000..2f7bcef Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/orders__1.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/script.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/script.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_equity.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_equity.png new file mode 100644 index 0000000..79e75ed Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_equity.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_stats.png b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_stats.png new file mode 100644 index 0000000..48c1ee9 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker v1.01/tester_stats.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/5DDDD339-1F00.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/5DDDD339-1F00.png new file mode 100644 index 0000000..c89897e Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/5DDDD339-1F00.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/README.md b/mql5_experts_mt5/BITEX.ONE MarketMaker/README.md new file mode 100644 index 0000000..70c3169 --- /dev/null +++ b/mql5_experts_mt5/BITEX.ONE MarketMaker/README.md @@ -0,0 +1,28 @@ +# BITEX.ONE MarketMaker + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5DDDD339-1F00.png) +![Screenshot](deals.png) +![Screenshot](orders__1.png) +![Screenshot](tester_equity.png) +![Screenshot](tester_stats.png) + +## Files +- `bitex.one_marketmaker.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/bitex.one_marketmaker.mq5 b/mql5_experts_mt5/BITEX.ONE MarketMaker/bitex.one_marketmaker.mq5 new file mode 100644 index 0000000..c9ae513 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/bitex.one_marketmaker.mq5 differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/deals.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/deals.png new file mode 100644 index 0000000..6f79ef7 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/deals.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/expert.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/expert.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/logo-2.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/logo-2.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/orders__1.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/orders__1.png new file mode 100644 index 0000000..2f7bcef Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/orders__1.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_equity.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_equity.png new file mode 100644 index 0000000..79e75ed Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_equity.png differ diff --git a/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_stats.png b/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_stats.png new file mode 100644 index 0000000..48c1ee9 Binary files /dev/null and b/mql5_experts_mt5/BITEX.ONE MarketMaker/tester_stats.png differ diff --git a/mql5_experts_mt5/BSS 1_0/BSS_1_0.png b/mql5_experts_mt5/BSS 1_0/BSS_1_0.png new file mode 100644 index 0000000..e853a69 Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/BSS_1_0.png differ diff --git a/mql5_experts_mt5/BSS 1_0/BSS_1_0_EURCAD.png b/mql5_experts_mt5/BSS 1_0/BSS_1_0_EURCAD.png new file mode 100644 index 0000000..61b4ae3 Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/BSS_1_0_EURCAD.png differ diff --git a/mql5_experts_mt5/BSS 1_0/BSS_1_0_signals.png b/mql5_experts_mt5/BSS 1_0/BSS_1_0_signals.png new file mode 100644 index 0000000..7725461 Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/BSS_1_0_signals.png differ diff --git a/mql5_experts_mt5/BSS 1_0/README.md b/mql5_experts_mt5/BSS 1_0/README.md new file mode 100644 index 0000000..df2d1f9 --- /dev/null +++ b/mql5_experts_mt5/BSS 1_0/README.md @@ -0,0 +1,26 @@ +# BSS 1_0 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](BSS_1_0.png) +![Screenshot](BSS_1_0_EURCAD.png) +![Screenshot](BSS_1_0_signals.png) + +## Files +- `bss_1_0.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BSS 1_0/bss_1_0.mq5 b/mql5_experts_mt5/BSS 1_0/bss_1_0.mq5 new file mode 100644 index 0000000..7e2a95e Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/bss_1_0.mq5 differ diff --git a/mql5_experts_mt5/BSS 1_0/expert.png b/mql5_experts_mt5/BSS 1_0/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/expert.png differ diff --git a/mql5_experts_mt5/BSS 1_0/indicator.png b/mql5_experts_mt5/BSS 1_0/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/indicator.png differ diff --git a/mql5_experts_mt5/BSS 1_0/logo-2.png b/mql5_experts_mt5/BSS 1_0/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BSS 1_0/logo-2.png differ diff --git a/mql5_experts_mt5/Back kick/2018-12-12_10h50_36.png b/mql5_experts_mt5/Back kick/2018-12-12_10h50_36.png new file mode 100644 index 0000000..b7f61ac Binary files /dev/null and b/mql5_experts_mt5/Back kick/2018-12-12_10h50_36.png differ diff --git a/mql5_experts_mt5/Back kick/67c4a5ad-1b40.png b/mql5_experts_mt5/Back kick/67c4a5ad-1b40.png new file mode 100644 index 0000000..e135957 Binary files /dev/null and b/mql5_experts_mt5/Back kick/67c4a5ad-1b40.png differ diff --git a/mql5_experts_mt5/Back kick/README.md b/mql5_experts_mt5/Back kick/README.md new file mode 100644 index 0000000..e5ae90a --- /dev/null +++ b/mql5_experts_mt5/Back kick/README.md @@ -0,0 +1,25 @@ +# Back kick + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-12-12_10h50_36.png) +![Screenshot](67c4a5ad-1b40.png) + +## Files +- `back_kick.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Back kick/back_kick.mq5 b/mql5_experts_mt5/Back kick/back_kick.mq5 new file mode 100644 index 0000000..56c358d Binary files /dev/null and b/mql5_experts_mt5/Back kick/back_kick.mq5 differ diff --git a/mql5_experts_mt5/Back kick/expert.png b/mql5_experts_mt5/Back kick/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Back kick/expert.png differ diff --git a/mql5_experts_mt5/Back kick/indicator.png b/mql5_experts_mt5/Back kick/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Back kick/indicator.png differ diff --git a/mql5_experts_mt5/Back kick/logo-2.png b/mql5_experts_mt5/Back kick/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Back kick/logo-2.png differ diff --git a/mql5_experts_mt5/Back to the Future/Back_To_The_Future_Expert_Advisor_settings.png b/mql5_experts_mt5/Back to the Future/Back_To_The_Future_Expert_Advisor_settings.png new file mode 100644 index 0000000..cd00a39 Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/Back_To_The_Future_Expert_Advisor_settings.png differ diff --git a/mql5_experts_mt5/Back to the Future/README.md b/mql5_experts_mt5/Back to the Future/README.md new file mode 100644 index 0000000..43322bb --- /dev/null +++ b/mql5_experts_mt5/Back to the Future/README.md @@ -0,0 +1,25 @@ +# Back to the Future + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](ln0at.png) +![Screenshot](script.png) + +## Files +- `backtothefuture.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Back to the Future/backtothefuture.mq5 b/mql5_experts_mt5/Back to the Future/backtothefuture.mq5 new file mode 100644 index 0000000..c2b6409 --- /dev/null +++ b/mql5_experts_mt5/Back to the Future/backtothefuture.mq5 @@ -0,0 +1,361 @@ +//+------------------------------------------------------------------+ +//| BackToTheFuture.mq5 | +//| Copyright 2015, MetaQuotes Software Corp. | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "jimbulux" +#property link "https://www.mql5.com" +#property version "2.00" +//+------------------------------------------------------------------+ +//| Defines | +//+------------------------------------------------------------------+ +#define CHART_TEXT_OBJECT_NAME "chart_google_quote" +#define CHART_TEXT_COUNTDOWN_NAME "chart_google_countDown" +//+------------------------------------------------------------------+ +//| Includes | +//+------------------------------------------------------------------+ +#include +//+------------------------------------------------------------------+ +//| Inputs | +//+------------------------------------------------------------------+ +input string Commentation1="";//Ïàđàìćòđû đćăóëÿòîđà: +input string GoogleSymbolName="NYSE:C"; //Ńèìâîë â Google +input string GoogleFinanceLink="http://www.google.com/finance?q=c&ei=SK5dVaGeKouvsAHzioDIDA"; //Ńńûëêà íà ńèìâîë +input double BarSize=0.25; //Áàđ äëÿ îòêđûòèÿ îđäćđà +input int GoogleFinanceHistoryMins=60; //Îïćđćæćíèć MetaTrader-à (ìèí.) +input string Commentation2="";//Ïàđàìćòđû MetaTrader: +input double Lots=0.1; //Ëîò +input int TpPips=10; //Take Profit +input int SlPips=5000; //Stop Loss +input int Count=5; //Ńêîëüêî îòêđûâàòü ïîçèöèé (-1 áćńêîíćśíî) +input ENUM_ORDER_TYPE_FILLING Filling=ORDER_FILLING_RETURN; //Đćæèì çàïîëíćíèÿ îđäćđà +input string Commentation3="";//Đàáîòà ïî đàńïèńàíèț: +input bool Monday=true;// Ïîíćäćëüíèê (True - đàáîòàćò, False - îòêëțśćí) +input bool Tuesday=true;// Âòîđíèê (True - đàáîòàćò, False - îòêëțśćí) +input bool Wednesday=true;// Ńđćäà (True - đàáîòàćò, False - îòêëțśćí) +input bool Thursday=true;// Śćòâćđă (True - đàáîòàćò, False - îòêëțśćí) +input bool Friday=true;// Ïÿòíèöà (True - đàáîòàćò, False - îòêëțśćí) +int Monday1=0,Tuesday2=0,Wednesday3=0,Thursday4=0,Friday5=0; +double ArrayQuote[],DiffPrice=0,DeelayPosition=0,HistoryPrice=-1,ClosePrice=0; +int j=0; +datetime StartTime=0; +bool tradeResult=false; +int CountPos=0; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int FIFO() //first - price, two - time + { + j++; + j++; + ArrayResize(ArrayQuote,j,j); +//ArrayFill(ArrayQuote,j-1,1,0); +//Print(__FUNCTION__," ",j," ",gGoogleFinance.GetCurrentQuote()," ",ClosePrice); + ArrayQuote[j-2]=gGoogleFinance.GetCurrentQuote(); + if(ClosePrice==ArrayQuote[j-2]) ArrayQuote[j-2]=0; //Delete Close Price + else ClosePrice=0; //Unvalible Close Price + ArrayQuote[j-1]=double(TimeCurrent()); + return 1; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double FindHistoryPrice() //Get price 75 min to past + { + int b=ArraySize(ArrayQuote); + do + { + if(b <=0 ) return -1; + b--; + b--; +//Print(__FUNCTION__," ",b," ",TimeToString(ArrayQuote[b+1],TIME_DATE|TIME_MINUTES)," > ",TimeCurrent()-GoogleFinanceHistoryMins*60); + } + while(ArrayQuote[b+1]>(TimeCurrent()-GoogleFinanceHistoryMins*60)); + int b75=b;//Price 75 min to past + b++; + while(b+2<=ArraySize(ArrayQuote))//Find trend + { + b++; + b++; + //if(ArrayQuote[b-1]>(ArrayQuote[b75]+BarSize)) break; + //if(ArrayQuote[b-1]<(ArrayQuote[b75]-BarSize)) break; + }; + DiffPrice=ArrayQuote[b-1]; //Price for diffrent + DeelayPosition=ArrayQuote[b]-ArrayQuote[b75+1]; //deelay time + if(ArrayQuote[b75]==0 || DiffPrice==0) //error get quote + { + DiffPrice=0; + return 0; + } + else + return ArrayQuote[b75]; //price 75 min to past + } +//+------------------------------------------------------------------+ +//| Classes | +//+------------------------------------------------------------------+ +class GoogleFinanceSymbol + { +private: + datetime symbolQuoteStartTime; + double symbolQuoteStartPrice; + string symbolName; + string googleFinanceWebLink; + double getQuoteFromGoogleFinance(); + bool sessionOpened; +public: + void GoogleFinanceSymbol(string symbolName,string webLink); + datetime GetQuoteStartTime(); + double GetCurrentQuote(); + double GetStartTimeQuoteValue(); + bool GetGoogleFinanceSessionOpened(); + }; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +GoogleFinanceSymbol::GoogleFinanceSymbol(string pSymbolName,string pWebLink) { +//Print(__FUNCTION__); + symbolName=pSymbolName; + googleFinanceWebLink=pWebLink; + symbolQuoteStartPrice= getQuoteFromGoogleFinance(); + symbolQuoteStartTime = TimeCurrent(); + sessionOpened=sessionOpened; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +datetime GoogleFinanceSymbol::GetQuoteStartTime(void) + { + return symbolQuoteStartTime; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GoogleFinanceSymbol::GetStartTimeQuoteValue(void) + { + return symbolQuoteStartPrice; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GoogleFinanceSymbol::GetCurrentQuote(void) + { + return getQuoteFromGoogleFinance(); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool GoogleFinanceSymbol::GetGoogleFinanceSessionOpened(void) + { + return sessionOpened; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +double GoogleFinanceSymbol::getQuoteFromGoogleFinance(void) { +//Print(__FUNCTION__); + double quote=0; + string headers; + char post[],result[]; +//--- + int res=WebRequest("GET",googleFinanceWebLink,"",NULL,10000,post,ArraySize(post),result,headers); +//--- + string webRes=CharArrayToString(result,0,WHOLE_ARRAY,CP_OEMCP); + int sessionStatusCandidateIndex=StringFind(webRes,"nwp\">"); + int quoteCandidateIndex=StringFind(webRes,""); +//--- + if(quoteCandidateIndex!=-1) + { + quoteCandidateIndex+=StringLen("")+1; + int closeDelimiterIndex=StringFind(quoteCandidate,"=(DeelayPosition))) + { + CTrade trade; + trade.SetTypeFilling(Filling); +//Print(__FUNCTION__," 1 "); + trade.PositionClose(_Symbol); + tradeResult=false; + } + if(!gGoogleFinance.GetGoogleFinanceSessionOpened()) + { + CountPos=0;//reset counter position + ClosePrice=gGoogleFinance.GetCurrentQuote();//Save Close Price +//Print(__FUNCTION__," 2 ",gGoogleFinance.GetCurrentQuote()); + } + j=0; + EventKillTimer(); + OnInit(); +//Print(__FUNCTION__," 3 "); + } + FIFO(); //Load history for ArrayQuote + if(!tradeResult) + HistoryPrice=FindHistoryPrice(); //Price 75 min to past + DiffPrice + DeelayPosition + double timeDiff=(double(TimeCurrent())-gGoogleFinance.GetQuoteStartTime()); + DisplayTextOnChart(CHART_TEXT_COUNTDOWN_NAME,"Since quote start: "+DoubleToString(timeDiff/60,2)+"min",420,20,clrLightSalmon); + if(HistoryPrice!=-1) + { +//Print(__FUNCTION__," 4 ",HistoryPrice); + if((tradeResult) && ((TimeCurrent()-StartTime)>=(DeelayPosition))) + { + CTrade trade; + trade.SetTypeFilling(Filling); +//Print(__FUNCTION__," 5 "); + trade.PositionClose(_Symbol); + tradeResult=false; + } + else + { + if(!tradeResult && CountPos!=Count) + { +//Print(__FUNCTION__," 6 ",DiffPrice," > ",(HistoryPrice+BarSize)," < ",(HistoryPrice-BarSize)); + tradeResult=false; + bool tradeOpened=false; + MqlTradeRequest request={0}; + MqlTradeResult result={0}; + //double currQuote = gGoogleFinance.GetCurrentQuote(); + if(DiffPrice>(HistoryPrice+BarSize)) + { +//Print(__FUNCTION__," 7 ",DiffPrice); + tradeOpened=true; + double ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); + double bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); + double spread = MathAbs(ask-bid); + request.action=TRADE_ACTION_DEAL; // setting a pending order + request.magic=68975; // ORDER_MAGIC + request.symbol=_Symbol; // symbol + request.volume=Lots; // volume in 0.1 lots + request.sl=NormalizeDouble(ask - SlPips * gTickSize, _Digits); // Stop Loss is not specified + request.tp=NormalizeDouble(ask + TpPips * gTickSize, _Digits); // Take Profit is not specified + request.type=ORDER_TYPE_BUY; // order type + request.price=ask; // open price + request.type_filling=Filling; + //--- send a trade request + tradeResult=OrderSend(request,result); + } + else if(DiffPrice<(HistoryPrice-BarSize)) + { +//Print(__FUNCTION__," 8 "); + tradeOpened=true; + double bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); + request.action=TRADE_ACTION_DEAL; // setting a pending order + request.magic=68975; // ORDER_MAGIC + request.symbol=_Symbol; // symbol + request.volume=Lots; // volume in 0.1 lots + request.sl=NormalizeDouble(bid + SlPips * gTickSize, _Digits); // Stop Loss is not specified + request.tp=NormalizeDouble(bid - TpPips * gTickSize, _Digits); // Take Profit is not specified + request.type=ORDER_TYPE_SELL; // order type + request.price=bid; // open price + request.type_filling=Filling; + //--- send a trade request + tradeResult=OrderSend(request,result); + } + if((!tradeResult) && (tradeOpened)) + { + Alert("Error opening new trade: "+result.comment); + } + if((tradeResult) && (tradeOpened)) + { +//Print(__FUNCTION__," 9 ",TimeCurrent()); + StartTime=TimeCurrent(); + CountPos++; + } + delete gGoogleFinance; + gGoogleFinance=new GoogleFinanceSymbol(GoogleSymbolName,GoogleFinanceLink); + string infoText="Google: "+GoogleSymbolName+". Time:"+TimeToString(gGoogleFinance.GetQuoteStartTime()) + +". Value:"+DoubleToString(NormalizeDouble(gGoogleFinance.GetStartTimeQuoteValue(),2),2)+"."; + DisplayTextOnChart(CHART_TEXT_OBJECT_NAME,infoText); + } + } + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void DisplayTextOnChart(string objetName,string textToDisplay,int xPos=10,int yPos=20,int textColor=clrGoldenrod) + { + if(ObjectFind(0,objetName)<0) + { + ObjectCreate(0,objetName,OBJ_LABEL,0,0,0); + } + ObjectSetInteger(0,objetName,OBJPROP_XDISTANCE,xPos); + ObjectSetInteger(0,objetName,OBJPROP_YDISTANCE,yPos); + ObjectSetString(0,objetName,OBJPROP_TEXT,textToDisplay); + ObjectSetString(0,objetName,OBJPROP_FONT,"Verdana"); + ObjectSetInteger(0,objetName,OBJPROP_COLOR,textColor); + ObjectSetInteger(0,objetName,OBJPROP_FONTSIZE,10); + ObjectSetInteger(0,objetName,OBJPROP_SELECTABLE,false); + ChartRedraw(0); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Back to the Future/expert.png b/mql5_experts_mt5/Back to the Future/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/expert.png differ diff --git a/mql5_experts_mt5/Back to the Future/indicator.png b/mql5_experts_mt5/Back to the Future/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/indicator.png differ diff --git a/mql5_experts_mt5/Back to the Future/ln0at.png b/mql5_experts_mt5/Back to the Future/ln0at.png new file mode 100644 index 0000000..43093e9 Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/ln0at.png differ diff --git a/mql5_experts_mt5/Back to the Future/logo-2.png b/mql5_experts_mt5/Back to the Future/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/logo-2.png differ diff --git a/mql5_experts_mt5/Back to the Future/script.png b/mql5_experts_mt5/Back to the Future/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Back to the Future/script.png differ diff --git a/mql5_experts_mt5/Backbone/Backbone_tester.png b/mql5_experts_mt5/Backbone/Backbone_tester.png new file mode 100644 index 0000000..75a9c3b Binary files /dev/null and b/mql5_experts_mt5/Backbone/Backbone_tester.png differ diff --git a/mql5_experts_mt5/Backbone/README.md b/mql5_experts_mt5/Backbone/README.md new file mode 100644 index 0000000..3a851cc --- /dev/null +++ b/mql5_experts_mt5/Backbone/README.md @@ -0,0 +1,24 @@ +# Backbone + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Backbone_tester.png) + +## Files +- `backbone.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Backbone/backbone.mq5 b/mql5_experts_mt5/Backbone/backbone.mq5 new file mode 100644 index 0000000..cea02c0 Binary files /dev/null and b/mql5_experts_mt5/Backbone/backbone.mq5 differ diff --git a/mql5_experts_mt5/Backbone/expert.png b/mql5_experts_mt5/Backbone/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Backbone/expert.png differ diff --git a/mql5_experts_mt5/Backbone/indicator.png b/mql5_experts_mt5/Backbone/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Backbone/indicator.png differ diff --git a/mql5_experts_mt5/Backbone/logo-2.png b/mql5_experts_mt5/Backbone/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Backbone/logo-2.png differ diff --git a/mql5_experts_mt5/Bago EA/Bago_EA_Buy_and_Sell.png b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_and_Sell.png new file mode 100644 index 0000000..65bc028 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_and_Sell.png differ diff --git a/mql5_experts_mt5/Bago EA/Bago_EA_Buy_only.png b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_only.png new file mode 100644 index 0000000..643b30e Binary files /dev/null and b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_only.png differ diff --git a/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_1.png b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_1.png new file mode 100644 index 0000000..f31b681 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_1.png differ diff --git a/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_2.png b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_2.png new file mode 100644 index 0000000..a384989 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/Bago_EA_Buy_pic_2.png differ diff --git a/mql5_experts_mt5/Bago EA/Bago_EA_Sell_only.png b/mql5_experts_mt5/Bago EA/Bago_EA_Sell_only.png new file mode 100644 index 0000000..bc2b619 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/Bago_EA_Sell_only.png differ diff --git a/mql5_experts_mt5/Bago EA/README.md b/mql5_experts_mt5/Bago EA/README.md new file mode 100644 index 0000000..ac983a7 --- /dev/null +++ b/mql5_experts_mt5/Bago EA/README.md @@ -0,0 +1,28 @@ +# Bago EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Bago_EA_Buy_and_Sell.png) +![Screenshot](Bago_EA_Buy_only.png) +![Screenshot](Bago_EA_Buy_pic_1.png) +![Screenshot](Bago_EA_Buy_pic_2.png) +![Screenshot](Bago_EA_Sell_only.png) + +## Files +- `bago_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bago EA/avatar_na2.png b/mql5_experts_mt5/Bago EA/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bago EA/bago_ea.mq5 b/mql5_experts_mt5/Bago EA/bago_ea.mq5 new file mode 100644 index 0000000..6330479 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/bago_ea.mq5 differ diff --git a/mql5_experts_mt5/Bago EA/expert.png b/mql5_experts_mt5/Bago EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/expert.png differ diff --git a/mql5_experts_mt5/Bago EA/indicator.png b/mql5_experts_mt5/Bago EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bago EA/indicator.png differ diff --git a/mql5_experts_mt5/Bago EA/logo-2.png b/mql5_experts_mt5/Bago EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bago EA/logo-2.png differ diff --git a/mql5_experts_mt5/Bands 2/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Bands 2/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Bands 2/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Bands 2/667DAA24-6F19.jpg b/mql5_experts_mt5/Bands 2/667DAA24-6F19.jpg new file mode 100644 index 0000000..5c1aed6 Binary files /dev/null and b/mql5_experts_mt5/Bands 2/667DAA24-6F19.jpg differ diff --git a/mql5_experts_mt5/Bands 2/README.md b/mql5_experts_mt5/Bands 2/README.md new file mode 100644 index 0000000..40aa8bd --- /dev/null +++ b/mql5_experts_mt5/Bands 2/README.md @@ -0,0 +1,25 @@ +# Bands 2 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](667DAA24-6F19.jpg) + +## Files +- `bands_2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bands 2/avatar_na2.png b/mql5_experts_mt5/Bands 2/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bands 2/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bands 2/bands_2.mq5 b/mql5_experts_mt5/Bands 2/bands_2.mq5 new file mode 100644 index 0000000..a3dc30e Binary files /dev/null and b/mql5_experts_mt5/Bands 2/bands_2.mq5 differ diff --git a/mql5_experts_mt5/Bands 2/expert.png b/mql5_experts_mt5/Bands 2/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bands 2/expert.png differ diff --git a/mql5_experts_mt5/Bands 2/indicator.png b/mql5_experts_mt5/Bands 2/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bands 2/indicator.png differ diff --git a/mql5_experts_mt5/Bands 2/logo-2.png b/mql5_experts_mt5/Bands 2/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bands 2/logo-2.png differ diff --git a/mql5_experts_mt5/Bands R-squared/1899544171880__1.png b/mql5_experts_mt5/Bands R-squared/1899544171880__1.png new file mode 100644 index 0000000..b652b81 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/1899544171880__1.png differ diff --git a/mql5_experts_mt5/Bands R-squared/2221561041840__1.png b/mql5_experts_mt5/Bands R-squared/2221561041840__1.png new file mode 100644 index 0000000..399a3bd Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/2221561041840__1.png differ diff --git a/mql5_experts_mt5/Bands R-squared/5926769909216.png b/mql5_experts_mt5/Bands R-squared/5926769909216.png new file mode 100644 index 0000000..5229ab9 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/5926769909216.png differ diff --git a/mql5_experts_mt5/Bands R-squared/66f6e96c-8d25.png b/mql5_experts_mt5/Bands R-squared/66f6e96c-8d25.png new file mode 100644 index 0000000..f46a4a2 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/66f6e96c-8d25.png differ diff --git a/mql5_experts_mt5/Bands R-squared/6800c372-f941.jpg b/mql5_experts_mt5/Bands R-squared/6800c372-f941.jpg new file mode 100644 index 0000000..01f0ae1 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/6800c372-f941.jpg differ diff --git a/mql5_experts_mt5/Bands R-squared/README.md b/mql5_experts_mt5/Bands R-squared/README.md new file mode 100644 index 0000000..fd74d72 --- /dev/null +++ b/mql5_experts_mt5/Bands R-squared/README.md @@ -0,0 +1,28 @@ +# Bands R-squared + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1899544171880__1.png) +![Screenshot](2221561041840__1.png) +![Screenshot](5926769909216.png) +![Screenshot](66f6e96c-8d25.png) +![Screenshot](6800c372-f941.jpg) + +## Files +- `bands.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bands R-squared/avatar_na2.png b/mql5_experts_mt5/Bands R-squared/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bands R-squared/bands.mq5 b/mql5_experts_mt5/Bands R-squared/bands.mq5 new file mode 100644 index 0000000..8cf33af Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/bands.mq5 differ diff --git a/mql5_experts_mt5/Bands R-squared/expert.png b/mql5_experts_mt5/Bands R-squared/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/expert.png differ diff --git a/mql5_experts_mt5/Bands R-squared/indicator.png b/mql5_experts_mt5/Bands R-squared/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/indicator.png differ diff --git a/mql5_experts_mt5/Bands R-squared/logo-2.png b/mql5_experts_mt5/Bands R-squared/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bands R-squared/logo-2.png differ diff --git a/mql5_experts_mt5/Basic CCI RSI/Basic_CCI_RSI.png b/mql5_experts_mt5/Basic CCI RSI/Basic_CCI_RSI.png new file mode 100644 index 0000000..398f504 Binary files /dev/null and b/mql5_experts_mt5/Basic CCI RSI/Basic_CCI_RSI.png differ diff --git a/mql5_experts_mt5/Basic CCI RSI/README.md b/mql5_experts_mt5/Basic CCI RSI/README.md new file mode 100644 index 0000000..ce6277e --- /dev/null +++ b/mql5_experts_mt5/Basic CCI RSI/README.md @@ -0,0 +1,24 @@ +# Basic CCI RSI + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Basic_CCI_RSI.png) + +## Files +- `basic_cci_rsi.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Basic CCI RSI/basic_cci_rsi.mq5 b/mql5_experts_mt5/Basic CCI RSI/basic_cci_rsi.mq5 new file mode 100644 index 0000000..fd012f9 Binary files /dev/null and b/mql5_experts_mt5/Basic CCI RSI/basic_cci_rsi.mq5 differ diff --git a/mql5_experts_mt5/Basic CCI RSI/expert.png b/mql5_experts_mt5/Basic CCI RSI/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Basic CCI RSI/expert.png differ diff --git a/mql5_experts_mt5/Basic CCI RSI/indicator.png b/mql5_experts_mt5/Basic CCI RSI/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Basic CCI RSI/indicator.png differ diff --git a/mql5_experts_mt5/Basic CCI RSI/logo-2.png b/mql5_experts_mt5/Basic CCI RSI/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Basic CCI RSI/logo-2.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/64302244-D50D.png b/mql5_experts_mt5/Basic Martingale EA v3/64302244-D50D.png new file mode 100644 index 0000000..e1386e0 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/64302244-D50D.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/67cc30cf-d2ba.jpg b/mql5_experts_mt5/Basic Martingale EA v3/67cc30cf-d2ba.jpg new file mode 100644 index 0000000..cdd2d82 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/67cc30cf-d2ba.jpg differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/README.md b/mql5_experts_mt5/Basic Martingale EA v3/README.md new file mode 100644 index 0000000..70a6aee --- /dev/null +++ b/mql5_experts_mt5/Basic Martingale EA v3/README.md @@ -0,0 +1,26 @@ +# Basic Martingale EA v3 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](64302244-D50D.png) +![Screenshot](67cc30cf-d2ba.jpg) +![Screenshot](library.png) + +## Files +- `basic_martingale_ea_3.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Basic Martingale EA v3/avatar_na2.png b/mql5_experts_mt5/Basic Martingale EA v3/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/avatar_na2.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/basic_martingale_ea_3.mq5 b/mql5_experts_mt5/Basic Martingale EA v3/basic_martingale_ea_3.mq5 new file mode 100644 index 0000000..6f16d96 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/basic_martingale_ea_3.mq5 differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/expert.png b/mql5_experts_mt5/Basic Martingale EA v3/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/expert.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/indicator.png b/mql5_experts_mt5/Basic Martingale EA v3/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/indicator.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/library.png b/mql5_experts_mt5/Basic Martingale EA v3/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/library.png differ diff --git a/mql5_experts_mt5/Basic Martingale EA v3/logo-2.png b/mql5_experts_mt5/Basic Martingale EA v3/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Basic Martingale EA v3/logo-2.png differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/582B118B-F237.jpg b/mql5_experts_mt5/Basket Closer Profit_Loss/582B118B-F237.jpg new file mode 100644 index 0000000..120131b Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/582B118B-F237.jpg differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/5B9159C3-EF07.jpg b/mql5_experts_mt5/Basket Closer Profit_Loss/5B9159C3-EF07.jpg new file mode 100644 index 0000000..517f594 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/5B9159C3-EF07.jpg differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/65c7e323-11b6.jpg b/mql5_experts_mt5/Basket Closer Profit_Loss/65c7e323-11b6.jpg new file mode 100644 index 0000000..f2538c8 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/65c7e323-11b6.jpg differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/README.md b/mql5_experts_mt5/Basket Closer Profit_Loss/README.md new file mode 100644 index 0000000..1939f56 --- /dev/null +++ b/mql5_experts_mt5/Basket Closer Profit_Loss/README.md @@ -0,0 +1,27 @@ +# Basket Closer Profit_Loss + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](582B118B-F237.jpg) +![Screenshot](5B9159C3-EF07.jpg) +![Screenshot](65c7e323-11b6.jpg) +![Screenshot](library.png) + +## Files +- `basket_close_2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/avatar_na2.png b/mql5_experts_mt5/Basket Closer Profit_Loss/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/avatar_na2.png differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/basket_close_2.mq5 b/mql5_experts_mt5/Basket Closer Profit_Loss/basket_close_2.mq5 new file mode 100644 index 0000000..ed38119 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/basket_close_2.mq5 differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/expert.png b/mql5_experts_mt5/Basket Closer Profit_Loss/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/expert.png differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/indicator.png b/mql5_experts_mt5/Basket Closer Profit_Loss/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/indicator.png differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/library.png b/mql5_experts_mt5/Basket Closer Profit_Loss/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/library.png differ diff --git a/mql5_experts_mt5/Basket Closer Profit_Loss/logo-2.png b/mql5_experts_mt5/Basket Closer Profit_Loss/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Basket Closer Profit_Loss/logo-2.png differ diff --git a/mql5_experts_mt5/Basket Manager EA/README.md b/mql5_experts_mt5/Basket Manager EA/README.md new file mode 100644 index 0000000..146cbe5 --- /dev/null +++ b/mql5_experts_mt5/Basket Manager EA/README.md @@ -0,0 +1,24 @@ +# Basket Manager EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) + +## Files +- `basket_manager_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Basket Manager EA/basket_manager_ea.mq5 b/mql5_experts_mt5/Basket Manager EA/basket_manager_ea.mq5 new file mode 100644 index 0000000..70d104f --- /dev/null +++ b/mql5_experts_mt5/Basket Manager EA/basket_manager_ea.mq5 @@ -0,0 +1,61 @@ +//+------------------------------------------------------------------+ +//| Basket Manager EA | +//| Copyright 2025, Yashar Seyyedin | +//| https://www.mql5.com/en/users/yashar.seyyedin | +//+------------------------------------------------------------------+ +#include +CTrade trade; + +input int n=3; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + if(PositionsTotal()>=n) + { + if(AccountInfoDouble(ACCOUNT_EQUITY)>AccountInfoDouble(ACCOUNT_BALANCE)) + { + while(PositionsTotal()>0) + trade.PositionClose(PositionGetTicket(0)); + } + } + } + +#include +CDealInfo m_deal; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTradeTransaction(const MqlTradeTransaction& trans, + const MqlTradeRequest& request, + const MqlTradeResult& result) + { + if(PositionsTotal()!=n) + return; + if(AccountInfoDouble(ACCOUNT_EQUITY)1) + if(PositionGetTicket(0)!=ticket) + trade.PositionClose(PositionGetTicket(0)); + } + } + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Basket Manager EA/expert.png b/mql5_experts_mt5/Basket Manager EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Basket Manager EA/expert.png differ diff --git a/mql5_experts_mt5/Basket Manager EA/indicator.png b/mql5_experts_mt5/Basket Manager EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Basket Manager EA/indicator.png differ diff --git a/mql5_experts_mt5/Basket Manager EA/logo-2.png b/mql5_experts_mt5/Basket Manager EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Basket Manager EA/logo-2.png differ diff --git a/mql5_experts_mt5/Basket Manager EA/script.png b/mql5_experts_mt5/Basket Manager EA/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Basket Manager EA/script.png differ diff --git a/mql5_experts_mt5/BeerGodEA/README.md b/mql5_experts_mt5/BeerGodEA/README.md new file mode 100644 index 0000000..be66dd3 --- /dev/null +++ b/mql5_experts_mt5/BeerGodEA/README.md @@ -0,0 +1,23 @@ +# BeerGodEA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `beergodea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BeerGodEA/beergodea.mq5 b/mql5_experts_mt5/BeerGodEA/beergodea.mq5 new file mode 100644 index 0000000..bf41923 Binary files /dev/null and b/mql5_experts_mt5/BeerGodEA/beergodea.mq5 differ diff --git a/mql5_experts_mt5/BeerGodEA/expert.png b/mql5_experts_mt5/BeerGodEA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BeerGodEA/expert.png differ diff --git a/mql5_experts_mt5/BeerGodEA/indicator.png b/mql5_experts_mt5/BeerGodEA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BeerGodEA/indicator.png differ diff --git a/mql5_experts_mt5/BeerGodEA/logo-2.png b/mql5_experts_mt5/BeerGodEA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BeerGodEA/logo-2.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/57EBFE48-0594.jpg b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/57EBFE48-0594.jpg new file mode 100644 index 0000000..336f814 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/57EBFE48-0594.jpg differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/63d3fe27-7289.jpg b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/63d3fe27-7289.jpg new file mode 100644 index 0000000..a253c18 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/63d3fe27-7289.jpg differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/6667E909-5358.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/6667E909-5358.png new file mode 100644 index 0000000..67de8a9 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/6667E909-5358.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/683502d3-b94b.jpg b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/683502d3-b94b.jpg new file mode 100644 index 0000000..f17a65e Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/683502d3-b94b.jpg differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_iTime_0_00_46608j.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_iTime_0_00_46608j.png new file mode 100644 index 0000000..bbaf7a1 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_iTime_0_00_46608j.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_tTime_0_00_01j14c.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_tTime_0_00_01j14c.png new file mode 100644 index 0000000..54ee6b6 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/MovingAverageMartinGalec5fb857.autosave_tTime_0_00_01j14c.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/README.md b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/README.md new file mode 100644 index 0000000..59db955 --- /dev/null +++ b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/README.md @@ -0,0 +1,30 @@ +# Beginner Programming_ Moving Average Crossover with and without Martingale functionality + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](57EBFE48-0594.jpg) +![Screenshot](63d3fe27-7289.jpg) +![Screenshot](6667E909-5358.png) +![Screenshot](683502d3-b94b.jpg) +![Screenshot](MovingAverageMartinGalec5fb857.autosave_iTime_0_00_46608j.png) +![Screenshot](MovingAverageMartinGalec5fb857.autosave_tTime_0_00_01j14c.png) +![Screenshot](script.png) + +## Files +- `movingaverage.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/avatar_na2.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/avatar_na2.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/expert.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/expert.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/indicator.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/indicator.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/logo-2.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/logo-2.png differ diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/movingaverage.mq5 b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/movingaverage.mq5 new file mode 100644 index 0000000..1348571 --- /dev/null +++ b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/movingaverage.mq5 @@ -0,0 +1,73 @@ + +#property copyright "Mueller Peter" +#property link "https://www.mql5.com/en/users/mullerp04/seller" +#property version "1.00" + +// Include external functions +#include + +// Inputs for the Expert Advisor +input int MAPeriod = 50; // Moving Average period +input double LotSize = 0.01; // Lot size for trades +input int TPPoints = 150; // Take profit points +input int SLPoints = 150; // Stop loss points + +CTrade Trade; // Object for managing trades + +// Initialization function +int OnInit() +{ + return(INIT_SUCCEEDED); // Initialization succeeded +} + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ + // Nothing to clean up for now +} + +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() +{ + // Handle for the moving average indicator and arrays to store its values + static int MAhandle = iMA(_Symbol, PERIOD_CURRENT, MAPeriod, 0, MODE_SMA, PRICE_CLOSE); + static double MAArray[2]; + + // Check if the market is open + if(!MarketOpen()) + return; + + // If there are open positions, exit the function + if(PositionsTotal()) + return; + + // If a new candle has formed + if(IsNewCandle()) + { + // Copy the moving average values into the array + CopyBuffer(MAhandle, 0, 1, 2, MAArray); + double PrevClose = iClose(_Symbol, PERIOD_CURRENT, 2); // Close price of the previous candle + double CurrentClose = iClose(_Symbol, PERIOD_CURRENT, 1); // Close price of the current candle + + // If the moving average crosses above the price, sell + if(MAArray[0] < PrevClose && MAArray[1] > CurrentClose) + { + double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + if(CheckVolumeValue(LotSize)) // Checking wether the volume is valid + Trade.Sell(RoundtoLots(LotSize), _Symbol, 0, Round(bid + SLPoints * _Point, _Digits), Round(bid - TPPoints * _Point, _Digits)); + + } + + // If the moving average crosses below the price, buy + if(MAArray[0] > PrevClose && MAArray[1] < CurrentClose) + { + double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + if(CheckVolumeValue(LotSize)) // Checking wether the volume is valid + Trade.Buy(RoundtoLots(LotSize), _Symbol, 0, Round(ask - SLPoints * _Point, _Digits), Round(ask + TPPoints * _Point, _Digits)); + } + } +} diff --git a/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/script.png b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Beginner Programming_ Moving Average Crossover with and without Martingale functionality/script.png differ diff --git a/mql5_experts_mt5/BigBarSound/README.md b/mql5_experts_mt5/BigBarSound/README.md new file mode 100644 index 0000000..87671a7 --- /dev/null +++ b/mql5_experts_mt5/BigBarSound/README.md @@ -0,0 +1,23 @@ +# BigBarSound + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `bigbarsound.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BigBarSound/bigbarsound.mq5 b/mql5_experts_mt5/BigBarSound/bigbarsound.mq5 new file mode 100644 index 0000000..cb68722 --- /dev/null +++ b/mql5_experts_mt5/BigBarSound/bigbarsound.mq5 @@ -0,0 +1,66 @@ +//+------------------------------------------------------------------+ +//| BigBarSound.mq4 | +//| Alexey Volchanskiy | +//| http://www.robo-forex.ru | +//+------------------------------------------------------------------+ +#property copyright "Alexey Volchanskiy" +#property link "http://www.robo-forex.ru" +#property version "1.00" +#property strict +#property description "EA plays WavFile when bar size is lager of BarPoint value" + +#include + +enum StartPoint {OpenClose,HighLow}; + +input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; +input int BarPoint = 200; +input StartPoint SP = HighLow; +input string WavFile = "alert.wav"; +input bool ShowAlert = false; + +MqlRates rates_array[1]; +CSymbolInfo symbolInfo; +//+------------------------------------------------------------------+ +//| Detects begin of new bar | +//+------------------------------------------------------------------+ +bool NewBar() + { + static datetime lastbar=0; + datetime curbar=rates_array[0].time; + if(lastbar!=curbar) + { + lastbar=curbar; + return (true); + } + return(false); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + double diff=0; + static bool trigger=true; // for one-shot play sound in bar duration + symbolInfo.RefreshRates(); + if(!CopyRates(_Symbol,TimeFrame,0,1,rates_array)) + { + Print("ERROR: Can't copy the new bar data!"); + return; + } + if(NewBar()) + trigger=true; + + if(SP==OpenClose) + diff=MathAbs(symbolInfo.Ask()-rates_array[0].open); + else + diff=MathAbs(rates_array[0].high-rates_array[0].low); + if(trigger && diff>=BarPoint*Point()) + { + PlaySound(WavFile); + trigger=false; + if(ShowAlert) + Alert("Signal!"); + } + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/BigBarSound/expert.png b/mql5_experts_mt5/BigBarSound/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BigBarSound/expert.png differ diff --git a/mql5_experts_mt5/BigBarSound/indicator.png b/mql5_experts_mt5/BigBarSound/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BigBarSound/indicator.png differ diff --git a/mql5_experts_mt5/BigBarSound/logo-2.png b/mql5_experts_mt5/BigBarSound/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BigBarSound/logo-2.png differ diff --git a/mql5_experts_mt5/Bill Williams/2020-11-23_10h25_56.png b/mql5_experts_mt5/Bill Williams/2020-11-23_10h25_56.png new file mode 100644 index 0000000..e74f446 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/2020-11-23_10h25_56.png differ diff --git a/mql5_experts_mt5/Bill Williams/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Bill Williams/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Bill Williams/EURUSDM5.png b/mql5_experts_mt5/Bill Williams/EURUSDM5.png new file mode 100644 index 0000000..e0119d6 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/EURUSDM5.png differ diff --git a/mql5_experts_mt5/Bill Williams/README.md b/mql5_experts_mt5/Bill Williams/README.md new file mode 100644 index 0000000..d894316 --- /dev/null +++ b/mql5_experts_mt5/Bill Williams/README.md @@ -0,0 +1,26 @@ +# Bill Williams + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2020-11-23_10h25_56.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](EURUSDM5.png) + +## Files +- `bill_williams.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bill Williams/avatar_na2.png b/mql5_experts_mt5/Bill Williams/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bill Williams/bill_williams.mq5 b/mql5_experts_mt5/Bill Williams/bill_williams.mq5 new file mode 100644 index 0000000..052dcc3 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/bill_williams.mq5 differ diff --git a/mql5_experts_mt5/Bill Williams/expert.png b/mql5_experts_mt5/Bill Williams/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/expert.png differ diff --git a/mql5_experts_mt5/Bill Williams/indicator.png b/mql5_experts_mt5/Bill Williams/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/indicator.png differ diff --git a/mql5_experts_mt5/Bill Williams/logo-2.png b/mql5_experts_mt5/Bill Williams/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bill Williams/logo-2.png differ diff --git a/mql5_experts_mt5/Billy expert/64a647db-8a58.png b/mql5_experts_mt5/Billy expert/64a647db-8a58.png new file mode 100644 index 0000000..c61489c Binary files /dev/null and b/mql5_experts_mt5/Billy expert/64a647db-8a58.png differ diff --git a/mql5_experts_mt5/Billy expert/Billy_expert_EURUSD_M15.png b/mql5_experts_mt5/Billy expert/Billy_expert_EURUSD_M15.png new file mode 100644 index 0000000..46daad7 Binary files /dev/null and b/mql5_experts_mt5/Billy expert/Billy_expert_EURUSD_M15.png differ diff --git a/mql5_experts_mt5/Billy expert/Billy_expert_GBPUSD_M15.png b/mql5_experts_mt5/Billy expert/Billy_expert_GBPUSD_M15.png new file mode 100644 index 0000000..13c83b7 Binary files /dev/null and b/mql5_experts_mt5/Billy expert/Billy_expert_GBPUSD_M15.png differ diff --git a/mql5_experts_mt5/Billy expert/Billy_expert_USDJPY_M15.png b/mql5_experts_mt5/Billy expert/Billy_expert_USDJPY_M15.png new file mode 100644 index 0000000..e4a751d Binary files /dev/null and b/mql5_experts_mt5/Billy expert/Billy_expert_USDJPY_M15.png differ diff --git a/mql5_experts_mt5/Billy expert/Billy_expert_stochastic.png b/mql5_experts_mt5/Billy expert/Billy_expert_stochastic.png new file mode 100644 index 0000000..a241583 Binary files /dev/null and b/mql5_experts_mt5/Billy expert/Billy_expert_stochastic.png differ diff --git a/mql5_experts_mt5/Billy expert/Billy_expert_three_candles.png b/mql5_experts_mt5/Billy expert/Billy_expert_three_candles.png new file mode 100644 index 0000000..ab6059a Binary files /dev/null and b/mql5_experts_mt5/Billy expert/Billy_expert_three_candles.png differ diff --git a/mql5_experts_mt5/Billy expert/README.md b/mql5_experts_mt5/Billy expert/README.md new file mode 100644 index 0000000..12673dc --- /dev/null +++ b/mql5_experts_mt5/Billy expert/README.md @@ -0,0 +1,24 @@ +# Billy expert + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](64a647db-8a58.png) + +## Files +- `billy_expert.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Billy expert/billy_expert.mq5 b/mql5_experts_mt5/Billy expert/billy_expert.mq5 new file mode 100644 index 0000000..adfe2eb Binary files /dev/null and b/mql5_experts_mt5/Billy expert/billy_expert.mq5 differ diff --git a/mql5_experts_mt5/Billy expert/expert.png b/mql5_experts_mt5/Billy expert/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Billy expert/expert.png differ diff --git a/mql5_experts_mt5/Billy expert/indicator.png b/mql5_experts_mt5/Billy expert/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Billy expert/indicator.png differ diff --git a/mql5_experts_mt5/Billy expert/logo-2.png b/mql5_experts_mt5/Billy expert/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Billy expert/logo-2.png differ diff --git a/mql5_experts_mt5/Binario/Binario_Dead_season.png b/mql5_experts_mt5/Binario/Binario_Dead_season.png new file mode 100644 index 0000000..636bbb8 Binary files /dev/null and b/mql5_experts_mt5/Binario/Binario_Dead_season.png differ diff --git a/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_false.png b/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_false.png new file mode 100644 index 0000000..1793a36 Binary files /dev/null and b/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_false.png differ diff --git a/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_true.png b/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_true.png new file mode 100644 index 0000000..9462907 Binary files /dev/null and b/mql5_experts_mt5/Binario/Binario_Expert_Every_Tick_true.png differ diff --git a/mql5_experts_mt5/Binario/Binario_signals.png b/mql5_experts_mt5/Binario/Binario_signals.png new file mode 100644 index 0000000..44a291e Binary files /dev/null and b/mql5_experts_mt5/Binario/Binario_signals.png differ diff --git a/mql5_experts_mt5/Binario/README.md b/mql5_experts_mt5/Binario/README.md new file mode 100644 index 0000000..21169c4 --- /dev/null +++ b/mql5_experts_mt5/Binario/README.md @@ -0,0 +1,25 @@ +# Binario + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Binario_Dead_season.png) +![Screenshot](Binario_signals.png) + +## Files +- `binario.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Binario/binario.mq5 b/mql5_experts_mt5/Binario/binario.mq5 new file mode 100644 index 0000000..5b67a37 Binary files /dev/null and b/mql5_experts_mt5/Binario/binario.mq5 differ diff --git a/mql5_experts_mt5/Binario/expert.png b/mql5_experts_mt5/Binario/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Binario/expert.png differ diff --git a/mql5_experts_mt5/Binario/indicator.png b/mql5_experts_mt5/Binario/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Binario/indicator.png differ diff --git a/mql5_experts_mt5/Binario/logo-2.png b/mql5_experts_mt5/Binario/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Binario/logo-2.png differ diff --git a/mql5_experts_mt5/BollTrade/BollTrade_tester.png b/mql5_experts_mt5/BollTrade/BollTrade_tester.png new file mode 100644 index 0000000..95cb8b9 Binary files /dev/null and b/mql5_experts_mt5/BollTrade/BollTrade_tester.png differ diff --git a/mql5_experts_mt5/BollTrade/README.md b/mql5_experts_mt5/BollTrade/README.md new file mode 100644 index 0000000..de37766 --- /dev/null +++ b/mql5_experts_mt5/BollTrade/README.md @@ -0,0 +1,24 @@ +# BollTrade + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](BollTrade_tester.png) + +## Files +- `bolltrade.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BollTrade/bolltrade.mq5 b/mql5_experts_mt5/BollTrade/bolltrade.mq5 new file mode 100644 index 0000000..0bef366 Binary files /dev/null and b/mql5_experts_mt5/BollTrade/bolltrade.mq5 differ diff --git a/mql5_experts_mt5/BollTrade/expert.png b/mql5_experts_mt5/BollTrade/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BollTrade/expert.png differ diff --git a/mql5_experts_mt5/BollTrade/indicator.png b/mql5_experts_mt5/BollTrade/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BollTrade/indicator.png differ diff --git a/mql5_experts_mt5/BollTrade/logo-2.png b/mql5_experts_mt5/BollTrade/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BollTrade/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/Bollinger_Band_Two_MA_and_Zig-Zag.png b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/Bollinger_Band_Two_MA_and_Zig-Zag.png new file mode 100644 index 0000000..197abe8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/Bollinger_Band_Two_MA_and_Zig-Zag.png differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/README.md b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/README.md new file mode 100644 index 0000000..6814019 --- /dev/null +++ b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/README.md @@ -0,0 +1,25 @@ +# Bollinger Band Two MA and ZigZag + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Bollinger_Band_Two_MA_and_Zig-Zag.png) + +## Files +- `bollinger_band_two_ma_and_zig-zag.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/avatar_na2.png b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/bollinger_band_two_ma_and_zig-zag.mq5 b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/bollinger_band_two_ma_and_zig-zag.mq5 new file mode 100644 index 0000000..2d6edef Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/bollinger_band_two_ma_and_zig-zag.mq5 differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/expert.png b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/indicator.png b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/logo-2.png b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Band Two MA and ZigZag/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/Bollinger_Bands_N_positions_v2.png b/mql5_experts_mt5/Bollinger Bands N positions v2/Bollinger_Bands_N_positions_v2.png new file mode 100644 index 0000000..3c3da8b Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions v2/Bollinger_Bands_N_positions_v2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/README.md b/mql5_experts_mt5/Bollinger Bands N positions v2/README.md new file mode 100644 index 0000000..f7f736d --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands N positions v2/README.md @@ -0,0 +1,24 @@ +# Bollinger Bands N positions v2 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Bollinger_Bands_N_positions_v2.png) + +## Files +- `bollinger_bands_n_positions_v2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/bollinger_bands_n_positions_v2.mq5 b/mql5_experts_mt5/Bollinger Bands N positions v2/bollinger_bands_n_positions_v2.mq5 new file mode 100644 index 0000000..2dc1cc1 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions v2/bollinger_bands_n_positions_v2.mq5 differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/expert.png b/mql5_experts_mt5/Bollinger Bands N positions v2/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions v2/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/indicator.png b/mql5_experts_mt5/Bollinger Bands N positions v2/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions v2/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions v2/logo-2.png b/mql5_experts_mt5/Bollinger Bands N positions v2/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions v2/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions/Bollinger_Bands_N_positions__1.png b/mql5_experts_mt5/Bollinger Bands N positions/Bollinger_Bands_N_positions__1.png new file mode 100644 index 0000000..e85336e Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions/Bollinger_Bands_N_positions__1.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions/README.md b/mql5_experts_mt5/Bollinger Bands N positions/README.md new file mode 100644 index 0000000..f18b4ba --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands N positions/README.md @@ -0,0 +1,24 @@ +# Bollinger Bands N positions + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Bollinger_Bands_N_positions__1.png) + +## Files +- `bollinger_bands_n_positions.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger Bands N positions/bollinger_bands_n_positions.mq5 b/mql5_experts_mt5/Bollinger Bands N positions/bollinger_bands_n_positions.mq5 new file mode 100644 index 0000000..582f8e3 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions/bollinger_bands_n_positions.mq5 differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions/expert.png b/mql5_experts_mt5/Bollinger Bands N positions/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions/indicator.png b/mql5_experts_mt5/Bollinger Bands N positions/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Bands N positions/logo-2.png b/mql5_experts_mt5/Bollinger Bands N positions/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands N positions/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/1578427615019__1.png b/mql5_experts_mt5/Bollinger Bands RSI/1578427615019__1.png new file mode 100644 index 0000000..5a3f38c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/1578427615019__1.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/5F50C461-02A9.png b/mql5_experts_mt5/Bollinger Bands RSI/5F50C461-02A9.png new file mode 100644 index 0000000..5760358 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/5F50C461-02A9.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Bollinger Bands RSI/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI.png b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI.png new file mode 100644 index 0000000..e8d87b7 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_parameters.png b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_parameters.png new file mode 100644 index 0000000..744ea29 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_parameters.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_result.png b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_result.png new file mode 100644 index 0000000..b0ed92b Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/Bollinger_Bands_RSI_result.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/README.md b/mql5_experts_mt5/Bollinger Bands RSI/README.md new file mode 100644 index 0000000..824e059 --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands RSI/README.md @@ -0,0 +1,30 @@ +# Bollinger Bands RSI + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1578427615019__1.png) +![Screenshot](5F50C461-02A9.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Bollinger_Bands_RSI.png) +![Screenshot](Bollinger_Bands_RSI_parameters.png) +![Screenshot](Bollinger_Bands_RSI_result.png) +![Screenshot](Untitled_Project.gif) + +## Files +- `bollinger_bands_rsi.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger Bands RSI/Untitled_Project.gif b/mql5_experts_mt5/Bollinger Bands RSI/Untitled_Project.gif new file mode 100644 index 0000000..81fd286 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/Untitled_Project.gif differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/avatar_na2.png b/mql5_experts_mt5/Bollinger Bands RSI/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/avatar_na2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/bollinger_bands_rsi.mq5 b/mql5_experts_mt5/Bollinger Bands RSI/bollinger_bands_rsi.mq5 new file mode 100644 index 0000000..e371549 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/bollinger_bands_rsi.mq5 differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/expert.png b/mql5_experts_mt5/Bollinger Bands RSI/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/indicator.png b/mql5_experts_mt5/Bollinger Bands RSI/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Bands RSI/logo-2.png b/mql5_experts_mt5/Bollinger Bands RSI/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands RSI/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/0.5.png b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/0.5.png new file mode 100644 index 0000000..25b3b29 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/0.5.png differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/1__1.gif b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/1__1.gif new file mode 100644 index 0000000..5a0e598 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/1__1.gif differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/507C0684-4A63.jpg b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/507C0684-4A63.jpg new file mode 100644 index 0000000..4f902eb Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/507C0684-4A63.jpg differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/56BD91C0-A58B.JPG b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/56BD91C0-A58B.JPG new file mode 100644 index 0000000..3c61c56 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/56BD91C0-A58B.JPG differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/64de3a47-6ab8.jpg b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/64de3a47-6ab8.jpg new file mode 100644 index 0000000..77bfe56 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/64de3a47-6ab8.jpg differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/bb-automated.mq4 b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/bb-automated.mq4 new file mode 100644 index 0000000..83b0a61 --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/bb-automated.mq4 @@ -0,0 +1,198 @@ +//+------------------------------------------------------------------+ +//| bb-automated.mq4 | +//| Copyright 2017, Mohammad Soubra | +//| https://www.mql5.com/en/users/soubra2003/seller | +//+------------------------------------------------------------------+ + + +#property copyright "Copyright 2017, Mohammad Soubra" +#property link "https://www.mql5.com/en/users/soubra2003/seller" +#property version "1.00" +#property strict + +#include + + +input int BB_period = 20; +input double BB_dev = 2; + +double BB_UPPER, BB_SMA, BB_LOWER; + + +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() +{ + HideTestIndicators(true); + //This function sets a flag hiding indicators called by the Expert Advisor + + BB_UPPER = iBands(NULL ,PERIOD_M15 ,BB_period ,BB_dev ,0 ,PRICE_CLOSE ,MODE_UPPER ,0); + BB_SMA = iBands(NULL ,PERIOD_M15 ,BB_period ,BB_dev ,0 ,PRICE_CLOSE ,MODE_SMA ,0); + BB_LOWER = iBands(NULL ,PERIOD_M15 ,BB_period ,BB_dev ,0 ,PRICE_CLOSE ,MODE_LOWER ,0); + + //Close executed Buy/Sell when touch the center MA + if(Close[0]>=BB_SMA) + CloseAllBuy(); + else if(Close[0]<=BB_SMA) + CloseAllSell(); + + if(iVolume(NULL,PERIOD_M15,0)==1) + //New candle + { + if(OrdersTotal()>0) CloseAllPending(); + + //--- + BuyLimitExecute(); + SellLimitExecute(); + } +} + + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ +//--- + + Comment(""); +} + + +//+------------------------------------------------------------------+ +//| Expert BuyLimitExecute function +//+------------------------------------------------------------------+ +void BuyLimitExecute() +{ + int buylimit= OrderSend(OrderSymbol(), //Pair + /*DOWN*/ OP_BUYLIMIT, //Command Type + 0.01, //Lot Size + BB_LOWER, //Needed Price + 3, //Max. Slippage + 0, //Stop Loss + 0, //Take Profit + "BB Automated", //Comment + 1221, //Magic No. + 0, //Expiration (Only Pending Orders) + clrNONE); //Arrow Color + + if(buylimit>0) + Print("Buy-Limit order successfully placed."); + else + Print("Error in placing buy-limit order: ", ErrorDescription(GetLastError())); +} + + +//+------------------------------------------------------------------+ +//| Expert SellLimitExecute function +//+------------------------------------------------------------------+ +void SellLimitExecute() +{ + int selllimit = OrderSend(OrderSymbol(), //Pair + /*UP*/ OP_SELLLIMIT, //Command Type + 0.01, //Lot Size + BB_UPPER, //Needed Price + 3, //Max. Slippage + 0, //Stop Loss + 0, //Take Profit + "BB Automated", //Comment + 1221, //Magic No. + 0, //Expiration (Only Pending Orders) + clrNONE); //Arrow Color + + if(selllimit>0) + Print("Sell-Limit order successfully placed."); + else + Print("Error in placing sell-limit order: ", ErrorDescription(GetLastError())); +} + + +//+------------------------------------------------------------------+ +//| CLOSE ALL OPENED BUY +//+------------------------------------------------------------------+ +void CloseAllBuy() +{ + int total = OrdersTotal(); + for(int i=total-1; i>=0; i--) + { + int ticket = OrderSelect(i,SELECT_BY_POS); + int type = OrderType(); + bool result = false; + + if( OrderMagicNumber() == 1221 ) + { + switch(type) + { + //Close opened long positions + case OP_BUY : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),6,clrNONE); + } + + if(!result) + { + Alert("Order ",OrderTicket()," failed to close. Error: ",ErrorDescription(GetLastError())); + Sleep(750); + } + } + } +} + + +//+------------------------------------------------------------------+ +//| CLOSE ALL OPENED SELL +//+------------------------------------------------------------------+ +void CloseAllSell() +{ + int total = OrdersTotal(); + for(int i=total-1; i>=0; i--) + { + int ticket = OrderSelect(i,SELECT_BY_POS); + int type = OrderType(); + bool result = false; + + if( OrderMagicNumber() == 1221 ) + { + switch(type) + { + //Close opened short positions + case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),6,clrNONE); + } + + if(!result) + { + Alert("Order ",OrderTicket()," failed to close. Error: ",ErrorDescription(GetLastError())); + Sleep(750); + } + } + } +} + + +//+------------------------------------------------------------------+ +//| CLOSE ALL PENDING POSITIONS +//+------------------------------------------------------------------+ +void CloseAllPending() +{ + int total = OrdersTotal(); + for(int i=total-1; i>=0; i--) + { + int ticket = OrderSelect(i,SELECT_BY_POS); + int type = OrderType(); + bool result = false; + + switch(type) + { + case OP_BUYLIMIT : result = OrderDelete(OrderTicket(),clrNONE); break; + case OP_SELLLIMIT : result = OrderDelete(OrderTicket(),clrNONE); + } + + if(result==false) + { + Comment("Order ",OrderTicket()," failed to close. Error: ",ErrorDescription(GetLastError())); + Sleep(750); + } + } +} + + +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/expert.png b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/indicator.png b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/logo-2.png b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger Bands as Support & Resistance/script.png b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands as Support & Resistance/script.png differ diff --git a/mql5_experts_mt5/Bollinger Bands/README.md b/mql5_experts_mt5/Bollinger Bands/README.md new file mode 100644 index 0000000..3a2ff0e --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands/README.md @@ -0,0 +1,23 @@ +# Bollinger Bands + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `bollinger_bands.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger Bands/bollinger_bands.mq5 b/mql5_experts_mt5/Bollinger Bands/bollinger_bands.mq5 new file mode 100644 index 0000000..fc0208f --- /dev/null +++ b/mql5_experts_mt5/Bollinger Bands/bollinger_bands.mq5 @@ -0,0 +1,493 @@ +//+------------------------------------------------------------------+ +//| Bollinger Bands(barabashkakvn's edition).mq5 | +//+------------------------------------------------------------------+ +#include +#include +#include +#include +#include +#include +CPositionInfo m_position; // trade position object +CTrade m_trade; // trading object +CSymbolInfo m_symbol; // symbol info object +CAccountInfo m_account; // account info wrapper +CDealInfo m_deal; // deals object +COrderInfo m_order; // pending orders object +#property copyright "xoiper" +#property link "kin.city@yahoo.com" +//--- Profit/Loss +input ushort InpProfitMade = 3; // how much money do you expect to make +input ushort InpLossLimit = 20; // how much loss can you tolorate +//--- Bollinger Bands +input int BB_period=4; // Bollinger period +input int BB_deviation=2; // Bollinger deviation +//--- Other +input ushort InpBDistance = 3; // plus how much +input double InpLots = 1.0; // how many lots to trade at a time +input bool LotIncrease=true; // grow lots based on balance = true +//--- Non-external flag settings +bool logging=false; // log data or not +bool logerrs=false; // log errors or not +bool logtick=false; // log tick data while orders open (or not) +bool OneOrderOnly=true; // one order at a time or not +//--- Naming and numbering +ulong m_magic=200607121116; // allows multiple experts to trade on same account +string TradeComment="_bolltrade_v01.txt"; // comment so multiple EAs can be seen in Account History +double StartingBalance=1000; // lot size control if LotIncrease == true +//--- Bar handling +datetime bartime=0; // used to determine when a bar has moved +int bartick=0; // number of times bars have moved +//--- Trade control +bool TradeAllowed=true; // used to manage trades +//--- Min/Max tracking and tick logging +int maxOrders; // statistic for maximum numbers or orders open at one time +double maxEquity; // statistic for maximum equity level +double minEquity; // statistic for minimum equity level +double maxOEquity; // statistic for maximum equity level per order +double minOEquity; // statistic for minimum equity level per order +double EquityPos=0; // statistic for number of ticks order was positive +double EquityNeg=0; // statistic for number of ticks order was negative +double EquityZer=0; // statistic for number of ticks order was zero +//--- +double ExtProfitMade=0.0; +double ExtLossLimit=0.0; +double ExtBDistance=0.0; +double ExtLots=0.0; +int handle_iBands; // variable for storing the handle of the iBands indicator +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- create handle of the indicator iBands + handle_iBands=iBands(Symbol(),Period(),BB_period,0,BB_deviation,PRICE_OPEN); +//--- if the handle is not created + if(handle_iBands==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iBands indicator for the symbol %s/%s, error code %d", + Symbol(), + EnumToString(Period()), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- + m_symbol.Name(Symbol()); // sets symbol name + m_trade.SetExpertMagicNumber(m_magic); // sets magic number + if(!RefreshRates()) + { + Print("Error RefreshRates. Bid=",DoubleToString(m_symbol.Bid(),Digits()), + ", Ask=",DoubleToString(m_symbol.Ask(),Digits())); + return(INIT_FAILED); + } +//--- tuning for 3 or 5 digits + int digits_adjust=1; + if(m_symbol.Digits()==3 || m_symbol.Digits()==5) + digits_adjust=10; + + ExtProfitMade =InpProfitMade*digits_adjust; + ExtLossLimit =InpLossLimit*digits_adjust; + ExtBDistance =InpBDistance*digits_adjust; + ExtLots =InpLots; + + if(LotIncrease) + { + StartingBalance=m_account.Balance()/ExtLots; + logwrite(TradeComment,"LotIncrease ACTIVE Account balance="+DoubleToString(m_account.Balance(),2)+ + " ExtLots="+DoubleToString(ExtLots,2)+ + " StartingBalance="+DoubleToString(StartingBalance,2)); + } + else + { + logwrite(TradeComment,"LotIncrease NOT ACTIVE Account balance="+DoubleToString(m_account.Balance(),2)+ + " ExtLots="+DoubleToString(ExtLots,2)); + } + logwrite(TradeComment,"Init Complete"); + Comment(" "); +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +// always indicate deinit statistics + logwrite(TradeComment,"MAX number of orders "+IntegerToString(maxOrders)); + logwrite(TradeComment,"MAX equity "+DoubleToString(maxEquity,2)); + logwrite(TradeComment,"MIN equity "+DoubleToString(minEquity,2)); +// so you can see stats in journal + Print("MAX number of orders "+IntegerToString(maxOrders)); + Print("MAX equity "+DoubleToString(maxEquity,2)); + Print("MIN equity "+DoubleToString(minEquity,2)); + logwrite(TradeComment,"DE-Init Complete"); + Comment(" "); + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { + int gle=0; + ulong ticket=0; + int PositionsPerSymbol=0; + int PositionsBUY=0; + int PositionsSELL=0; +// stoploss and takeprofit and close control + double SL=0; + double TP=0; + double CurrentProfit=0; + double CurrentBasket=0; +// direction control + bool BUYme=false; + bool SELLme=false; +// bar counting + if(bartime!=iTime(0)) + { + bartime=iTime(0); + bartick++; + TradeAllowed=true; + } +// Lot increasement based on AccountBalance when expert is started +// this will trade 1.0, then 1.1, then 1.2 etc as account balance grows +// or 0.9 then 0.8 then 0.7 as account balance shrinks + if(LotIncrease) + { + ExtLots=NormalizeDouble(m_account.Balance()/StartingBalance,1); + if(ExtLots>500.0) ExtLots=500.0; + } + PositionsPerSymbol=0; + for(int i=PositionsTotal()-1;i>=0;i--) + if(m_position.SelectByIndex(i)) + if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic) + { + PositionsPerSymbol++; + if(m_position.PositionType()==POSITION_TYPE_BUY) + PositionsBUY++; + else + PositionsSELL++; + } +//--- keep some statistics + if(PositionsPerSymbol>maxOrders) + maxOrders=PositionsPerSymbol; +//+-----------------------------+ +//| Insert your indicator here | +//| And set either BUYme or | +//| SELLme true to place orders | +//+-----------------------------+ + double bup=iBandsGet(UPPER_BAND,0); + double bdn=iBandsGet(LOWER_BAND,0); +// + if(iClose(0)>bup+(ExtBDistance*Point())) + SELLme=true; + if(iClose(0)0) + { + if(logging) + logwrite(TradeComment,"BUY Ticket="+IntegerToString(ticket)+ + " m_symbol.Ask()="+DoubleToString(m_symbol.Ask(),Digits())+ + " ExtLots="+DoubleToString(ExtLots,2)+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + maxOEquity=0; + minOEquity=0; + EquityPos=0; + EquityNeg=0; + EquityZer=0; + TradeAllowed=false; + return; + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- opening BUY order :"+IntegerToString(m_trade.ResultRetcode())+ + " "+m_trade.ResultRetcodeDescription()); + } + }//BUYme +//ENTRY SHORT (sell, m_symbol.Bid()) + if((OneOrderOnly && PositionsPerSymbol==0 && SELLme) || (!OneOrderOnly && TradeAllowed && SELLme)) + { + if(!RefreshRates()) + return; + if(ExtLossLimit==0) + SL=0; + else + SL=m_symbol.Bid()+((ExtLossLimit+10)*Point()); + if(ExtProfitMade==0) + TP=0; + else + TP=m_symbol.Bid()-((ExtProfitMade+10)*Point()); + + ticket=0; + if(m_trade.Sell(ExtLots,Symbol(),m_symbol.Bid(),SL,TP,TradeComment)) + ticket=m_trade.ResultDeal(); + if(ticket>0) + { + if(logging) + logwrite(TradeComment,"SELL Ticket="+IntegerToString(ticket)+ + " m_symbol.Bid()="+DoubleToString(m_symbol.Bid(),Digits())+ + " ExtLots="+DoubleToString(ExtLots,2)+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + maxOEquity=0; + minOEquity=0; + EquityPos=0; + EquityNeg=0; + EquityZer=0; + TradeAllowed=false; + return; + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- opening SELL order :"+IntegerToString(m_trade.ResultRetcode())+ + " "+m_trade.ResultRetcodeDescription()); + } + }//SELLme +//--- accumulate statistics + CurrentBasket=m_account.Equity()-m_account.Balance(); + if(CurrentBasket>maxEquity) + { + maxEquity=CurrentBasket; + maxOEquity=CurrentBasket; + } + if(CurrentBasket0) + EquityPos++; + if(CurrentBasket<0) + EquityNeg++; + if(CurrentBasket==0) + EquityZer++; +//--- Order Management + for(int i=PositionsTotal()-1;i>=0;i--) + if(m_position.SelectByIndex(i)) + if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic) + { + if(m_position.PositionType()==POSITION_TYPE_BUY) + { + if(!RefreshRates()) + return; + CurrentProfit=m_symbol.Bid()-m_position.PriceOpen(); + if(logtick) + logwrite(TradeComment,"BUY CurrentProfit="+DoubleToString(CurrentProfit/Point(),Digits())+ + " CurrentBasket="+DoubleToString(CurrentBasket/Point(),Digits())); + //--- Did we make a profit + if(ExtProfitMade>0 && CurrentProfit>=(ExtProfitMade*Point())) + { + if(m_trade.PositionClose(m_position.Ticket())) + { + if(logging) + { + logwrite(TradeComment,"CLOSE BUY PROFIT Ticket="+IntegerToString(m_position.Ticket())+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + logwrite(TradeComment,"MAX order equity "+DoubleToString(maxOEquity,2)); + logwrite(TradeComment,"MIN order equity "+DoubleToString(minOEquity,2)); + logwrite(TradeComment,"order equity positive ticks ="+DoubleToString(EquityPos,2)); + logwrite(TradeComment,"order equity negative ticks ="+DoubleToString(EquityNeg,2)); + logwrite(TradeComment,"order equity zero ticks ="+DoubleToString(EquityZer,2)); + break; + } + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- CLOSE BUY PROFIT m_symbol.Bid()="+DoubleToString(m_symbol.Bid(),Digits())+ + ", "+IntegerToString(m_trade.ResultRetcode())+" "+m_trade.ResultRetcodeDescription()); + } + }//if + //--- Did we take a loss + if(ExtLossLimit>0 && CurrentProfit<=(ExtLossLimit*(-1)*Point())) + { + if(m_trade.PositionClose(m_position.Ticket())) + { + if(logging) + { + logwrite(TradeComment,"CLOSE BUY LOSS Ticket="+IntegerToString(m_position.Ticket())+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + logwrite(TradeComment,"MAX order equity "+DoubleToString(maxOEquity,2)); + logwrite(TradeComment,"MIN order equity "+DoubleToString(minOEquity,2)); + logwrite(TradeComment,"order equity positive ticks ="+DoubleToString(EquityPos,2)); + logwrite(TradeComment,"order equity negative ticks ="+DoubleToString(EquityNeg,2)); + logwrite(TradeComment,"order equity zero ticks ="+DoubleToString(EquityZer,2)); + break; + } + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- CLOSE BUY LOSS m_symbol.Bid()="+DoubleToString(m_symbol.Bid(),Digits())+ + ", "+IntegerToString(m_trade.ResultRetcode())+" "+m_trade.ResultRetcodeDescription()); + } + }//if + } // if BUY + if(m_position.PositionType()==POSITION_TYPE_SELL) + { + if(!RefreshRates()) + return; + CurrentProfit=m_position.PriceOpen()-m_symbol.Ask(); + if(logtick) + logwrite(TradeComment,"SELL CurrentProfit="+DoubleToString(CurrentProfit/Point(),Digits())+ + " CurrentBasket="+DoubleToString(CurrentBasket/Point(),Digits())); + //--- Did we make a profit + if(ExtProfitMade>0 && CurrentProfit>=(ExtProfitMade*Point())) + { + if(m_trade.PositionClose(m_position.Ticket())) + { + if(logging) + { + logwrite(TradeComment,"CLOSE SELL PROFIT Ticket="+IntegerToString(m_position.Ticket())+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + logwrite(TradeComment,"MAX order equity "+DoubleToString(maxOEquity,2)); + logwrite(TradeComment,"MIN order equity "+DoubleToString(minOEquity,2)); + logwrite(TradeComment,"order equity positive ticks ="+DoubleToString(EquityPos,2)); + logwrite(TradeComment,"order equity negative ticks ="+DoubleToString(EquityNeg,2)); + logwrite(TradeComment,"order equity zero ticks ="+DoubleToString(EquityZer,2)); + break; + } + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- CLOSE SELL PROFIT m_symbol.Ask()="+DoubleToString(m_symbol.Ask(),Digits())+ + ", "+IntegerToString(m_trade.ResultRetcode())+" "+m_trade.ResultRetcodeDescription()); + } + }//if + //--- Did we take a loss + if(ExtLossLimit>0 && CurrentProfit<=(ExtLossLimit*(-1)*Point())) + { + if(m_trade.PositionClose(m_position.Ticket())) + { + if(logging) + { + logwrite(TradeComment,"CLOSE SELL LOSS Ticket="+IntegerToString(m_position.Ticket())+ + " SL="+DoubleToString(SL,Digits())+ + " TP="+DoubleToString(TP,Digits())); + logwrite(TradeComment,"MAX order equity "+DoubleToString(maxOEquity,2)); + logwrite(TradeComment,"MIN order equity "+DoubleToString(minOEquity,2)); + logwrite(TradeComment,"order equity positive ticks ="+DoubleToString(EquityPos,2)); + logwrite(TradeComment,"order equity negative ticks ="+DoubleToString(EquityNeg,2)); + logwrite(TradeComment,"order equity zero ticks ="+DoubleToString(EquityZer,2)); + break; + } + } + else + { + if(logerrs) + logwrite(TradeComment,"-----ERROR----- CLOSE SELL LOSS m_symbol.Ask()="+DoubleToString(m_symbol.Ask(),Digits())+ + ", "+IntegerToString(m_trade.ResultRetcode())+" "+m_trade.ResultRetcodeDescription()); + } + }//if + } //if SELL + } // if(OrderSymbol) + } // start() +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void logwrite(string filename,string mydata) + { + int myhandle; + myhandle=FileOpen(Symbol()+"_"+filename,FILE_CSV|FILE_WRITE|FILE_READ,";"); + if(myhandle!=INVALID_HANDLE) + { + FileSeek(myhandle,0,SEEK_END); + FileWrite(myhandle,mydata+" "+TimeToString(TimeCurrent())); + FileClose(myhandle); + } + } +//+------------------------------------------------------------------+ +//| Get value of buffers for the iBands | +//| the buffer numbers are the following: | +//| 0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND | +//+------------------------------------------------------------------+ +double iBandsGet(const int buffer,const int index) + { + double Bands[]; + ArraySetAsSeries(Bands,true); +//--- reset error code + ResetLastError(); +//--- fill a part of the iStochasticBuffer array with values from the indicator buffer that has 0 index + if(CopyBuffer(handle_iBands,buffer,0,index+1,Bands)<0) + { + //--- if the copying fails, tell the error code + PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError()); + //--- quit with zero result - it means that the indicator is considered as not calculated + return(0.0); + } + return(Bands[index]); + } +//+------------------------------------------------------------------+ +//| Get Close for specified bar index | +//+------------------------------------------------------------------+ +double iClose(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT) + { + if(symbol==NULL) + symbol=Symbol(); + if(timeframe==0) + timeframe=Period(); + double Close[]; + double close=0; + ArraySetAsSeries(Close,true); + int copied=CopyClose(symbol,timeframe,index,1,Close); + if(copied>0) close=Close[0]; + return(close); + } +//+------------------------------------------------------------------+ +//| Get Time for specified bar index | +//+------------------------------------------------------------------+ +datetime iTime(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT) + { + if(symbol==NULL) + symbol=Symbol(); + if(timeframe==0) + timeframe=Period(); + datetime Time[]; + datetime time=0; + ArraySetAsSeries(Time,true); + int copied=CopyTime(symbol,timeframe,index,1,Time); + if(copied>0) time=Time[0]; + return(time); + } +//+------------------------------------------------------------------+ +//| Refreshes the symbol quotes data | +//+------------------------------------------------------------------+ +bool RefreshRates() + { +//--- refresh rates + if(!m_symbol.RefreshRates()) + return(false); +//--- protection against the return value of "zero" + if(m_symbol.Ask()==0 || m_symbol.Bid()==0) + return(false); +//--- + return(true); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Bollinger Bands/expert.png b/mql5_experts_mt5/Bollinger Bands/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands/expert.png differ diff --git a/mql5_experts_mt5/Bollinger Bands/indicator.png b/mql5_experts_mt5/Bollinger Bands/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands/indicator.png differ diff --git a/mql5_experts_mt5/Bollinger Bands/logo-2.png b/mql5_experts_mt5/Bollinger Bands/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger Bands/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger/README.md b/mql5_experts_mt5/Bollinger/README.md new file mode 100644 index 0000000..5f48016 --- /dev/null +++ b/mql5_experts_mt5/Bollinger/README.md @@ -0,0 +1,25 @@ +# Bollinger + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) +![Screenshot](TesterGraphReport.png) + +## Files +- `bollinger.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bollinger/TesterGraphReport.png b/mql5_experts_mt5/Bollinger/TesterGraphReport.png new file mode 100644 index 0000000..8669220 Binary files /dev/null and b/mql5_experts_mt5/Bollinger/TesterGraphReport.png differ diff --git a/mql5_experts_mt5/Bollinger/bollinger.mq5 b/mql5_experts_mt5/Bollinger/bollinger.mq5 new file mode 100644 index 0000000..8d791af Binary files /dev/null and b/mql5_experts_mt5/Bollinger/bollinger.mq5 differ diff --git a/mql5_experts_mt5/Bollinger/expert.png b/mql5_experts_mt5/Bollinger/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bollinger/expert.png differ diff --git a/mql5_experts_mt5/Bollinger/logo-2.png b/mql5_experts_mt5/Bollinger/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bollinger/logo-2.png differ diff --git a/mql5_experts_mt5/Bollinger/script.png b/mql5_experts_mt5/Bollinger/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Bollinger/script.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/5F979E41-6677.png b/mql5_experts_mt5/BollingerBandsEA/5F979E41-6677.png new file mode 100644 index 0000000..b783eb2 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/5F979E41-6677.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/676b0daf-ed79.jpg b/mql5_experts_mt5/BollingerBandsEA/676b0daf-ed79.jpg new file mode 100644 index 0000000..de12077 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/676b0daf-ed79.jpg differ diff --git a/mql5_experts_mt5/BollingerBandsEA/68239006-fc9d.png b/mql5_experts_mt5/BollingerBandsEA/68239006-fc9d.png new file mode 100644 index 0000000..3cfb555 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/68239006-fc9d.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/BollingerBandsEA__1.jpg b/mql5_experts_mt5/BollingerBandsEA/BollingerBandsEA__1.jpg new file mode 100644 index 0000000..a5507aa Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/BollingerBandsEA__1.jpg differ diff --git a/mql5_experts_mt5/BollingerBandsEA/README.md b/mql5_experts_mt5/BollingerBandsEA/README.md new file mode 100644 index 0000000..eb20f98 --- /dev/null +++ b/mql5_experts_mt5/BollingerBandsEA/README.md @@ -0,0 +1,28 @@ +# BollingerBandsEA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5F979E41-6677.png) +![Screenshot](676b0daf-ed79.jpg) +![Screenshot](68239006-fc9d.png) +![Screenshot](BollingerBandsEA__1.jpg) +![Screenshot](script.png) + +## Files +- `bollingerbandsea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BollingerBandsEA/bollingerbandsea.mq5 b/mql5_experts_mt5/BollingerBandsEA/bollingerbandsea.mq5 new file mode 100644 index 0000000..3bd3e1e Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/bollingerbandsea.mq5 differ diff --git a/mql5_experts_mt5/BollingerBandsEA/expert.png b/mql5_experts_mt5/BollingerBandsEA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/expert.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/indicator.png b/mql5_experts_mt5/BollingerBandsEA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/indicator.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/logo-2.png b/mql5_experts_mt5/BollingerBandsEA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/logo-2.png differ diff --git a/mql5_experts_mt5/BollingerBandsEA/script.png b/mql5_experts_mt5/BollingerBandsEA/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/BollingerBandsEA/script.png differ diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/Brakeout_Trader_v1_inputs.png b/mql5_experts_mt5/Brakeout_Trader_v1/Brakeout_Trader_v1_inputs.png new file mode 100644 index 0000000..5e3f6e0 Binary files /dev/null and b/mql5_experts_mt5/Brakeout_Trader_v1/Brakeout_Trader_v1_inputs.png differ diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/README.md b/mql5_experts_mt5/Brakeout_Trader_v1/README.md new file mode 100644 index 0000000..ef34939 --- /dev/null +++ b/mql5_experts_mt5/Brakeout_Trader_v1/README.md @@ -0,0 +1,24 @@ +# Brakeout_Trader_v1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Brakeout_Trader_v1_inputs.png) + +## Files +- `brakeout_trader_v1.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/brakeout_trader_v1.mq5 b/mql5_experts_mt5/Brakeout_Trader_v1/brakeout_trader_v1.mq5 new file mode 100644 index 0000000..2030802 Binary files /dev/null and b/mql5_experts_mt5/Brakeout_Trader_v1/brakeout_trader_v1.mq5 differ diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/expert.png b/mql5_experts_mt5/Brakeout_Trader_v1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Brakeout_Trader_v1/expert.png differ diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/indicator.png b/mql5_experts_mt5/Brakeout_Trader_v1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Brakeout_Trader_v1/indicator.png differ diff --git a/mql5_experts_mt5/Brakeout_Trader_v1/logo-2.png b/mql5_experts_mt5/Brakeout_Trader_v1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Brakeout_Trader_v1/logo-2.png differ diff --git a/mql5_experts_mt5/Brandy/62A472E7-9C25.png b/mql5_experts_mt5/Brandy/62A472E7-9C25.png new file mode 100644 index 0000000..a94f845 Binary files /dev/null and b/mql5_experts_mt5/Brandy/62A472E7-9C25.png differ diff --git a/mql5_experts_mt5/Brandy/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Brandy/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Brandy/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Brandy/Brandy__1.png b/mql5_experts_mt5/Brandy/Brandy__1.png new file mode 100644 index 0000000..e761bce Binary files /dev/null and b/mql5_experts_mt5/Brandy/Brandy__1.png differ diff --git a/mql5_experts_mt5/Brandy/README.md b/mql5_experts_mt5/Brandy/README.md new file mode 100644 index 0000000..9ad9715 --- /dev/null +++ b/mql5_experts_mt5/Brandy/README.md @@ -0,0 +1,26 @@ +# Brandy + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](62A472E7-9C25.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Brandy__1.png) + +## Files +- `brandy.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Brandy/brandy.mq5 b/mql5_experts_mt5/Brandy/brandy.mq5 new file mode 100644 index 0000000..3f96b8c Binary files /dev/null and b/mql5_experts_mt5/Brandy/brandy.mq5 differ diff --git a/mql5_experts_mt5/Brandy/expert.png b/mql5_experts_mt5/Brandy/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Brandy/expert.png differ diff --git a/mql5_experts_mt5/Brandy/indicator.png b/mql5_experts_mt5/Brandy/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Brandy/indicator.png differ diff --git a/mql5_experts_mt5/Brandy/logo-2.png b/mql5_experts_mt5/Brandy/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Brandy/logo-2.png differ diff --git a/mql5_experts_mt5/Breadandbutter2/Breadandbutter2.png b/mql5_experts_mt5/Breadandbutter2/Breadandbutter2.png new file mode 100644 index 0000000..f6d97f3 Binary files /dev/null and b/mql5_experts_mt5/Breadandbutter2/Breadandbutter2.png differ diff --git a/mql5_experts_mt5/Breadandbutter2/README.md b/mql5_experts_mt5/Breadandbutter2/README.md new file mode 100644 index 0000000..cddf049 --- /dev/null +++ b/mql5_experts_mt5/Breadandbutter2/README.md @@ -0,0 +1,24 @@ +# Breadandbutter2 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Breadandbutter2.png) + +## Files +- `breadandbutter2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breadandbutter2/breadandbutter2.mq5 b/mql5_experts_mt5/Breadandbutter2/breadandbutter2.mq5 new file mode 100644 index 0000000..e57b99c Binary files /dev/null and b/mql5_experts_mt5/Breadandbutter2/breadandbutter2.mq5 differ diff --git a/mql5_experts_mt5/Breadandbutter2/expert.png b/mql5_experts_mt5/Breadandbutter2/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breadandbutter2/expert.png differ diff --git a/mql5_experts_mt5/Breadandbutter2/indicator.png b/mql5_experts_mt5/Breadandbutter2/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breadandbutter2/indicator.png differ diff --git a/mql5_experts_mt5/Breadandbutter2/logo-2.png b/mql5_experts_mt5/Breadandbutter2/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breadandbutter2/logo-2.png differ diff --git a/mql5_experts_mt5/BreakOut15/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/BreakOut15/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/BreakOut15/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/BreakOut15/README.md b/mql5_experts_mt5/BreakOut15/README.md new file mode 100644 index 0000000..004100c --- /dev/null +++ b/mql5_experts_mt5/BreakOut15/README.md @@ -0,0 +1,24 @@ +# BreakOut15 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `breakout15.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BreakOut15/avatar_na2.png b/mql5_experts_mt5/BreakOut15/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/BreakOut15/avatar_na2.png differ diff --git a/mql5_experts_mt5/BreakOut15/breakout15.mq5 b/mql5_experts_mt5/BreakOut15/breakout15.mq5 new file mode 100644 index 0000000..bd9dad0 Binary files /dev/null and b/mql5_experts_mt5/BreakOut15/breakout15.mq5 differ diff --git a/mql5_experts_mt5/BreakOut15/expert.png b/mql5_experts_mt5/BreakOut15/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BreakOut15/expert.png differ diff --git a/mql5_experts_mt5/BreakOut15/logo-2.png b/mql5_experts_mt5/BreakOut15/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BreakOut15/logo-2.png differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/60ADC6A5-6810.gif b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/60ADC6A5-6810.gif new file mode 100644 index 0000000..efb5fd7 Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/60ADC6A5-6810.gif differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/67D847BA-4308.png b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/67D847BA-4308.png new file mode 100644 index 0000000..98922ce Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/67D847BA-4308.png differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/README.md b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/README.md new file mode 100644 index 0000000..b184a74 --- /dev/null +++ b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/README.md @@ -0,0 +1,25 @@ +# BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](60ADC6A5-6810.gif) +![Screenshot](67D847BA-4308.png) + +## Files +- `breakrevertpro.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/avatar_na2.png b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/avatar_na2.png differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/breakrevertpro.mq5 b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/breakrevertpro.mq5 new file mode 100644 index 0000000..fb3cfa0 Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/breakrevertpro.mq5 differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/expert.png b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/expert.png differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/indicator.png b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/indicator.png differ diff --git a/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/logo-2.png b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BreakRevertPro EA Adaptive Trading Edge for Breakout Mean Reversion/logo-2.png differ diff --git a/mql5_experts_mt5/Breakdown catcher/2018-11-29_11h57_24.png b/mql5_experts_mt5/Breakdown catcher/2018-11-29_11h57_24.png new file mode 100644 index 0000000..a863a2a Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/2018-11-29_11h57_24.png differ diff --git a/mql5_experts_mt5/Breakdown catcher/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Breakdown catcher/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Breakdown catcher/Error1__3.gif b/mql5_experts_mt5/Breakdown catcher/Error1__3.gif new file mode 100644 index 0000000..0292d80 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/Error1__3.gif differ diff --git a/mql5_experts_mt5/Breakdown catcher/Error2__1.gif b/mql5_experts_mt5/Breakdown catcher/Error2__1.gif new file mode 100644 index 0000000..2d9d5a8 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/Error2__1.gif differ diff --git a/mql5_experts_mt5/Breakdown catcher/README.md b/mql5_experts_mt5/Breakdown catcher/README.md new file mode 100644 index 0000000..b8f47f0 --- /dev/null +++ b/mql5_experts_mt5/Breakdown catcher/README.md @@ -0,0 +1,27 @@ +# Breakdown catcher + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-11-29_11h57_24.png) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Error1__3.gif) +![Screenshot](Error2__1.gif) + +## Files +- `breakdown_catcher.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakdown catcher/avatar_na2.png b/mql5_experts_mt5/Breakdown catcher/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/avatar_na2.png differ diff --git a/mql5_experts_mt5/Breakdown catcher/breakdown_catcher.mq5 b/mql5_experts_mt5/Breakdown catcher/breakdown_catcher.mq5 new file mode 100644 index 0000000..cfe4ab1 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/breakdown_catcher.mq5 differ diff --git a/mql5_experts_mt5/Breakdown catcher/expert.png b/mql5_experts_mt5/Breakdown catcher/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/expert.png differ diff --git a/mql5_experts_mt5/Breakdown catcher/indicator.png b/mql5_experts_mt5/Breakdown catcher/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/indicator.png differ diff --git a/mql5_experts_mt5/Breakdown catcher/logo-2.png b/mql5_experts_mt5/Breakdown catcher/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakdown catcher/logo-2.png differ diff --git a/mql5_experts_mt5/Breakdown signaling/Breakdown_signaling.png b/mql5_experts_mt5/Breakdown signaling/Breakdown_signaling.png new file mode 100644 index 0000000..3575a4d Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/Breakdown_signaling.png differ diff --git a/mql5_experts_mt5/Breakdown signaling/README.md b/mql5_experts_mt5/Breakdown signaling/README.md new file mode 100644 index 0000000..24e1c8e --- /dev/null +++ b/mql5_experts_mt5/Breakdown signaling/README.md @@ -0,0 +1,25 @@ +# Breakdown signaling + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Breakdown_signaling.png) +![Screenshot](script.png) + +## Files +- `exp_breakout_signals.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakdown signaling/exp_breakout_signals.mq5 b/mql5_experts_mt5/Breakdown signaling/exp_breakout_signals.mq5 new file mode 100644 index 0000000..eb87ea8 Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/exp_breakout_signals.mq5 differ diff --git a/mql5_experts_mt5/Breakdown signaling/expert.png b/mql5_experts_mt5/Breakdown signaling/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/expert.png differ diff --git a/mql5_experts_mt5/Breakdown signaling/indicator.png b/mql5_experts_mt5/Breakdown signaling/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/indicator.png differ diff --git a/mql5_experts_mt5/Breakdown signaling/logo-2.png b/mql5_experts_mt5/Breakdown signaling/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/logo-2.png differ diff --git a/mql5_experts_mt5/Breakdown signaling/script.png b/mql5_experts_mt5/Breakdown signaling/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Breakdown signaling/script.png differ diff --git a/mql5_experts_mt5/BreakdownLevelDay/12_small.gif b/mql5_experts_mt5/BreakdownLevelDay/12_small.gif new file mode 100644 index 0000000..5edb4e2 Binary files /dev/null and b/mql5_experts_mt5/BreakdownLevelDay/12_small.gif differ diff --git a/mql5_experts_mt5/BreakdownLevelDay/README.md b/mql5_experts_mt5/BreakdownLevelDay/README.md new file mode 100644 index 0000000..2fce2b2 --- /dev/null +++ b/mql5_experts_mt5/BreakdownLevelDay/README.md @@ -0,0 +1,24 @@ +# BreakdownLevelDay + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](12_small.gif) + +## Files +- `breakdownlevelday.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BreakdownLevelDay/breakdownlevelday.mq5 b/mql5_experts_mt5/BreakdownLevelDay/breakdownlevelday.mq5 new file mode 100644 index 0000000..b7285d7 Binary files /dev/null and b/mql5_experts_mt5/BreakdownLevelDay/breakdownlevelday.mq5 differ diff --git a/mql5_experts_mt5/BreakdownLevelDay/expert.png b/mql5_experts_mt5/BreakdownLevelDay/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BreakdownLevelDay/expert.png differ diff --git a/mql5_experts_mt5/BreakdownLevelDay/indicator.png b/mql5_experts_mt5/BreakdownLevelDay/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BreakdownLevelDay/indicator.png differ diff --git a/mql5_experts_mt5/BreakdownLevelDay/logo-2.png b/mql5_experts_mt5/BreakdownLevelDay/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BreakdownLevelDay/logo-2.png differ diff --git a/mql5_experts_mt5/Breakeven v3/5985A284-10D4.jpg b/mql5_experts_mt5/Breakeven v3/5985A284-10D4.jpg new file mode 100644 index 0000000..a9d8ec4 Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/5985A284-10D4.jpg differ diff --git a/mql5_experts_mt5/Breakeven v3/5BCA5BF6-0AAE.jpg b/mql5_experts_mt5/Breakeven v3/5BCA5BF6-0AAE.jpg new file mode 100644 index 0000000..a964c4f Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/5BCA5BF6-0AAE.jpg differ diff --git a/mql5_experts_mt5/Breakeven v3/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Breakeven v3/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Breakeven v3/BE__1.PNG b/mql5_experts_mt5/Breakeven v3/BE__1.PNG new file mode 100644 index 0000000..6db8c6c Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/BE__1.PNG differ diff --git a/mql5_experts_mt5/Breakeven v3/Breakeven_v3.gif b/mql5_experts_mt5/Breakeven v3/Breakeven_v3.gif new file mode 100644 index 0000000..827f70b Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/Breakeven_v3.gif differ diff --git a/mql5_experts_mt5/Breakeven v3/README.md b/mql5_experts_mt5/Breakeven v3/README.md new file mode 100644 index 0000000..0990bc7 --- /dev/null +++ b/mql5_experts_mt5/Breakeven v3/README.md @@ -0,0 +1,28 @@ +# Breakeven v3 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5985A284-10D4.jpg) +![Screenshot](5BCA5BF6-0AAE.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](BE__1.PNG) +![Screenshot](Breakeven_v3.gif) + +## Files +- `breakeven_v3.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakeven v3/avatar_na2.png b/mql5_experts_mt5/Breakeven v3/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/avatar_na2.png differ diff --git a/mql5_experts_mt5/Breakeven v3/breakeven_v3.mq5 b/mql5_experts_mt5/Breakeven v3/breakeven_v3.mq5 new file mode 100644 index 0000000..3e026b9 Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/breakeven_v3.mq5 differ diff --git a/mql5_experts_mt5/Breakeven v3/expert.png b/mql5_experts_mt5/Breakeven v3/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/expert.png differ diff --git a/mql5_experts_mt5/Breakeven v3/logo-2.png b/mql5_experts_mt5/Breakeven v3/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakeven v3/logo-2.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/5CB0FE21-E283.jpg b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/5CB0FE21-E283.jpg new file mode 100644 index 0000000..5e74895 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/5CB0FE21-E283.jpg differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/63d3fe27-7289.jpg b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/63d3fe27-7289.jpg new file mode 100644 index 0000000..a253c18 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/63d3fe27-7289.jpg differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/668e361b-f329.jpg b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/668e361b-f329.jpg new file mode 100644 index 0000000..531e5c9 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/668e361b-f329.jpg differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Backtestresults__1.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Backtestresults__1.png new file mode 100644 index 0000000..f157cc2 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Backtestresults__1.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Input_parameters.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Input_parameters.png new file mode 100644 index 0000000..ec0f2c8 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/Input_parameters.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/README.md b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/README.md new file mode 100644 index 0000000..bc608d0 --- /dev/null +++ b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/README.md @@ -0,0 +1,29 @@ +# Breakout Martin Gale Expert Advisor for MT5 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5CB0FE21-E283.jpg) +![Screenshot](63d3fe27-7289.jpg) +![Screenshot](668e361b-f329.jpg) +![Screenshot](Backtestresults__1.png) +![Screenshot](Input_parameters.png) +![Screenshot](library.png) + +## Files +- `martingalebreakout.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/avatar_na2.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/avatar_na2.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/expert.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/expert.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/indicator.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/indicator.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/library.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/library.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/logo-2.png b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/logo-2.png differ diff --git a/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/martingalebreakout.mq5 b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/martingalebreakout.mq5 new file mode 100644 index 0000000..154396b Binary files /dev/null and b/mql5_experts_mt5/Breakout Martin Gale Expert Advisor for MT5/martingalebreakout.mq5 differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5DD63591-64A0.jpg b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5DD63591-64A0.jpg new file mode 100644 index 0000000..472d298 Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5DD63591-64A0.jpg differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5E49803C-2E23.jpg b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5E49803C-2E23.jpg new file mode 100644 index 0000000..e73fd8a Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/5E49803C-2E23.jpg differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/664270fe-c576.jpg b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/664270fe-c576.jpg new file mode 100644 index 0000000..d0ffd6f Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/664270fe-c576.jpg differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/README.md b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/README.md new file mode 100644 index 0000000..f52fb4c --- /dev/null +++ b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/README.md @@ -0,0 +1,28 @@ +# Breakout Strategy with Prop Firm Helper Functions + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5DD63591-64A0.jpg) +![Screenshot](5E49803C-2E23.jpg) +![Screenshot](664270fe-c576.jpg) +![Screenshot](library.png) +![Screenshot](script.png) + +## Files +- `propfirmhelper.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/avatar_na2.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/avatar_na2.png differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/expert.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/expert.png differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/indicator.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/indicator.png differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/library.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/library.png differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/logo-2.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/logo-2.png differ diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/propfirmhelper.mq5 b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/propfirmhelper.mq5 new file mode 100644 index 0000000..1632889 --- /dev/null +++ b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/propfirmhelper.mq5 @@ -0,0 +1,374 @@ +//+------------------------------------------------------------------+ +//| BreakoutStrategy.mq5 | +//| Copyright 2024, QuanAlpha | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2024, QuanAlpha" +#property version "1.00" + +#include + +//+------------------------------------------------------------------+ +//| INPUT PARAMETERS | +//+------------------------------------------------------------------+ +input string aa = "------------------SETTINGS----------------------"; +input string BOT_NAME = "Breakout Strategy with Prop Firm Challenge Helper"; +input int EXPERT_MAGIC = 1; +input string bb = "-------------------ENTRY------------------------"; +input int ENTRY_PERIOD = 20; +input int ENTRY_SHIFT = 1; +input string cc = "--------------------EXIT------------------------"; +input int EXIT_PERIOD = 20; +input int EXIT_SHIFT = 1; +input string dd = "-------------PROP FIRM CHALLENGE-----------------"; +input bool isChallenge = false; +input double PASS_CRITERIA = 110100.; +input double DAILY_LOSS_LIMIT = 4500.; +input string gg = "----------------RISK PROFILE--------------------"; +input double RISK_PER_TRADE = 1.0; // Percent of equity per trade +input ENUM_TIMEFRAMES TRADING_TIMEFRAME = PERIOD_H1; + +//+------------------------------------------------------------------+ +//| GLOBAL VARIABLES | +//+------------------------------------------------------------------+ + +// Trade Object +CTrade trade; + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + trade.SetExpertMagicNumber(EXPERT_MAGIC); + trade.SetDeviationInPoints(10); + + printf(BOT_NAME + " initialized!"); + return(INIT_SUCCEEDED); +} + +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) +{ + printf(BOT_NAME + " exited, exit code: %d", reason); +} + +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ + +void OnTick() +{ + if (isChallenge) + { + // Check if we passed the challenge + if (isPassed()) + { + ClearAll("Prop Firm Challenge Passed!"); + } + else if (isDailyLimit()) + { + ClearAll("Daily loss limit exceeded!"); + } + + } + + ExecuteTrade(); +} + +//+------------------------------------------------------------------+ +//| TRADE EXECUTION | +//+------------------------------------------------------------------+ +void ExecuteTrade() +{ + if (BarOpen()) + { + double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID), ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + + double trading_hh = HighestHigh(ENTRY_PERIOD, ENTRY_SHIFT, TRADING_TIMEFRAME); + double trading_ll = LowestLow(ENTRY_PERIOD, ENTRY_SHIFT, TRADING_TIMEFRAME); + + double trigger_long = trading_hh + SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + double trigger_short = trading_ll - SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + + double exit_long = LowestLow(EXIT_PERIOD, EXIT_SHIFT, TRADING_TIMEFRAME); + double exit_short = HighestHigh(EXIT_PERIOD, EXIT_SHIFT, TRADING_TIMEFRAME); + + // Delete old orders + int orders = OrderManaging(); + + // Manage existing positions + int long_positions = PositionManaging(POSITION_TYPE_BUY); + int short_positions = PositionManaging(POSITION_TYPE_SELL); + + // Long order + if (long_positions == 0 && trigger_long - ask >= SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)) + { + double sl = trigger_long - exit_long; + double lot_size = CalculateLotSize(sl, trigger_long); + double max_volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + while (lot_size > max_volume) + { + trade.BuyStop(max_volume, trigger_long, _Symbol, exit_long, 0.0, ORDER_TIME_DAY); + lot_size -= max_volume; + } + trade.BuyStop(lot_size, trigger_long, _Symbol, exit_long, 0.0, ORDER_TIME_DAY); + } + + // Short order + if (short_positions == 0 && bid - trigger_short >= SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)) + { + double sl = exit_short - trigger_short; + double lot_size = CalculateLotSize(sl, trigger_short); + double max_volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); + while (lot_size > max_volume) + { + trade.SellStop(max_volume, trigger_short, _Symbol, exit_short, 0.0, ORDER_TIME_DAY); + lot_size -= max_volume; + } + trade.SellStop(lot_size, trigger_short, _Symbol, exit_short, 0.0, ORDER_TIME_DAY); + } + } +} + +//+------------------------------------------------------------------+ +//| Indicators | +//+------------------------------------------------------------------+ + +double HighestHigh(int period, int shift, ENUM_TIMEFRAMES timeframe) +{ + return iHigh(_Symbol, timeframe, iHighest(_Symbol, timeframe, MODE_HIGH, period, shift)); +} + +double LowestLow(int period, int shift, ENUM_TIMEFRAMES timeframe) +{ + return iLow(_Symbol, timeframe, iLowest(_Symbol, timeframe, MODE_LOW, period, shift)); +} + +double Middle(int period, int shift, ENUM_TIMEFRAMES timeframe) +{ + return (HighestHigh(period, shift, timeframe) + LowestLow(period, shift, timeframe)) / 2.; +} + +double ATR(int period, int shift, ENUM_TIMEFRAMES timeframe) +{ + int handle = iATR(_Symbol, timeframe, period); + double value[]; + CopyBuffer(handle, 0, shift, 1, value); + return value[0]; +} + +//+------------------------------------------------------------------+ +//| Manage existing positions | +//+------------------------------------------------------------------+ +int PositionManaging(ENUM_POSITION_TYPE position_type) +{ + int positions = 0; + double trail_long, trail_short; + double atr = ATR(20, 1, TRADING_TIMEFRAME); + + trail_long = LowestLow(EXIT_PERIOD, EXIT_SHIFT, TRADING_TIMEFRAME); + trail_short = HighestHigh(EXIT_PERIOD, EXIT_SHIFT, TRADING_TIMEFRAME); + + + for (int i = PositionsTotal() - 1; i >= 0; i--) + { + ulong posTicket = PositionGetTicket(i); + if (PositionSelectByTicket(posTicket)) + { + if (PositionGetString(POSITION_SYMBOL) == _Symbol && + PositionGetInteger(POSITION_MAGIC) == EXPERT_MAGIC && + PositionGetInteger(POSITION_TYPE) == position_type) + { + positions = positions + 1; + double sl = PositionGetDouble(POSITION_SL), tp = PositionGetDouble(POSITION_TP), cp = PositionGetDouble(POSITION_PRICE_CURRENT), op = PositionGetDouble(POSITION_PRICE_OPEN); + if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) + { + // Trailing stop + if (cp < trail_long) + { + trade.PositionClose(posTicket); + positions--; + } + else if (trail_long > sl + 0.1 * atr && cp - trail_long >= SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)) + { + trade.PositionModify(posTicket, trail_long, tp); + } + } + else if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) + { + // Trailing stop + if (cp > trail_short) + { + trade.PositionClose(posTicket); + positions--; + } + else if (trail_short < sl - 0.1 * atr && trail_short - cp >= SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)) + { + trade.PositionModify(posTicket, trail_short, tp); + } + } + } + } + } + return MathMax(positions, 0); +} + +//+------------------------------------------------------------------+ +//| Delete old order | +//+------------------------------------------------------------------+ +int OrderManaging() +{ + int orders = 0; + for (int i = OrdersTotal() - 1; i >= 0; i--) + { + ulong orderTicket = OrderGetTicket(i); + if (OrderSelect(orderTicket)) + { + if (OrderGetString(ORDER_SYMBOL) == _Symbol && + OrderGetInteger(ORDER_MAGIC) == EXPERT_MAGIC) + { + trade.OrderDelete(orderTicket); + } + } + } + return orders; +} + +//+------------------------------------------------------------------+ +//| Calculate lot_sizes based on risk % of equity per trade | +//+------------------------------------------------------------------+ + +double CalculateLotSize(double sl_value, double price) +{ + double lots = 0.0; + double loss = 0.0; + + double balance=AccountInfoDouble(ACCOUNT_EQUITY); + double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); + double sl_price=price-sl_value; + + if (OrderCalcProfit(ORDER_TYPE_BUY,_Symbol,1.0,price,sl_price,loss)) + { + double lotstep=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP); + double risk_money=RISK_PER_TRADE * balance / 100.; + double margin = 0; + lots=risk_money/MathAbs(loss); + lots=MathFloor(lots/lotstep)*lotstep; + + // Adjust lots to broker limits. + double minlot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); + double maxlot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX); + + if(lots < minlot) + { + lots=minlot; + } + + // Check if available margin is enough to enter a position + if(OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,lots,price,margin)) + { + double free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE); + if(free_margin<0) + { + lots=0; + } + else if(free_margin= 0; i--) + { + ulong orderTicket = OrderGetTicket(i); + if (OrderSelect(orderTicket)) + { + trade.OrderDelete(orderTicket); + } + } + + for (int i = PositionsTotal() - 1; i >= 0; i--) + { + ulong posTicket = PositionGetTicket(i); + trade.PositionClose(posTicket); + } +} + +// Check if we have achieved profit target +bool isPassed() +{ + return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; +} + +// Check if we are about to violate maximum daily loss +bool isDailyLimit() +{ + MqlDateTime date_time; + TimeToStruct(TimeCurrent(), date_time); + int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year; + + // Current balance + double current_balance = AccountInfoDouble(ACCOUNT_BALANCE); + + // Get today's closed trades PL + HistorySelect(0, TimeCurrent()); + int orders = HistoryDealsTotal(); + + double PL = 0.0; + for (int i = orders - 1; i >= 0; i--) + { + ulong ticket=HistoryDealGetTicket(i); + if(ticket==0) + { + Print("HistoryDealGetTicket failed, no trade history"); + break; + } + double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT); + if (profit != 0) + { + // Get deal datetime + MqlDateTime deal_time; + TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time); + // Check deal time + if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year) + { + PL += profit; + } + else + break; + } + } + double starting_balance = current_balance - PL; + double current_equity = AccountInfoDouble(ACCOUNT_EQUITY); + return current_equity < starting_balance - DAILY_LOSS_LIMIT; +} \ No newline at end of file diff --git a/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/script.png b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Breakout Strategy with Prop Firm Helper Functions/script.png differ diff --git a/mql5_experts_mt5/Breakthrough_BB/README.md b/mql5_experts_mt5/Breakthrough_BB/README.md new file mode 100644 index 0000000..ee9cdd2 --- /dev/null +++ b/mql5_experts_mt5/Breakthrough_BB/README.md @@ -0,0 +1,23 @@ +# Breakthrough_BB + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `breakthrough_bb.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Breakthrough_BB/breakthrough_bb.mq5 b/mql5_experts_mt5/Breakthrough_BB/breakthrough_bb.mq5 new file mode 100644 index 0000000..00fe5ac Binary files /dev/null and b/mql5_experts_mt5/Breakthrough_BB/breakthrough_bb.mq5 differ diff --git a/mql5_experts_mt5/Breakthrough_BB/expert.png b/mql5_experts_mt5/Breakthrough_BB/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Breakthrough_BB/expert.png differ diff --git a/mql5_experts_mt5/Breakthrough_BB/indicator.png b/mql5_experts_mt5/Breakthrough_BB/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Breakthrough_BB/indicator.png differ diff --git a/mql5_experts_mt5/Breakthrough_BB/logo-2.png b/mql5_experts_mt5/Breakthrough_BB/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Breakthrough_BB/logo-2.png differ diff --git a/mql5_experts_mt5/Bronze Warrioir/README.md b/mql5_experts_mt5/Bronze Warrioir/README.md new file mode 100644 index 0000000..642a4d8 --- /dev/null +++ b/mql5_experts_mt5/Bronze Warrioir/README.md @@ -0,0 +1,23 @@ +# Bronze Warrioir + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `bronze_warrioir.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bronze Warrioir/bronze_warrioir.mq5 b/mql5_experts_mt5/Bronze Warrioir/bronze_warrioir.mq5 new file mode 100644 index 0000000..618f82b Binary files /dev/null and b/mql5_experts_mt5/Bronze Warrioir/bronze_warrioir.mq5 differ diff --git a/mql5_experts_mt5/Bronze Warrioir/expert.png b/mql5_experts_mt5/Bronze Warrioir/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bronze Warrioir/expert.png differ diff --git a/mql5_experts_mt5/Bronze Warrioir/indicator.png b/mql5_experts_mt5/Bronze Warrioir/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bronze Warrioir/indicator.png differ diff --git a/mql5_experts_mt5/Bronze Warrioir/logo-2.png b/mql5_experts_mt5/Bronze Warrioir/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bronze Warrioir/logo-2.png differ diff --git a/mql5_experts_mt5/Bruno/README.md b/mql5_experts_mt5/Bruno/README.md new file mode 100644 index 0000000..025597b --- /dev/null +++ b/mql5_experts_mt5/Bruno/README.md @@ -0,0 +1,23 @@ +# Bruno + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + + +## Files +- `bruno.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bruno/bruno.mq5 b/mql5_experts_mt5/Bruno/bruno.mq5 new file mode 100644 index 0000000..f7b5ffa Binary files /dev/null and b/mql5_experts_mt5/Bruno/bruno.mq5 differ diff --git a/mql5_experts_mt5/Bruno/expert.png b/mql5_experts_mt5/Bruno/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bruno/expert.png differ diff --git a/mql5_experts_mt5/Bruno/indicator.png b/mql5_experts_mt5/Bruno/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bruno/indicator.png differ diff --git a/mql5_experts_mt5/Bruno/logo-2.png b/mql5_experts_mt5/Bruno/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bruno/logo-2.png differ diff --git a/mql5_experts_mt5/Bull vs Medved/Bull_vs_Medved_tester.png b/mql5_experts_mt5/Bull vs Medved/Bull_vs_Medved_tester.png new file mode 100644 index 0000000..b0c57bf Binary files /dev/null and b/mql5_experts_mt5/Bull vs Medved/Bull_vs_Medved_tester.png differ diff --git a/mql5_experts_mt5/Bull vs Medved/README.md b/mql5_experts_mt5/Bull vs Medved/README.md new file mode 100644 index 0000000..7115f9c --- /dev/null +++ b/mql5_experts_mt5/Bull vs Medved/README.md @@ -0,0 +1,24 @@ +# Bull vs Medved + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Bull_vs_Medved_tester.png) + +## Files +- `bull_vs_medved.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bull vs Medved/bull_vs_medved.mq5 b/mql5_experts_mt5/Bull vs Medved/bull_vs_medved.mq5 new file mode 100644 index 0000000..315b231 Binary files /dev/null and b/mql5_experts_mt5/Bull vs Medved/bull_vs_medved.mq5 differ diff --git a/mql5_experts_mt5/Bull vs Medved/expert.png b/mql5_experts_mt5/Bull vs Medved/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bull vs Medved/expert.png differ diff --git a/mql5_experts_mt5/Bull vs Medved/logo-2.png b/mql5_experts_mt5/Bull vs Medved/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bull vs Medved/logo-2.png differ diff --git a/mql5_experts_mt5/BullBear candle row/66ec7fde-fbf4.jpg b/mql5_experts_mt5/BullBear candle row/66ec7fde-fbf4.jpg new file mode 100644 index 0000000..d3045d4 Binary files /dev/null and b/mql5_experts_mt5/BullBear candle row/66ec7fde-fbf4.jpg differ diff --git a/mql5_experts_mt5/BullBear candle row/README.md b/mql5_experts_mt5/BullBear candle row/README.md new file mode 100644 index 0000000..9a3c5c3 --- /dev/null +++ b/mql5_experts_mt5/BullBear candle row/README.md @@ -0,0 +1,24 @@ +# BullBear candle row + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](66ec7fde-fbf4.jpg) + +## Files +- `bear_row_full_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BullBear candle row/bear_row_full_ea.mq5 b/mql5_experts_mt5/BullBear candle row/bear_row_full_ea.mq5 new file mode 100644 index 0000000..713eaf2 Binary files /dev/null and b/mql5_experts_mt5/BullBear candle row/bear_row_full_ea.mq5 differ diff --git a/mql5_experts_mt5/BullBear candle row/expert.png b/mql5_experts_mt5/BullBear candle row/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BullBear candle row/expert.png differ diff --git a/mql5_experts_mt5/BullBear candle row/indicator.png b/mql5_experts_mt5/BullBear candle row/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BullBear candle row/indicator.png differ diff --git a/mql5_experts_mt5/BullBear candle row/logo-2.png b/mql5_experts_mt5/BullBear candle row/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BullBear candle row/logo-2.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/5834340404708.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/5834340404708.png new file mode 100644 index 0000000..c8e7343 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/5834340404708.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/5FB1805A-5C3B.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/5FB1805A-5C3B.png new file mode 100644 index 0000000..bdc7dda Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/5FB1805A-5C3B.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/609C4C8B-07FC.jpg b/mql5_experts_mt5/Bullish and Bearish Engulfing/609C4C8B-07FC.jpg new file mode 100644 index 0000000..b6dd1ea Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/609C4C8B-07FC.jpg differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Bullish and Bearish Engulfing/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing.png new file mode 100644 index 0000000..461e1d3 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_big.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_big.png new file mode 100644 index 0000000..3d8c566 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_big.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_shift.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_shift.png new file mode 100644 index 0000000..51baace Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/Bullish_and_Bearish_Engulfing_shift.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/README.md b/mql5_experts_mt5/Bullish and Bearish Engulfing/README.md new file mode 100644 index 0000000..b384c96 --- /dev/null +++ b/mql5_experts_mt5/Bullish and Bearish Engulfing/README.md @@ -0,0 +1,30 @@ +# Bullish and Bearish Engulfing + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5834340404708.png) +![Screenshot](5FB1805A-5C3B.png) +![Screenshot](609C4C8B-07FC.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Bullish_and_Bearish_Engulfing.png) +![Screenshot](Bullish_and_Bearish_Engulfing_big.png) +![Screenshot](Bullish_and_Bearish_Engulfing_shift.png) + +## Files +- `bullish_and_bearish_engulfing.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/bullish_and_bearish_engulfing.mq5 b/mql5_experts_mt5/Bullish and Bearish Engulfing/bullish_and_bearish_engulfing.mq5 new file mode 100644 index 0000000..17bdee4 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/bullish_and_bearish_engulfing.mq5 differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/expert.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/expert.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/indicator.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/indicator.png differ diff --git a/mql5_experts_mt5/Bullish and Bearish Engulfing/logo-2.png b/mql5_experts_mt5/Bullish and Bearish Engulfing/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Bullish and Bearish Engulfing/logo-2.png differ diff --git a/mql5_experts_mt5/BullsBearsEyes EA/2018-11-15_13h05_06.png b/mql5_experts_mt5/BullsBearsEyes EA/2018-11-15_13h05_06.png new file mode 100644 index 0000000..95370e0 Binary files /dev/null and b/mql5_experts_mt5/BullsBearsEyes EA/2018-11-15_13h05_06.png differ diff --git a/mql5_experts_mt5/BullsBearsEyes EA/README.md b/mql5_experts_mt5/BullsBearsEyes EA/README.md new file mode 100644 index 0000000..9ae2ef4 --- /dev/null +++ b/mql5_experts_mt5/BullsBearsEyes EA/README.md @@ -0,0 +1,24 @@ +# BullsBearsEyes EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-11-15_13h05_06.png) + +## Files +- `bullsbearseyes_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/BullsBearsEyes EA/bullsbearseyes_ea.mq5 b/mql5_experts_mt5/BullsBearsEyes EA/bullsbearseyes_ea.mq5 new file mode 100644 index 0000000..9cd190f Binary files /dev/null and b/mql5_experts_mt5/BullsBearsEyes EA/bullsbearseyes_ea.mq5 differ diff --git a/mql5_experts_mt5/BullsBearsEyes EA/expert.png b/mql5_experts_mt5/BullsBearsEyes EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/BullsBearsEyes EA/expert.png differ diff --git a/mql5_experts_mt5/BullsBearsEyes EA/indicator.png b/mql5_experts_mt5/BullsBearsEyes EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/BullsBearsEyes EA/indicator.png differ diff --git a/mql5_experts_mt5/BullsBearsEyes EA/logo-2.png b/mql5_experts_mt5/BullsBearsEyes EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/BullsBearsEyes EA/logo-2.png differ diff --git a/mql5_experts_mt5/Burg Extrapolator/README.md b/mql5_experts_mt5/Burg Extrapolator/README.md new file mode 100644 index 0000000..bd564e8 --- /dev/null +++ b/mql5_experts_mt5/Burg Extrapolator/README.md @@ -0,0 +1,24 @@ +# Burg Extrapolator + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) + +## Files +- `burg_extrapolator.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Burg Extrapolator/burg_extrapolator.mq5 b/mql5_experts_mt5/Burg Extrapolator/burg_extrapolator.mq5 new file mode 100644 index 0000000..7e42146 Binary files /dev/null and b/mql5_experts_mt5/Burg Extrapolator/burg_extrapolator.mq5 differ diff --git a/mql5_experts_mt5/Burg Extrapolator/expert.png b/mql5_experts_mt5/Burg Extrapolator/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Burg Extrapolator/expert.png differ diff --git a/mql5_experts_mt5/Burg Extrapolator/indicator.png b/mql5_experts_mt5/Burg Extrapolator/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Burg Extrapolator/indicator.png differ diff --git a/mql5_experts_mt5/Burg Extrapolator/logo-2.png b/mql5_experts_mt5/Burg Extrapolator/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Burg Extrapolator/logo-2.png differ diff --git a/mql5_experts_mt5/Burg Extrapolator/script.png b/mql5_experts_mt5/Burg Extrapolator/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Burg Extrapolator/script.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/6438c14d-e2f0.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/6438c14d-e2f0.png new file mode 100644 index 0000000..fb8ddb2 Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/6438c14d-e2f0.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/66D7654F-2102.jpg b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/66D7654F-2102.jpg new file mode 100644 index 0000000..e19ddaf Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/66D7654F-2102.jpg differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/README.md b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/README.md new file mode 100644 index 0000000..033b671 --- /dev/null +++ b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/README.md @@ -0,0 +1,27 @@ +# Butterfly Strategy Expert Advisor with Multiple TimeFrames + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](6438c14d-e2f0.png) +![Screenshot](66D7654F-2102.jpg) +![Screenshot](library.png) +![Screenshot](script.png) + +## Files +- `cypher_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/cypher_ea.mq5 b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/cypher_ea.mq5 new file mode 100644 index 0000000..efece2b Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/cypher_ea.mq5 differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/expert.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/expert.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/indicator.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/indicator.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/library.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/library.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/logo-2.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/logo-2.png differ diff --git a/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/script.png b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Butterfly Strategy Expert Advisor with Multiple TimeFrames/script.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/1291819224501__1.png b/mql5_experts_mt5/Buy Sell on your Price/1291819224501__1.png new file mode 100644 index 0000000..9c4eb1d Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/1291819224501__1.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/5111229392566__1.png b/mql5_experts_mt5/Buy Sell on your Price/5111229392566__1.png new file mode 100644 index 0000000..7a55aaa Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/5111229392566__1.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/5EAA538C-A8C0.JPG b/mql5_experts_mt5/Buy Sell on your Price/5EAA538C-A8C0.JPG new file mode 100644 index 0000000..dc854e5 Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/5EAA538C-A8C0.JPG differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/61353B58-9A04.jpg b/mql5_experts_mt5/Buy Sell on your Price/61353B58-9A04.jpg new file mode 100644 index 0000000..be8e6de Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/61353B58-9A04.jpg differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/README.md b/mql5_experts_mt5/Buy Sell on your Price/README.md new file mode 100644 index 0000000..25f15c1 --- /dev/null +++ b/mql5_experts_mt5/Buy Sell on your Price/README.md @@ -0,0 +1,28 @@ +# Buy Sell on your Price + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](1291819224501__1.png) +![Screenshot](5111229392566__1.png) +![Screenshot](5EAA538C-A8C0.JPG) +![Screenshot](61353B58-9A04.jpg) +![Screenshot](library.png) + +## Files +- `buysellonyourprice.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Buy Sell on your Price/avatar_na2.png b/mql5_experts_mt5/Buy Sell on your Price/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/avatar_na2.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/buysellonyourprice.mq5 b/mql5_experts_mt5/Buy Sell on your Price/buysellonyourprice.mq5 new file mode 100644 index 0000000..647136a --- /dev/null +++ b/mql5_experts_mt5/Buy Sell on your Price/buysellonyourprice.mq5 @@ -0,0 +1,99 @@ +//+------------------------------------------------------------------+ +//| BuyLimit.mq5 | +//| Copyright 2021, Dark Ryd3r | +//| https://twitter.com/DarkrRyd3r | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Dark Ryd3r" +#property link "https://twitter.com/DarkrRyd3r" +#property version "1.00" +#property description "Entry Price is not effective if Market order is selected" +#property description "Select Type of Order and enter correct buy price, Stop Loss and Take Profit" +#property description "This EA will send your orders and comments are also passed on Strategy Tester" + +#include +CTrade trade; + +input double qty = 1.2; //Enter qunatity for order +input double entryprice = 1.23239; //Enter Entry Price +input double Sl = 1.231;// Enter Stop Loss +input double Tp = 1.245; // Enter Take Profit + +enum BuyorSell { + None, + Buy, //Market Order Buy + Sell, //Market Order Sell + BuyLimit, //Limit Buy Order + SellLimit, //Limit Sell Order + BuyStop, //Buy Stop Order + SellStop //Sell Stop Order +}; + +input BuyorSell SelectMode = None; +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() { +//--- + + + +//--- + return(INIT_SUCCEEDED); +} +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) { +//--- + +} +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() { +//--- + double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); + double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); + + if (SelectMode== None) { + Print("Please select order type"); + } + +//Market + if (SelectMode== Buy) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.Buy(qty,_Symbol,Ask,Sl,Tp,"Market order : Buy Executed"); + } + } + if (SelectMode== Sell) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.Sell(qty,_Symbol,Bid,Sl,Tp,"Market order : Sell Executed"); + } + } + +//Limit + if (SelectMode== BuyLimit) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.BuyLimit(qty, entryprice,_Symbol,Sl,Tp,ORDER_TIME_GTC,0,"Limit Order : Buy Executed"); + } + } + if (SelectMode== SellLimit) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.SellLimit(qty, entryprice,_Symbol,Sl,Tp,ORDER_TIME_GTC,0,"Limit Order : Sell Executed"); + } + } + +//Stop + if (SelectMode== BuyStop) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.BuyStop(qty, entryprice,_Symbol,Sl,Tp,ORDER_TIME_GTC,0,"Stop Order : Buy Executed"); + } + } + if (SelectMode== SellStop) { + if( (OrdersTotal()==0 ) && (PositionsTotal()==0) ) { + trade.SellStop(qty, entryprice,_Symbol,Sl,Tp,ORDER_TIME_GTC,0,"Stop Order : Sell Executed"); + } + } + +} +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Buy Sell on your Price/expert.png b/mql5_experts_mt5/Buy Sell on your Price/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/expert.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/indicator.png b/mql5_experts_mt5/Buy Sell on your Price/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/indicator.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/library.png b/mql5_experts_mt5/Buy Sell on your Price/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/library.png differ diff --git a/mql5_experts_mt5/Buy Sell on your Price/logo-2.png b/mql5_experts_mt5/Buy Sell on your Price/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Buy Sell on your Price/logo-2.png differ diff --git a/mql5_experts_mt5/CCFp EA/CCFp_EA_false.png b/mql5_experts_mt5/CCFp EA/CCFp_EA_false.png new file mode 100644 index 0000000..0f81ff7 Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/CCFp_EA_false.png differ diff --git a/mql5_experts_mt5/CCFp EA/CCFp_EA_true.png b/mql5_experts_mt5/CCFp EA/CCFp_EA_true.png new file mode 100644 index 0000000..a689c6c Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/CCFp_EA_true.png differ diff --git a/mql5_experts_mt5/CCFp EA/CCFp_indicator.png b/mql5_experts_mt5/CCFp EA/CCFp_indicator.png new file mode 100644 index 0000000..5a2db20 Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/CCFp_indicator.png differ diff --git a/mql5_experts_mt5/CCFp EA/README.md b/mql5_experts_mt5/CCFp EA/README.md new file mode 100644 index 0000000..8af425a --- /dev/null +++ b/mql5_experts_mt5/CCFp EA/README.md @@ -0,0 +1,25 @@ +# CCFp EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](CCFp_EA_false.png) +![Screenshot](CCFp_EA_true.png) + +## Files +- `ccfp_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CCFp EA/ccfp_ea.mq5 b/mql5_experts_mt5/CCFp EA/ccfp_ea.mq5 new file mode 100644 index 0000000..69aa5c7 Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/ccfp_ea.mq5 differ diff --git a/mql5_experts_mt5/CCFp EA/expert.png b/mql5_experts_mt5/CCFp EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/expert.png differ diff --git a/mql5_experts_mt5/CCFp EA/indicator.png b/mql5_experts_mt5/CCFp EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/indicator.png differ diff --git a/mql5_experts_mt5/CCFp EA/logo-2.png b/mql5_experts_mt5/CCFp EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CCFp EA/logo-2.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/61F7FED9-2342.png b/mql5_experts_mt5/CCI + MACD Scalper/61F7FED9-2342.png new file mode 100644 index 0000000..cbc9f25 Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/61F7FED9-2342.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/680E55C7-7B96.png b/mql5_experts_mt5/CCI + MACD Scalper/680E55C7-7B96.png new file mode 100644 index 0000000..2617e94 Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/680E55C7-7B96.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/README.md b/mql5_experts_mt5/CCI + MACD Scalper/README.md new file mode 100644 index 0000000..50f2f0b --- /dev/null +++ b/mql5_experts_mt5/CCI + MACD Scalper/README.md @@ -0,0 +1,25 @@ +# CCI + MACD Scalper + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](61F7FED9-2342.png) +![Screenshot](680E55C7-7B96.png) + +## Files +- `cci_macd_scalper.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CCI + MACD Scalper/avatar_na2.png b/mql5_experts_mt5/CCI + MACD Scalper/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/avatar_na2.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/cci_macd_scalper.mq5 b/mql5_experts_mt5/CCI + MACD Scalper/cci_macd_scalper.mq5 new file mode 100644 index 0000000..bd33a5a --- /dev/null +++ b/mql5_experts_mt5/CCI + MACD Scalper/cci_macd_scalper.mq5 @@ -0,0 +1,260 @@ +//+------------------------------------------------------------------+ +//| CCI + MACD Scalper | +//| | +//| | +//+------------------------------------------------------------------+ +#include +CTrade trade; + +ulong tradeTicket = 0; + +int ma34Handler; +int cciHandler; +int macdHandle; + +double ma34Array[]; +double cciArray[]; +double macdArray[]; +double macdSignalArray[]; + +datetime time0, prevBarTime; +bool timePassed = true; + +input ulong magicNumber = 0; //Magic number +input double accountRisk = 2; //Account risk % per trade +input double riskReward = 1.5; //Risk to Reward ratio +input int emaPeriod = 34; //EMA period +input int cciPeriod = 50; //CCI MA period +input int minHour = 0; //Hours from which the EA will trade +input int maxHour = 24; //Hours to which the EA will trade +input double minimalStopLoss = 100; //Minimal stop loss in points required to open a trade +input bool useTrailingStop = false; //Use trailing stop +input double tslPoints = 100; //Trailing stop points + +double orderSize = 0; +double profitsPassed = 0; +double unit = tslPoints * _Point; + +//+------------------------------------------------------------------+ +//| Initialization of indicators | +//+------------------------------------------------------------------+ +int OnInit() + { + trade.SetExpertMagicNumber(magicNumber); + + ma34Handler = iMA(_Symbol, _Period, emaPeriod, 0, MODE_EMA, PRICE_CLOSE); + cciHandler = iCCI(_Symbol, _Period, cciPeriod, PRICE_CLOSE); + macdHandle = iMACD(_Symbol, _Period, 12, 26, 9, PRICE_CLOSE); + + time0 = iTime(_Symbol, PERIOD_CURRENT, 0); + prevBarTime = iTime(_Symbol, PERIOD_CURRENT, 0); + + return(INIT_SUCCEEDED); + } + +//+------------------------------------------------------------------+ +//| OnTick method | +//+------------------------------------------------------------------+ +void OnTick() + { +//Check if the user want to use trailing stop + if(useTrailingStop) + { + CheckTrailingStops(); + } + +//Check for new bar + time0 = iTime(_Symbol, PERIOD_CURRENT, 0); + bool isNewBar = time0 != prevBarTime; + + MqlDateTime currentTime; + MqlDateTime minTime; + MqlDateTime maxTime; + + TimeToStruct(time0, currentTime); + minTime.hour = minHour; + maxTime.hour = maxHour; + + if(isNewBar && timePassed && currentTime.hour >= minTime.hour && currentTime.hour <= maxTime.hour) + { + + //Check if there is an open order + if(PositionSelectByTicket(tradeTicket) == false) + { + tradeTicket = 0; + } + + CopyBuffer(ma34Handler, 0, 0, 2, ma34Array); + CopyBuffer(cciHandler, 0, 0, 3, cciArray); + CopyBuffer(macdHandle, 0, 0, 3, macdArray); + CopyBuffer(macdHandle, 1, 0, 3, macdSignalArray); + + double ask = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK), _Digits); + double bid = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID), _Digits); + double recentLow = iLow(_Symbol, _Period, iLowest(_Symbol, _Period, MODE_LOW, 5, 1)); + double recentHigh = iHigh(_Symbol, _Period, iHighest(_Symbol, _Period, MODE_HIGH, 5, 1)); + + bool macdOversold = macdArray[2] < 0 && macdSignalArray[2] < 0 && macdArray[1] < 0 && macdSignalArray[1] < 0 && macdSignalArray[2] < macdArray[2] && macdSignalArray[1] > macdArray[1]; + bool macdOverbought = macdArray[2] > 0 && macdSignalArray[2] > 0 && macdArray[1] > 0 && macdSignalArray[1] > 0 && macdSignalArray[2] > macdArray[2] && macdSignalArray[1] < macdArray[1]; + + if(tradeTicket <= 0 && ask > ma34Array[1] && cciArray[2] < 0 && cciArray[1] > 0 && macdOversold) + { + double balance = AccountInfoDouble(ACCOUNT_BALANCE); + double risk = (accountRisk / 100) * balance; + double stopLoss = NormalizeDouble(recentLow, _Digits); + + //We don't want the EA to open positions with a stop loss that's too small + if(ask - stopLoss < minimalStopLoss * _Point) + { + return; + } + + double takeProfit = NormalizeDouble(ask + riskReward * (ask - stopLoss), _Digits); + + //Calculate lots + orderSize = CalcLots(MathAbs(ask - stopLoss) * _Point); + double lotStep=SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); + orderSize = MathFloor(orderSize / lotStep) * lotStep; + + double maxVolume= SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_LIMIT); + + if(maxVolume > 0 && maxVolume - orderSize <= 0) + { + orderSize = maxVolume; + } + + trade.Buy(orderSize, _Symbol, ask, stopLoss, takeProfit, NULL); + + //Set a timer so it doesn't open another trade too quickly and record the trade ticket + tradeTicket = trade.ResultOrder(); + timePassed = false; + EventSetTimer(PeriodSeconds(_Period) * 5); + } + else + if(tradeTicket <= 0 && bid < ma34Array[1] && cciArray[2] > 0 && cciArray[1] < 0 && macdOverbought) + { + double balance = AccountInfoDouble(ACCOUNT_BALANCE); + double risk = (accountRisk / 100) * balance; + double stopLoss = NormalizeDouble(recentHigh, _Digits); + + if(stopLoss - bid < minimalStopLoss * _Point) + { + return; + } + + double takeProfit = NormalizeDouble(bid + riskReward * (bid - stopLoss), _Digits); + + orderSize = CalcLots(MathAbs(bid - stopLoss) * _Point); + double lotStep=SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); + orderSize = MathFloor(orderSize / lotStep) * lotStep; + + double maxVolume= SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_LIMIT); + + if(maxVolume > 0 && maxVolume - orderSize <= 0) + { + orderSize = maxVolume; + } + + trade.Sell(orderSize, _Symbol, bid, stopLoss, takeProfit, NULL); + + tradeTicket = trade.ResultOrder(); + timePassed = false; + EventSetTimer(PeriodSeconds(_Period) * 5); + } + } + } + +//+------------------------------------------------------------------+ +//| Reset the timePassed variable | +//+------------------------------------------------------------------+ +void OnTimer(void) + { + timePassed = true; + } + +//+------------------------------------------------------------------+ +//| Calculate the order lot size | +//+------------------------------------------------------------------+ +double CalcLots(double slPoints) + { + double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); + double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); + double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); + + double moneyPerLotStep = slPoints / tickSize * tickValue * lotStep; + double lots = MathFloor((accountRisk / 100) / moneyPerLotStep) * lotStep; + + lots = MathMin(lots, SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX)); + lots = MathMax(lots, SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN)); + + return lots; + } + +//+------------------------------------------------------------------+ +//| Check if we should move a trailing stop loss | +//+------------------------------------------------------------------+ +void CheckTrailingStops() + { + if(PositionSelectByTicket(tradeTicket) == false) + { + tradeTicket = 0; + profitsPassed = 0; + } + + for(int i = 0; i < PositionsTotal(); i++) + { + ulong posTicket = PositionGetTicket(i); + + if(PositionGetString(POSITION_SYMBOL) == _Symbol) + { + double posOpen = PositionGetDouble(POSITION_PRICE_OPEN); + double posSl = PositionGetDouble(POSITION_SL); + + double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); + double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); + + if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) + { + + double sl = posSl + unit; + + sl = NormalizeDouble(sl, SYMBOL_TRADE_TICK_SIZE); + + if(ask - unit > posSl) + { + if(trade.PositionModify(posTicket, ask - unit, 0)) + { + //We only want to take patial profit on the first trailing stop move + if(profitsPassed == 0) + { + trade.PositionClosePartial(posTicket, orderSize / 2); + } + + profitsPassed++; + } + } + } + else + if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) + { + double sl = posSl - unit; + + sl = NormalizeDouble(sl, SYMBOL_TRADE_TICK_SIZE); + + if(bid + unit < posSl) + { + if(trade.PositionModify(posTicket, bid + unit, 0)) + { + if(profitsPassed == 0) + { + trade.PositionClosePartial(posTicket, orderSize / 2); + } + + profitsPassed++; + } + } + } + } + } + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/expert.png b/mql5_experts_mt5/CCI + MACD Scalper/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/expert.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/indicator.png b/mql5_experts_mt5/CCI + MACD Scalper/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/indicator.png differ diff --git a/mql5_experts_mt5/CCI + MACD Scalper/logo-2.png b/mql5_experts_mt5/CCI + MACD Scalper/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CCI + MACD Scalper/logo-2.png differ diff --git a/mql5_experts_mt5/CCI and Martin/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/CCI and Martin/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/CCI and Martin/README.md b/mql5_experts_mt5/CCI and Martin/README.md new file mode 100644 index 0000000..aa6e731 --- /dev/null +++ b/mql5_experts_mt5/CCI and Martin/README.md @@ -0,0 +1,24 @@ +# CCI and Martin + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](65d8b5a2-f9d9.jpg) + +## Files +- `cci_and_martin.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CCI and Martin/avatar_na2.png b/mql5_experts_mt5/CCI and Martin/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/avatar_na2.png differ diff --git a/mql5_experts_mt5/CCI and Martin/cci_and_martin.mq5 b/mql5_experts_mt5/CCI and Martin/cci_and_martin.mq5 new file mode 100644 index 0000000..697c5df Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/cci_and_martin.mq5 differ diff --git a/mql5_experts_mt5/CCI and Martin/expert.png b/mql5_experts_mt5/CCI and Martin/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/expert.png differ diff --git a/mql5_experts_mt5/CCI and Martin/indicator.png b/mql5_experts_mt5/CCI and Martin/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/indicator.png differ diff --git a/mql5_experts_mt5/CCI and Martin/logo-2.png b/mql5_experts_mt5/CCI and Martin/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CCI and Martin/logo-2.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/2022-04-13_06h56_18.png b/mql5_experts_mt5/CHO Smoothed EA/2022-04-13_06h56_18.png new file mode 100644 index 0000000..b5f7621 Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/2022-04-13_06h56_18.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/5DCA8DC1-3F96.jpg b/mql5_experts_mt5/CHO Smoothed EA/5DCA8DC1-3F96.jpg new file mode 100644 index 0000000..d51b6ee Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/5DCA8DC1-3F96.jpg differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/5F174F44-7A57.jpg b/mql5_experts_mt5/CHO Smoothed EA/5F174F44-7A57.jpg new file mode 100644 index 0000000..c2ce1e0 Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/5F174F44-7A57.jpg differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/CHO Smoothed EA/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/Additional_features__11.png b/mql5_experts_mt5/CHO Smoothed EA/Additional_features__11.png new file mode 100644 index 0000000..fb1b09b Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/Additional_features__11.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/README.md b/mql5_experts_mt5/CHO Smoothed EA/README.md new file mode 100644 index 0000000..06a5f94 --- /dev/null +++ b/mql5_experts_mt5/CHO Smoothed EA/README.md @@ -0,0 +1,29 @@ +# CHO Smoothed EA + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2022-04-13_06h56_18.png) +![Screenshot](5DCA8DC1-3F96.jpg) +![Screenshot](5F174F44-7A57.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](Additional_features__11.png) +![Screenshot](library.png) + +## Files +- `cho_smoothed_ea.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CHO Smoothed EA/cho_smoothed_ea.mq5 b/mql5_experts_mt5/CHO Smoothed EA/cho_smoothed_ea.mq5 new file mode 100644 index 0000000..575f414 Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/cho_smoothed_ea.mq5 differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/expert.png b/mql5_experts_mt5/CHO Smoothed EA/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/expert.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/indicator.png b/mql5_experts_mt5/CHO Smoothed EA/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/indicator.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/library.png b/mql5_experts_mt5/CHO Smoothed EA/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/library.png differ diff --git a/mql5_experts_mt5/CHO Smoothed EA/logo-2.png b/mql5_experts_mt5/CHO Smoothed EA/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CHO Smoothed EA/logo-2.png differ diff --git a/mql5_experts_mt5/CSV Exporter/5471155862438.png b/mql5_experts_mt5/CSV Exporter/5471155862438.png new file mode 100644 index 0000000..65a3241 Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/5471155862438.png differ diff --git a/mql5_experts_mt5/CSV Exporter/630fdfde-bf46.jpg b/mql5_experts_mt5/CSV Exporter/630fdfde-bf46.jpg new file mode 100644 index 0000000..79de12d Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/630fdfde-bf46.jpg differ diff --git a/mql5_experts_mt5/CSV Exporter/650a41ad-a940.jpg b/mql5_experts_mt5/CSV Exporter/650a41ad-a940.jpg new file mode 100644 index 0000000..2221c30 Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/650a41ad-a940.jpg differ diff --git a/mql5_experts_mt5/CSV Exporter/README.md b/mql5_experts_mt5/CSV Exporter/README.md new file mode 100644 index 0000000..51d0d02 --- /dev/null +++ b/mql5_experts_mt5/CSV Exporter/README.md @@ -0,0 +1,26 @@ +# CSV Exporter + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5471155862438.png) +![Screenshot](630fdfde-bf46.jpg) +![Screenshot](650a41ad-a940.jpg) + +## Files +- `csv_exporter.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CSV Exporter/avatar_na2.png b/mql5_experts_mt5/CSV Exporter/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/avatar_na2.png differ diff --git a/mql5_experts_mt5/CSV Exporter/csv_exporter.mq5 b/mql5_experts_mt5/CSV Exporter/csv_exporter.mq5 new file mode 100644 index 0000000..9d6ac1f --- /dev/null +++ b/mql5_experts_mt5/CSV Exporter/csv_exporter.mq5 @@ -0,0 +1,64 @@ +//+------------------------------------------------------------------+ +//| ProjectName | +//| Copyright 2020, CompanyName | +//| http://www.companyname.net | +//+------------------------------------------------------------------+ + + +static datetime Switch; +int x; +input int UpdateTime =900; // after x seconds EA will run again. +input int CandleCount =133; // EA will export y candles only. It will rewrite on existing cvs file. + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- create timer + Switch = TimeCurrent(); + x = 1; +//--- + return(INIT_SUCCEEDED); + } + + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + MqlRates OHLC[]; + MqlDateTime mdt; + TimeCurrent(mdt); + + string sSymbol=Symbol(); + string sPeriod=EnumToString(Period()); + string ExtFileName; + int copiedOHLC=CopyRates(NULL,0,0,CandleCount,OHLC); // 288 bars per day on M5 + MqlRates PriceInfo[]; + ArraySetAsSeries(PriceInfo,true); + int PriceData = CopyRates(_Symbol,_Period,0,3,PriceInfo); + if(TimeCurrent() > (Switch+x)) + { + ExtFileName=sSymbol; + StringConcatenate(ExtFileName,sSymbol,"_",sPeriod,".CSV"); + + + + int mySpreadsheetHandle = FileOpen(ExtFileName,FILE_WRITE|FILE_CSV|FILE_ANSI); + FileSeek(mySpreadsheetHandle,0,SEEK_END); + + for(int i=1; i<=CandleCount-1; i++) + { + + FileWrite(mySpreadsheetHandle,OHLC[i].close); //_Symbol,OHLC[i].time, OHLC[i].time, OHLC[i].open, OHLC[i].high, , OHLC[i].tick_volume , OHLC[i].time, + FileSeek(mySpreadsheetHandle,0,SEEK_END); + } + FileClose(mySpreadsheetHandle); + Switch = TimeCurrent(); + x = UpdateTime; + } + Comment(" CSV Exporter ae running ... "); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/CSV Exporter/expert.png b/mql5_experts_mt5/CSV Exporter/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/expert.png differ diff --git a/mql5_experts_mt5/CSV Exporter/indicator.png b/mql5_experts_mt5/CSV Exporter/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/indicator.png differ diff --git a/mql5_experts_mt5/CSV Exporter/logo-2.png b/mql5_experts_mt5/CSV Exporter/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CSV Exporter/logo-2.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenFalse.png b/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenFalse.png new file mode 100644 index 0000000..0c79116 Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenFalse.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenTrue.png b/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenTrue.png new file mode 100644 index 0000000..317a034 Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/CandelsHighOpenTrue.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/README.md b/mql5_experts_mt5/CandelsHighOpen/README.md new file mode 100644 index 0000000..8515078 --- /dev/null +++ b/mql5_experts_mt5/CandelsHighOpen/README.md @@ -0,0 +1,26 @@ +# CandelsHighOpen + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](CandelsHighOpenFalse.png) +![Screenshot](CandelsHighOpenTrue.png) +![Screenshot](library.png) + +## Files +- `candelshighopen.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CandelsHighOpen/candelshighopen.mq5 b/mql5_experts_mt5/CandelsHighOpen/candelshighopen.mq5 new file mode 100644 index 0000000..e2a4fe4 --- /dev/null +++ b/mql5_experts_mt5/CandelsHighOpen/candelshighopen.mq5 @@ -0,0 +1,172 @@ +//+------------------------------------------------------------------+ +//| CandelsHighOpen.mq5 | +//| Copyright 2016, MetaQuotes Software Corp. | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2016, MetaQuotes Software Corp." +#property link "https://www.mql5.com" +#property version "1.00" +//+------------------------------------------------------------------+ +//| Include | +//+------------------------------------------------------------------+ +#include +//--- available signals +#include +//--- available trailing +#include +//--- available money management +#include +//+------------------------------------------------------------------+ +//| Inputs | +//+------------------------------------------------------------------+ +//--- inputs for expert +input string Expert_Title ="CandelsHighOpen"; // Document name +ulong Expert_MagicNumber =25231; // +bool Expert_EveryTick =false; // +//--- inputs for main signal +input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] +input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] +input double Signal_PriceLevel =0.0; // Price level to execute a deal +input double Signal_StopLevel =50.0; // Stop Loss level (in points) +input double Signal_TakeLevel =50.0; // Take Profit level (in points) +input int Signal_Expiration =4; // Expiration of pending orders (in bars) +input int Signal_SignalCandelsHighOpen_ReverseSignals=0; // SignalCandelsHighOpen(0) Reverse signals +input double Signal_SignalCandelsHighOpen_Weight =1.0; // SignalCandelsHighOpen(0) Weight [0...1.0] +//--- inputs for trailing +input double Trailing_ParabolicSAR_Step =0.02; // Speed increment +input double Trailing_ParabolicSAR_Maximum =0.2; // Maximum rate +//--- inputs for money +input double Money_FixRisk_Percent=10.0; // Risk percentage +//+------------------------------------------------------------------+ +//| Global expert object | +//+------------------------------------------------------------------+ +CExpert ExtExpert; +//+------------------------------------------------------------------+ +//| Initialization function of the expert | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- Initializing expert + if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) + { + //--- failed + printf(__FUNCTION__+": error initializing expert"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Creating signal + CExpertSignal *signal=new CExpertSignal; + if(signal==NULL) + { + //--- failed + printf(__FUNCTION__+": error creating signal"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- + ExtExpert.InitSignal(signal); + signal.ThresholdOpen(Signal_ThresholdOpen); + signal.ThresholdClose(Signal_ThresholdClose); + signal.PriceLevel(Signal_PriceLevel); + signal.StopLevel(Signal_StopLevel); + signal.TakeLevel(Signal_TakeLevel); + signal.Expiration(Signal_Expiration); +//--- Creating filter CSignalCHO + CSignalCHO *filter0=new CSignalCHO; + if(filter0==NULL) + { + //--- failed + printf(__FUNCTION__+": error creating filter0"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } + signal.AddFilter(filter0); +//--- Set filter parameters + filter0.ReverseSignals(Signal_SignalCandelsHighOpen_ReverseSignals); + filter0.Weight(Signal_SignalCandelsHighOpen_Weight); +//--- Creation of trailing object + CTrailingPSAR *trailing=new CTrailingPSAR; + if(trailing==NULL) + { + //--- failed + printf(__FUNCTION__+": error creating trailing"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Add trailing to expert (will be deleted automatically)) + if(!ExtExpert.InitTrailing(trailing)) + { + //--- failed + printf(__FUNCTION__+": error initializing trailing"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Set trailing parameters + trailing.Step(Trailing_ParabolicSAR_Step); + trailing.Maximum(Trailing_ParabolicSAR_Maximum); +//--- Creation of money object + CMoneyFixedRisk *money=new CMoneyFixedRisk; + if(money==NULL) + { + //--- failed + printf(__FUNCTION__+": error creating money"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Add money to expert (will be deleted automatically)) + if(!ExtExpert.InitMoney(money)) + { + //--- failed + printf(__FUNCTION__+": error initializing money"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Set money parameters + money.Percent(Money_FixRisk_Percent); +//--- Check all trading objects parameters + if(!ExtExpert.ValidationSettings()) + { + //--- failed + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- Tuning of all necessary indicators + if(!ExtExpert.InitIndicators()) + { + //--- failed + printf(__FUNCTION__+": error initializing indicators"); + ExtExpert.Deinit(); + return(INIT_FAILED); + } +//--- ok + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Deinitialization function of the expert | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { + ExtExpert.Deinit(); + } +//+------------------------------------------------------------------+ +//| "Tick" event handler function | +//+------------------------------------------------------------------+ +void OnTick() + { + ExtExpert.OnTick(); + } +//+------------------------------------------------------------------+ +//| "Trade" event handler function | +//+------------------------------------------------------------------+ +void OnTrade() + { + ExtExpert.OnTrade(); + } +//+------------------------------------------------------------------+ +//| "Timer" event handler function | +//+------------------------------------------------------------------+ +void OnTimer() + { + ExtExpert.OnTimer(); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/CandelsHighOpen/expert.png b/mql5_experts_mt5/CandelsHighOpen/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/expert.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/indicator.png b/mql5_experts_mt5/CandelsHighOpen/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/indicator.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/library.png b/mql5_experts_mt5/CandelsHighOpen/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/library.png differ diff --git a/mql5_experts_mt5/CandelsHighOpen/logo-2.png b/mql5_experts_mt5/CandelsHighOpen/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CandelsHighOpen/logo-2.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/5CB0FE21-E283.jpg b/mql5_experts_mt5/Candle Pattern EA _test/5CB0FE21-E283.jpg new file mode 100644 index 0000000..5e74895 Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/5CB0FE21-E283.jpg differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/5D67260D-44C9.png b/mql5_experts_mt5/Candle Pattern EA _test/5D67260D-44C9.png new file mode 100644 index 0000000..1021ddf Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/5D67260D-44C9.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/README.md b/mql5_experts_mt5/Candle Pattern EA _test/README.md new file mode 100644 index 0000000..716ddec --- /dev/null +++ b/mql5_experts_mt5/Candle Pattern EA _test/README.md @@ -0,0 +1,28 @@ +# Candle Pattern EA _test + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5CB0FE21-E283.jpg) +![Screenshot](5D67260D-44C9.png) +![Screenshot](library.png) +![Screenshot](Screen_Shot_2021-01-11_at_22.22.54__1.png) +![Screenshot](script.png) + +## Files +- `candlepatternsexample.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Candle Pattern EA _test/Screen_Shot_2021-01-11_at_22.22.54__1.png b/mql5_experts_mt5/Candle Pattern EA _test/Screen_Shot_2021-01-11_at_22.22.54__1.png new file mode 100644 index 0000000..2e4de4b Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/Screen_Shot_2021-01-11_at_22.22.54__1.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/avatar_na2.png b/mql5_experts_mt5/Candle Pattern EA _test/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/avatar_na2.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/candlepatternsexample.mq5 b/mql5_experts_mt5/Candle Pattern EA _test/candlepatternsexample.mq5 new file mode 100644 index 0000000..a1bed6f Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/candlepatternsexample.mq5 differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/expert.png b/mql5_experts_mt5/Candle Pattern EA _test/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/expert.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/library.png b/mql5_experts_mt5/Candle Pattern EA _test/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/library.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/logo-2.png b/mql5_experts_mt5/Candle Pattern EA _test/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/logo-2.png differ diff --git a/mql5_experts_mt5/Candle Pattern EA _test/script.png b/mql5_experts_mt5/Candle Pattern EA _test/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Candle Pattern EA _test/script.png differ diff --git a/mql5_experts_mt5/Candle shadow percent/README.md b/mql5_experts_mt5/Candle shadow percent/README.md new file mode 100644 index 0000000..3f29a3d --- /dev/null +++ b/mql5_experts_mt5/Candle shadow percent/README.md @@ -0,0 +1,24 @@ +# Candle shadow percent + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) + +## Files +- `candle_shadow_percent.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Candle shadow percent/candle_shadow_percent.mq5 b/mql5_experts_mt5/Candle shadow percent/candle_shadow_percent.mq5 new file mode 100644 index 0000000..6d473f3 Binary files /dev/null and b/mql5_experts_mt5/Candle shadow percent/candle_shadow_percent.mq5 differ diff --git a/mql5_experts_mt5/Candle shadow percent/expert.png b/mql5_experts_mt5/Candle shadow percent/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Candle shadow percent/expert.png differ diff --git a/mql5_experts_mt5/Candle shadow percent/indicator.png b/mql5_experts_mt5/Candle shadow percent/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Candle shadow percent/indicator.png differ diff --git a/mql5_experts_mt5/Candle shadow percent/logo-2.png b/mql5_experts_mt5/Candle shadow percent/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Candle shadow percent/logo-2.png differ diff --git a/mql5_experts_mt5/Candle shadow percent/script.png b/mql5_experts_mt5/Candle shadow percent/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Candle shadow percent/script.png differ diff --git a/mql5_experts_mt5/Candle shadows v1/Candle_shadows_v1_Sell.png b/mql5_experts_mt5/Candle shadows v1/Candle_shadows_v1_Sell.png new file mode 100644 index 0000000..acae2ae Binary files /dev/null and b/mql5_experts_mt5/Candle shadows v1/Candle_shadows_v1_Sell.png differ diff --git a/mql5_experts_mt5/Candle shadows v1/README.md b/mql5_experts_mt5/Candle shadows v1/README.md new file mode 100644 index 0000000..cd6ba9b --- /dev/null +++ b/mql5_experts_mt5/Candle shadows v1/README.md @@ -0,0 +1,24 @@ +# Candle shadows v1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](Candle_shadows_v1_Sell.png) + +## Files +- `candle_shadows_v1.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Candle shadows v1/candle_shadows_v1.mq5 b/mql5_experts_mt5/Candle shadows v1/candle_shadows_v1.mq5 new file mode 100644 index 0000000..9ceb710 Binary files /dev/null and b/mql5_experts_mt5/Candle shadows v1/candle_shadows_v1.mq5 differ diff --git a/mql5_experts_mt5/Candle shadows v1/expert.png b/mql5_experts_mt5/Candle shadows v1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Candle shadows v1/expert.png differ diff --git a/mql5_experts_mt5/Candle shadows v1/indicator.png b/mql5_experts_mt5/Candle shadows v1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Candle shadows v1/indicator.png differ diff --git a/mql5_experts_mt5/Candle shadows v1/logo-2.png b/mql5_experts_mt5/Candle shadows v1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Candle shadows v1/logo-2.png differ diff --git a/mql5_experts_mt5/Candle/5B987E66-60BB.jpg b/mql5_experts_mt5/Candle/5B987E66-60BB.jpg new file mode 100644 index 0000000..2c16179 Binary files /dev/null and b/mql5_experts_mt5/Candle/5B987E66-60BB.jpg differ diff --git a/mql5_experts_mt5/Candle/6357d74f-f404.jpg b/mql5_experts_mt5/Candle/6357d74f-f404.jpg new file mode 100644 index 0000000..f02d664 Binary files /dev/null and b/mql5_experts_mt5/Candle/6357d74f-f404.jpg differ diff --git a/mql5_experts_mt5/Candle/65d8b5a2-f9d9.jpg b/mql5_experts_mt5/Candle/65d8b5a2-f9d9.jpg new file mode 100644 index 0000000..27dccbe Binary files /dev/null and b/mql5_experts_mt5/Candle/65d8b5a2-f9d9.jpg differ diff --git a/mql5_experts_mt5/Candle/README.md b/mql5_experts_mt5/Candle/README.md new file mode 100644 index 0000000..41e1649 --- /dev/null +++ b/mql5_experts_mt5/Candle/README.md @@ -0,0 +1,28 @@ +# Candle + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5B987E66-60BB.jpg) +![Screenshot](6357d74f-f404.jpg) +![Screenshot](65d8b5a2-f9d9.jpg) +![Screenshot](library.png) +![Screenshot](script.png) + +## Files +- `candle.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Candle/candle.mq5 b/mql5_experts_mt5/Candle/candle.mq5 new file mode 100644 index 0000000..8bbacd7 Binary files /dev/null and b/mql5_experts_mt5/Candle/candle.mq5 differ diff --git a/mql5_experts_mt5/Candle/expert.png b/mql5_experts_mt5/Candle/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Candle/expert.png differ diff --git a/mql5_experts_mt5/Candle/library.png b/mql5_experts_mt5/Candle/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Candle/library.png differ diff --git a/mql5_experts_mt5/Candle/logo-2.png b/mql5_experts_mt5/Candle/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Candle/logo-2.png differ diff --git a/mql5_experts_mt5/Candle/script.png b/mql5_experts_mt5/Candle/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Candle/script.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/551B5FF3-E57D.jpg b/mql5_experts_mt5/Candlestick Analysis EA R1/551B5FF3-E57D.jpg new file mode 100644 index 0000000..db03975 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/551B5FF3-E57D.jpg differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/57689.jpg b/mql5_experts_mt5/Candlestick Analysis EA R1/57689.jpg new file mode 100644 index 0000000..347b5b8 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/57689.jpg differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/5F011EC9-F3F1.png b/mql5_experts_mt5/Candlestick Analysis EA R1/5F011EC9-F3F1.png new file mode 100644 index 0000000..2ba1fa3 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/5F011EC9-F3F1.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/6823e209-6eb1.jpg b/mql5_experts_mt5/Candlestick Analysis EA R1/6823e209-6eb1.jpg new file mode 100644 index 0000000..09acabe Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/6823e209-6eb1.jpg differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/README.md b/mql5_experts_mt5/Candlestick Analysis EA R1/README.md new file mode 100644 index 0000000..224c491 --- /dev/null +++ b/mql5_experts_mt5/Candlestick Analysis EA R1/README.md @@ -0,0 +1,28 @@ +# Candlestick Analysis EA R1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](551B5FF3-E57D.jpg) +![Screenshot](57689.jpg) +![Screenshot](5F011EC9-F3F1.png) +![Screenshot](6823e209-6eb1.jpg) +![Screenshot](library.png) + +## Files +- `mp_candlestick.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/avatar_na2.png b/mql5_experts_mt5/Candlestick Analysis EA R1/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/avatar_na2.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/expert.png b/mql5_experts_mt5/Candlestick Analysis EA R1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/expert.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/indicator.png b/mql5_experts_mt5/Candlestick Analysis EA R1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/indicator.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/library.png b/mql5_experts_mt5/Candlestick Analysis EA R1/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/library.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/logo-2.png b/mql5_experts_mt5/Candlestick Analysis EA R1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/logo-2.png differ diff --git a/mql5_experts_mt5/Candlestick Analysis EA R1/mp_candlestick.mq5 b/mql5_experts_mt5/Candlestick Analysis EA R1/mp_candlestick.mq5 new file mode 100644 index 0000000..ffaa09e Binary files /dev/null and b/mql5_experts_mt5/Candlestick Analysis EA R1/mp_candlestick.mq5 differ diff --git a/mql5_experts_mt5/Carbophos/README.md b/mql5_experts_mt5/Carbophos/README.md new file mode 100644 index 0000000..9fe73cc --- /dev/null +++ b/mql5_experts_mt5/Carbophos/README.md @@ -0,0 +1,24 @@ +# Carbophos + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](script.png) + +## Files +- `carbophos.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Carbophos/carbophos.mq5 b/mql5_experts_mt5/Carbophos/carbophos.mq5 new file mode 100644 index 0000000..8598d4a Binary files /dev/null and b/mql5_experts_mt5/Carbophos/carbophos.mq5 differ diff --git a/mql5_experts_mt5/Carbophos/expert.png b/mql5_experts_mt5/Carbophos/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Carbophos/expert.png differ diff --git a/mql5_experts_mt5/Carbophos/indicator.png b/mql5_experts_mt5/Carbophos/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Carbophos/indicator.png differ diff --git a/mql5_experts_mt5/Carbophos/logo-2.png b/mql5_experts_mt5/Carbophos/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Carbophos/logo-2.png differ diff --git a/mql5_experts_mt5/Carbophos/script.png b/mql5_experts_mt5/Carbophos/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/Carbophos/script.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/5BF6E867-E691.png b/mql5_experts_mt5/CashMachine 5min/5BF6E867-E691.png new file mode 100644 index 0000000..85fd6e8 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/5BF6E867-E691.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/README.md b/mql5_experts_mt5/CashMachine 5min/README.md new file mode 100644 index 0000000..ac1db24 --- /dev/null +++ b/mql5_experts_mt5/CashMachine 5min/README.md @@ -0,0 +1,25 @@ +# CashMachine 5min + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5BF6E867-E691.png) +![Screenshot](script.png) + +## Files +- `cashmachine_5min.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/CashMachine 5min/avatar_na2.png b/mql5_experts_mt5/CashMachine 5min/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/avatar_na2.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/cashmachine_5min.mq5 b/mql5_experts_mt5/CashMachine 5min/cashmachine_5min.mq5 new file mode 100644 index 0000000..bc7dd71 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/cashmachine_5min.mq5 differ diff --git a/mql5_experts_mt5/CashMachine 5min/expert.png b/mql5_experts_mt5/CashMachine 5min/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/expert.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/indicator.png b/mql5_experts_mt5/CashMachine 5min/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/indicator.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/logo-2.png b/mql5_experts_mt5/CashMachine 5min/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/logo-2.png differ diff --git a/mql5_experts_mt5/CashMachine 5min/script.png b/mql5_experts_mt5/CashMachine 5min/script.png new file mode 100644 index 0000000..d32d874 Binary files /dev/null and b/mql5_experts_mt5/CashMachine 5min/script.png differ diff --git a/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_graph.png b/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_graph.png new file mode 100644 index 0000000..4081220 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_graph.png differ diff --git a/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_res.png b/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_res.png new file mode 100644 index 0000000..dc9d1b4 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/ChannelEA1_eurusd_res.png differ diff --git a/mql5_experts_mt5/ChannelEA1/README.md b/mql5_experts_mt5/ChannelEA1/README.md new file mode 100644 index 0000000..5d69ae5 --- /dev/null +++ b/mql5_experts_mt5/ChannelEA1/README.md @@ -0,0 +1,25 @@ +# ChannelEA1 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](ChannelEA1_eurusd_graph.png) +![Screenshot](ChannelEA1_eurusd_res.png) + +## Files +- `channelea1.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ChannelEA1/channelea1.mq5 b/mql5_experts_mt5/ChannelEA1/channelea1.mq5 new file mode 100644 index 0000000..5439f0a Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/channelea1.mq5 differ diff --git a/mql5_experts_mt5/ChannelEA1/expert.png b/mql5_experts_mt5/ChannelEA1/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/expert.png differ diff --git a/mql5_experts_mt5/ChannelEA1/indicator.png b/mql5_experts_mt5/ChannelEA1/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/indicator.png differ diff --git a/mql5_experts_mt5/ChannelEA1/logo-2.png b/mql5_experts_mt5/ChannelEA1/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ChannelEA1/logo-2.png differ diff --git a/mql5_experts_mt5/ChannelEA2/5DD7B1CB-5121.jpg b/mql5_experts_mt5/ChannelEA2/5DD7B1CB-5121.jpg new file mode 100644 index 0000000..4906f5e Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/5DD7B1CB-5121.jpg differ diff --git a/mql5_experts_mt5/ChannelEA2/5F1C11EB-0C6E.jpg b/mql5_experts_mt5/ChannelEA2/5F1C11EB-0C6E.jpg new file mode 100644 index 0000000..2ab3d75 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/5F1C11EB-0C6E.jpg differ diff --git a/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph.png b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph.png new file mode 100644 index 0000000..67e775c Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph.png differ diff --git a/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph_def.png b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph_def.png new file mode 100644 index 0000000..35763d7 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_graph_def.png differ diff --git a/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res.png b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res.png new file mode 100644 index 0000000..7f6478b Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res.png differ diff --git a/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res_def.png b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res_def.png new file mode 100644 index 0000000..37a16dc Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/ChannelEA2_eurusd_res_def.png differ diff --git a/mql5_experts_mt5/ChannelEA2/README.md b/mql5_experts_mt5/ChannelEA2/README.md new file mode 100644 index 0000000..ef9ed32 --- /dev/null +++ b/mql5_experts_mt5/ChannelEA2/README.md @@ -0,0 +1,30 @@ +# ChannelEA2 + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](5DD7B1CB-5121.jpg) +![Screenshot](5F1C11EB-0C6E.jpg) +![Screenshot](ChannelEA2_eurusd_graph.png) +![Screenshot](ChannelEA2_eurusd_graph_def.png) +![Screenshot](ChannelEA2_eurusd_res.png) +![Screenshot](ChannelEA2_eurusd_res_def.png) +![Screenshot](library.png) + +## Files +- `channelea2.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ChannelEA2/avatar_na2.png b/mql5_experts_mt5/ChannelEA2/avatar_na2.png new file mode 100644 index 0000000..275d716 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/avatar_na2.png differ diff --git a/mql5_experts_mt5/ChannelEA2/channelea2.mq5 b/mql5_experts_mt5/ChannelEA2/channelea2.mq5 new file mode 100644 index 0000000..b9788e8 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/channelea2.mq5 differ diff --git a/mql5_experts_mt5/ChannelEA2/expert.png b/mql5_experts_mt5/ChannelEA2/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/expert.png differ diff --git a/mql5_experts_mt5/ChannelEA2/library.png b/mql5_experts_mt5/ChannelEA2/library.png new file mode 100644 index 0000000..5c79a8f Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/library.png differ diff --git a/mql5_experts_mt5/ChannelEA2/logo-2.png b/mql5_experts_mt5/ChannelEA2/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/ChannelEA2/logo-2.png differ diff --git a/mql5_experts_mt5/Channels/2018-02-09_10h37_42.png b/mql5_experts_mt5/Channels/2018-02-09_10h37_42.png new file mode 100644 index 0000000..70de552 Binary files /dev/null and b/mql5_experts_mt5/Channels/2018-02-09_10h37_42.png differ diff --git a/mql5_experts_mt5/Channels/Channels.png b/mql5_experts_mt5/Channels/Channels.png new file mode 100644 index 0000000..a414625 Binary files /dev/null and b/mql5_experts_mt5/Channels/Channels.png differ diff --git a/mql5_experts_mt5/Channels/README.md b/mql5_experts_mt5/Channels/README.md new file mode 100644 index 0000000..70cd0cf --- /dev/null +++ b/mql5_experts_mt5/Channels/README.md @@ -0,0 +1,25 @@ +# Channels + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](2018-02-09_10h37_42.png) +![Screenshot](Channels.png) + +## Files +- `channels.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/Channels/channels.mq5 b/mql5_experts_mt5/Channels/channels.mq5 new file mode 100644 index 0000000..981dcbe --- /dev/null +++ b/mql5_experts_mt5/Channels/channels.mq5 @@ -0,0 +1,470 @@ +//+------------------------------------------------------------------+ +//| Channels(barabashkakvn's edition).mq5 | +//| Copyright 2018, MetaQuotes Software Corp. | +//| http://wmua.ru/slesar/ | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2018, MetaQuotes Software Corp." +#property link "http://wmua.ru/slesar/" +#property version "1.000" +//--- +#include +#include +#include +CPositionInfo m_position; // trade position object +CTrade m_trade; // trading object +CSymbolInfo m_symbol; // symbol info object +//+------------------------------------------------------------------+ +//| Enum hours | +//+------------------------------------------------------------------+ +enum ENUM_HOURS + { + hour_00 =0, // 00 + hour_01 =1, // 01 + hour_02 =2, // 02 + hour_03 =3, // 03 + hour_04 =4, // 04 + hour_05 =5, // 05 + hour_06 =6, // 06 + hour_07 =7, // 07 + hour_08 =8, // 08 + hour_09 =9, // 09 + hour_10 =10, // 10 + hour_11 =11, // 11 + hour_12 =12, // 12 + hour_13 =13, // 13 + hour_14 =14, // 14 + hour_15 =15, // 15 + hour_16 =16, // 16 + hour_17 =17, // 17 + hour_18 =18, // 18 + hour_19 =19, // 19 + hour_20 =20, // 20 + hour_21 =21, // 21 + hour_22 =22, // 22 + hour_23 =23, // 23 + }; +//--- input parameters +input double InpLots=0.1; // Lots +input ushort InpStopLossBuy = 0; // Stop Loss BUY (in pips) +input ushort InpStopLossSell = 0; // Stop Loss SELL (in pips) +input ushort InpTakeProfitBuy = 0; // Take Profit BUY (in pips) +input ushort InpTakeProfitSell = 0; // Take Profit SELL (in pips) +input ushort InpTrailingStopBuy = 30; // Trailing Stop BUY (in pips) +input ushort InpTrailingStopSell = 30; // Trailing Stop SELL (in pips) +ushort InpTrailingStep = 1; // Trailing Step (in pips) +input bool InpUseHours = false; // Use trade hours +input ENUM_HOURS InpFrom=hour_00; // From hour +input ENUM_HOURS InpTo=hour_23; // To hour +input ulong m_magic=43915489; // magic number +//--- +ulong m_slippage=10; // slippage + +double ExtStopLossBuy=0.0; +double ExtStopLossSell=0.0; +double ExtTakeProfitBuy=0.0; +double ExtTakeProfitSell=0.0; +double ExtTrailingStopBuy=0.0; +double ExtTrailingStopSell=0.0; +double ExtTrailingStep=0.0; + +int handle_iMA_H1_002_close; // variable for storing the handle of the iMA indicator +int handle_iMA_H1_002_open; // variable for storing the handle of the iMA indicator +int handle_iMA_H1_220_close; // variable for storing the handle of the iMA indicator +int handle_iEnvelopes_H1_220_0_3; // variable for storing the handle of the iEnvelopes indicator +int handle_iEnvelopes_H1_220_0_7; // variable for storing the handle of the iEnvelopes indicator +int handle_iEnvelopes_H1_220_1_0; // variable for storing the handle of the iEnvelopes indicator + +double m_adjusted_point; // point value adjusted for 3 or 5 points +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- + if(!m_symbol.Name(Symbol())) // sets symbol name + return(INIT_FAILED); + RefreshRates(); + + string err_text=""; + if(!CheckVolumeValue(InpLots,err_text)) + { + Print(err_text); + return(INIT_PARAMETERS_INCORRECT); + } +//--- + m_trade.SetExpertMagicNumber(m_magic); +//--- + if(IsFillingTypeAllowed(SYMBOL_FILLING_FOK)) + m_trade.SetTypeFilling(ORDER_FILLING_FOK); + else if(IsFillingTypeAllowed(SYMBOL_FILLING_IOC)) + m_trade.SetTypeFilling(ORDER_FILLING_IOC); + else + m_trade.SetTypeFilling(ORDER_FILLING_RETURN); +//--- + m_trade.SetDeviationInPoints(m_slippage); +//--- tuning for 3 or 5 digits + int digits_adjust=1; + if(m_symbol.Digits()==3 || m_symbol.Digits()==5) + digits_adjust=10; + m_adjusted_point=m_symbol.Point()*digits_adjust; + + ExtStopLossBuy = InpStopLossBuy*m_adjusted_point; + ExtStopLossSell = InpStopLossSell*m_adjusted_point; + ExtTakeProfitBuy = InpTakeProfitBuy*m_adjusted_point; + ExtTakeProfitSell = InpTakeProfitSell*m_adjusted_point; + ExtTrailingStopBuy = InpTrailingStopBuy*m_adjusted_point; + ExtTrailingStopSell = InpTrailingStopSell*m_adjusted_point; + ExtTrailingStep = InpTrailingStep*m_adjusted_point; +//--- create handle of the indicator iMA + handle_iMA_H1_002_close=iMA(m_symbol.Name(),PERIOD_H1,2,0,MODE_EMA,PRICE_CLOSE); +//--- if the handle is not created + if(handle_iMA_H1_002_close==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(Period()), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- create handle of the indicator iMA + handle_iMA_H1_002_open=iMA(m_symbol.Name(),PERIOD_H1,2,0,MODE_EMA,PRICE_OPEN); +//--- if the handle is not created + if(handle_iMA_H1_002_open==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(Period()), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- create handle of the indicator iMA + handle_iMA_H1_220_close=iMA(m_symbol.Name(),PERIOD_H1,220,0,MODE_EMA,PRICE_CLOSE); +//--- if the handle is not created + if(handle_iMA_H1_220_close==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(Period()), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- create handle of the indicator iEnvelopes + handle_iEnvelopes_H1_220_0_3=iEnvelopes(m_symbol.Name(),PERIOD_H1,220,0,MODE_EMA,PRICE_CLOSE,0.3); +//--- if the handle is not created + if(handle_iEnvelopes_H1_220_0_3==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iEnvelopes indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(PERIOD_D1), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- create handle of the indicator iEnvelopes + handle_iEnvelopes_H1_220_0_7=iEnvelopes(m_symbol.Name(),PERIOD_H1,220,0,MODE_EMA,PRICE_CLOSE,0.7); +//--- if the handle is not created + if(handle_iEnvelopes_H1_220_0_7==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iEnvelopes indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(PERIOD_D1), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- create handle of the indicator iEnvelopes + handle_iEnvelopes_H1_220_1_0=iEnvelopes(m_symbol.Name(),PERIOD_H1,220,0,MODE_EMA,PRICE_CLOSE,1.0); +//--- if the handle is not created + if(handle_iEnvelopes_H1_220_1_0==INVALID_HANDLE) + { + //--- tell about the failure and output the error code + PrintFormat("Failed to create handle of the iEnvelopes indicator for the symbol %s/%s, error code %d", + m_symbol.Name(), + EnumToString(PERIOD_D1), + GetLastError()); + //--- the indicator is stopped early + return(INIT_FAILED); + } +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//--- + MqlDateTime str1; + TimeToStruct(TimeCurrent(),str1); + + if(InpUseHours) + { + if(!(str1.hour>=InpFrom && str1.hour<=InpTo)) + { + Comment("Time for trade has not come else!"); + return; + } + } + if(Bars(m_symbol.Name(),Period())<100) + { + Comment("bars less than 100"); + return; + } + else + Comment(""); + + double MA_H1_002_close_p0=iMAGet(handle_iMA_H1_002_close,0); + double MA_H1_002_close_p1=iMAGet(handle_iMA_H1_002_close,1); + double MA_H1_002_open_p0=iMAGet(handle_iMA_H1_002_open,0); + double MA_H1_002_open_p1=iMAGet(handle_iMA_H1_002_open,1); + double MA_H1_220_close_p0=iMAGet(handle_iMA_H1_220_close,0); + + double Env_H1_220_0_3_upper_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_0_3,UPPER_LINE,0); + double Env_H1_220_0_3_lower_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_0_3,LOWER_LINE,0); + double Env_H1_220_0_7_upper_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_0_7,UPPER_LINE,0); + double Env_H1_220_0_7_lower_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_0_7,LOWER_LINE,0); + double Env_H1_220_1_0_upper_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_1_0,UPPER_LINE,0); + double Env_H1_220_1_0_lower_p0=iEnvelopesGet(handle_iEnvelopes_H1_220_1_0,LOWER_LINE,0); + + bool lFlagBuyOpen=false; + bool lFlagSellOpen=false; +//--- + lFlagBuyOpen=((MA_H1_002_close_p0>Env_H1_220_1_0_lower_p0 && MA_H1_002_close_p1Env_H1_220_0_7_lower_p0 && MA_H1_002_close_p1MA_H1_220_close_p0 && MA_H1_002_close_p1Env_H1_220_0_3_upper_p0 && MA_H1_002_close_p1Env_H1_220_0_7_upper_p0 && MA_H1_002_close_p1Env_H1_220_1_0_upper_p0) + || (MA_H1_002_open_p0Env_H1_220_0_7_upper_p0) || + (MA_H1_002_open_p0Env_H1_220_0_3_upper_p0) || (MA_H1_002_open_p0MA_H1_220_close_p0) || (MA_H1_002_open_p0Env_H1_220_0_3_lower_p0) || + (MA_H1_002_open_p0Env_H1_220_0_7_lower_p0)); +//--- + if(InpTrailingStopBuy==0 && InpTrailingStopSell==0) + return; + int total=0; + for(int i=PositionsTotal()-1;i>=0;i--) + if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties + if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic) + { + total++; + if(m_position.PositionType()==POSITION_TYPE_BUY) + { + if(InpTrailingStopBuy!=0) + { + if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingStopBuy+ExtTrailingStep) + if(m_position.StopLoss() false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + continue; + } + } + } + + if(m_position.PositionType()==POSITION_TYPE_SELL) + { + if(InpTrailingStopSell!=0) + { + if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingStopSell+ExtTrailingStep) + if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingStopSell+ExtTrailingStep))) || + (m_position.StopLoss()==0)) + { + if(!m_trade.PositionModify(m_position.Ticket(), + m_symbol.NormalizePrice(m_position.PriceCurrent()+ExtTrailingStopSell), + m_position.TakeProfit())) + Print("Modify ",m_position.Ticket(), + " Position -> false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + } + } + } + } +//--- + if(total==0) + { + if(lFlagBuyOpen) + { + if(!RefreshRates()) + return; + double sl=0.0; + double tp=0.0; + if(InpStopLossBuy!=0) + sl=m_symbol.NormalizePrice(m_symbol.Ask()-ExtStopLossBuy); + if(InpTakeProfitBuy!=0) + tp=m_symbol.NormalizePrice(m_symbol.Ask()+ExtTakeProfitBuy); + if(m_trade.Buy(InpLots,m_symbol.Name(),m_symbol.Ask(),sl,tp)) + { + if(m_trade.ResultDeal()==0) + { + Print("#1 Buy -> false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + else + { + Print("#2 Buy -> true. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + } + else + { + Print("#3 Buy -> false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + return; + } + if(lFlagSellOpen) + { + if(!RefreshRates()) + return; + double sl=0.0; + double tp=0.0; + if(InpStopLossSell!=0) + sl=m_symbol.NormalizePrice(m_symbol.Bid()+ExtStopLossSell); + if(InpTakeProfitSell!=0) + tp=m_symbol.NormalizePrice(m_symbol.Bid()-ExtTakeProfitSell); + if(m_trade.Sell(InpLots,m_symbol.Name(),m_symbol.Bid(),sl,tp)) + { + if(m_trade.ResultDeal()==0) + { + Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + else + { + Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + } + else + { + Print("#3 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(), + ", description of result: ",m_trade.ResultRetcodeDescription()); + //PrintResult(m_trade,m_symbol); + } + } + } + } +//+------------------------------------------------------------------+ +//| Refreshes the symbol quotes data | +//+------------------------------------------------------------------+ +bool RefreshRates(void) + { +//--- refresh rates + if(!m_symbol.RefreshRates()) + { + Print("RefreshRates error"); + return(false); + } +//--- protection against the return value of "zero" + if(m_symbol.Ask()==0 || m_symbol.Bid()==0) + return(false); +//--- + return(true); + } +//+------------------------------------------------------------------+ +//| Check the correctness of the order volume | +//+------------------------------------------------------------------+ +bool CheckVolumeValue(double volume,string &error_description) + { +//--- minimal allowed volume for trade operations + double min_volume=m_symbol.LotsMin(); + if(volumemax_volume) + { + error_description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume); + return(false); + } +//--- get minimal step of volume changing + double volume_step=m_symbol.LotsStep(); + int ratio=(int)MathRound(volume/volume_step); + if(MathAbs(ratio*volume_step-volume)>0.0000001) + { + error_description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f", + volume_step,ratio*volume_step); + return(false); + } + error_description="Correct volume value"; + return(true); + } +//+------------------------------------------------------------------+ +//| Checks if the specified filling mode is allowed | +//+------------------------------------------------------------------+ +bool IsFillingTypeAllowed(int fill_type) + { +//--- Obtain the value of the property that describes allowed filling modes + int filling=m_symbol.TradeFillFlags(); +//--- Return true, if mode fill_type is allowed + return((filling & fill_type)==fill_type); + } +//+------------------------------------------------------------------+ +//| Get value of buffers for the iMA | +//+------------------------------------------------------------------+ +double iMAGet(int handle_iMA,const int index) + { + double MA[1]; +//--- reset error code + ResetLastError(); +//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index + if(CopyBuffer(handle_iMA,0,index,1,MA)<0) + { + //--- if the copying fails, tell the error code + PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError()); + //--- quit with zero result - it means that the indicator is considered as not calculated + return(0.0); + } + return(MA[0]); + } +//+------------------------------------------------------------------+ +//| Get value of buffers for the iEnvelopes | +//| the buffer numbers are the following: | +//| 0 - UPPER_LINE, 1 - LOWER_LINE | +//+------------------------------------------------------------------+ +double iEnvelopesGet(int handle_iEnvelopes,const int buffer,const int index) + { + double Envelopes[1]; +//ArraySetAsSeries(Bands,true); +//--- reset error code + ResetLastError(); +//--- fill a part of the iEnvelopesBuffer array with values from the indicator buffer that has 0 index + if(CopyBuffer(handle_iEnvelopes,buffer,index,1,Envelopes)<0) + { + //--- if the copying fails, tell the error code + PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError()); + //--- quit with zero result - it means that the indicator is considered as not calculated + return(0.0); + } + return(Envelopes[0]); + } +//+------------------------------------------------------------------+ diff --git a/mql5_experts_mt5/Channels/expert.png b/mql5_experts_mt5/Channels/expert.png new file mode 100644 index 0000000..9a2e616 Binary files /dev/null and b/mql5_experts_mt5/Channels/expert.png differ diff --git a/mql5_experts_mt5/Channels/indicator.png b/mql5_experts_mt5/Channels/indicator.png new file mode 100644 index 0000000..7a885d8 Binary files /dev/null and b/mql5_experts_mt5/Channels/indicator.png differ diff --git a/mql5_experts_mt5/Channels/logo-2.png b/mql5_experts_mt5/Channels/logo-2.png new file mode 100644 index 0000000..28ea55c Binary files /dev/null and b/mql5_experts_mt5/Channels/logo-2.png differ diff --git a/mql5_experts_mt5/ChartBrowser/4CA7CFA0-1F0C.jpg b/mql5_experts_mt5/ChartBrowser/4CA7CFA0-1F0C.jpg new file mode 100644 index 0000000..0a542d8 Binary files /dev/null and b/mql5_experts_mt5/ChartBrowser/4CA7CFA0-1F0C.jpg differ diff --git a/mql5_experts_mt5/ChartBrowser/ChartBrowser.gif b/mql5_experts_mt5/ChartBrowser/ChartBrowser.gif new file mode 100644 index 0000000..c3cc6de Binary files /dev/null and b/mql5_experts_mt5/ChartBrowser/ChartBrowser.gif differ diff --git a/mql5_experts_mt5/ChartBrowser/README.md b/mql5_experts_mt5/ChartBrowser/README.md new file mode 100644 index 0000000..a0c7e1f --- /dev/null +++ b/mql5_experts_mt5/ChartBrowser/README.md @@ -0,0 +1,26 @@ +# ChartBrowser + +## Description +This folder contains a professional trading expert advisor (EA) for MetaTrader 5. + +Below are example screenshots of the strategy in action. +*Feel free to explore, test, and improve!* + +*You can add a detailed description of the strategy, parameters, and usage here.* + +--- + +If you find this project useful, please consider giving it a star, sharing it, or even sending a small donation to support further development. Thank you! + +![Screenshot](4CA7CFA0-1F0C.jpg) +![Screenshot](ChartBrowser.gif) +![Screenshot](script.png) + +## Files +- `chartbrowser.bundle.mq5` + +## How to use +1. Copy the `.mq5` file to your MetaTrader 5 `Experts` folder. +2. Compile in MetaEditor. +3. Attach the expert to a chart. +4. Configure parameters as needed. diff --git a/mql5_experts_mt5/ChartBrowser/chartbrowser.bundle.mq5 b/mql5_experts_mt5/ChartBrowser/chartbrowser.bundle.mq5 new file mode 100644 index 0000000..39cc86a --- /dev/null +++ b/mql5_experts_mt5/ChartBrowser/chartbrowser.bundle.mq5 @@ -0,0 +1,25172 @@ +// THIS FILE IS GENERATED BY MQL5 PACKER UTILITY +// TO PASS THE CODEBASE VALIDATION PROCESS +// WHICH DOES NOT SUPPORT MORE THAN 32 SOURCE FILES IN ONE PROGRAM + +// TO GET ACTUAL SOURCE CODES PLEASE EXTRACT THEM +// FROM THE ATTACHED ARCHIVE ChartBrowser.mq5.zip + +//+------------------------------------------------------------------+ +//| ChartBrowser.mq5 | +//| Copyright (c) 2021, Marketeer | +//| https://www.mql5.com/en/users/marketeer | +//| https://www.mql5.com/en/code/33770/ | +//| | +//| https://www.mql5.com/en/articles/7734/ | +//| https://www.mql5.com/en/articles/7739/ | +//| https://www.mql5.com/ru/articles/7795/ | +//+------------------------------------------------------------------+ +#property copyright "Copyright (c) 2021, Marketeer" +#property link "https://www.mql5.com/en/users/marketeer" +#property version "1.0" +#property description "Lists all open charts, indicators, experts, and scripts in sorted order.\n" +#property description "Can be used for fast switching." + +const string DIALOG_TITLE = "ChartBrowser"; + +//#include "ChartBrowser.mqh" +//+------------------------------------------------------------------+ +//| ChartBrowser.mqh | +//| Copyright (c) 2021, Marketeer | +//| https://www.mql5.com/en/users/marketeer | +//| https://www.mql5.com/en/code/33770/ | +//| | +//| https://www.mql5.com/en/articles/7734/ | +//| https://www.mql5.com/en/articles/7739/ | +//| https://www.mql5.com/ru/articles/7795/ | +//+------------------------------------------------------------------+ + +//#include +//+------------------------------------------------------------------+ +//| Dialog.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include "WndContainer.mqh" +//+------------------------------------------------------------------+ +//| WndContainer.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include "Wnd.mqh" +//+------------------------------------------------------------------+ +//| Wnd.mqh | +//| Copyright 2009-2018, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include +//+------------------------------------------------------------------+ +//| Rect.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Structure CPoint | +//| Usage: point of chart in Cartesian coordinates | +//+------------------------------------------------------------------+ +struct CPoint + { + int x; // horizontal coordinate + int y; // vertical coordinate + }; +//+------------------------------------------------------------------+ +//| Structure CSize | +//| Usage: size of area of chart in Cartesian coordinates | +//+------------------------------------------------------------------+ +struct CSize + { + int cx; // horizontal size + int cy; // vertical size + }; +//+------------------------------------------------------------------+ +//| Structure CRect | +//| Usage: area of chart in Cartesian coordinates | +//+------------------------------------------------------------------+ +struct CRect + { + int left; // left coordinate + int top; // top coordinate + int right; // right coordinate + int bottom; // bottom coordinate + + //--- methods + CPoint LeftTop(void) const; + void LeftTop(const int x,const int y); + void LeftTop(const CPoint& point); + CPoint RightBottom(void) const; + void RightBottom(const int x,const int y); + void RightBottom(const CPoint& point); + CPoint CenterPoint(void) const; + int Width(void) const { return(right-left); } + void Width(const int w) { right=left+w; } + int Height(void) const { return(bottom-top); } + void Height(const int h) { bottom=top+h; } + CSize Size(void) const; + void Size(const int cx,const int cy); + void Size(const CSize& size); + void SetBound(const int l,const int t,const int r,const int b); + void SetBound(const CRect& rect); + void SetBound(const CPoint& point,const CSize& size); + void SetBound(const CPoint& left_top,const CPoint& right_bottom); + void Move(const int x,const int y); + void Move(const CPoint& point); + void Shift(const int dx,const int dy); + void Shift(const CPoint& point); + void Shift(const CSize& size); + bool Contains(const int x,const int y) const; + bool Contains(const CPoint& point) const; + void Normalize(void); + }; +//+------------------------------------------------------------------+ +//| Get parameters of area | +//+------------------------------------------------------------------+ +CPoint CRect::LeftTop(void) const + { + CPoint point; +//--- action + point.x=left; + point.y=top; +//--- result + return(point); + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::LeftTop(const int x,const int y) + { + left=x; + top =y; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::LeftTop(const CPoint& point) + { + left=point.x; + top =point.y; + } +//+------------------------------------------------------------------+ +//| Get parameters of area | +//+------------------------------------------------------------------+ +CPoint CRect::RightBottom(void) const + { + CPoint point; +//--- action + point.x=right; + point.y=bottom; +//--- result + return(point); + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::RightBottom(const int x,const int y) + { + right =x; + bottom=y; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::RightBottom(const CPoint& point) + { + right =point.x; + bottom=point.y; + } +//+------------------------------------------------------------------+ +//| Get parameters of area | +//+------------------------------------------------------------------+ +CPoint CRect::CenterPoint(void) const + { + CPoint point; +//--- action + point.x=left+Width()/2; + point.y=top+Height()/2; +//--- result + return(point); + } +//+------------------------------------------------------------------+ +//| Get parameters of area | +//+------------------------------------------------------------------+ +CSize CRect::Size(void) const + { + CSize size; +//--- action + size.cx=right-left; + size.cy=bottom-top; +//--- result + return(size); + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::Size(const int cx,const int cy) + { + right =left+cx; + bottom=top+cy; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::Size(const CSize& size) + { + right =left+size.cx; + bottom=top+size.cy; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::SetBound(const int l,const int t,const int r,const int b) + { + left =l; + top =t; + right =r; + bottom=b; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::SetBound(const CRect& rect) + { + left =rect.left; + top =rect.top; + right =rect.right; + bottom=rect.bottom; + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::SetBound(const CPoint& point,const CSize& size) + { + LeftTop(point); + Size(size); + } +//+------------------------------------------------------------------+ +//| Set parameters of area | +//+------------------------------------------------------------------+ +void CRect::SetBound(const CPoint& left_top,const CPoint& right_bottom) + { + LeftTop(left_top); + RightBottom(right_bottom); + } +//+------------------------------------------------------------------+ +//| Absolute movement of area | +//+------------------------------------------------------------------+ +void CRect::Move(const int x,const int y) + { + right +=x-left; + bottom+=y-top; + left =x; + top =y; + } +//+------------------------------------------------------------------+ +//| Absolute movement of area | +//+------------------------------------------------------------------+ +void CRect::Move(const CPoint& point) + { + right +=point.x-left; + bottom+=point.y-top; + left =point.x; + top =point.y; + } +//+------------------------------------------------------------------+ +//| Relative movement of area | +//+------------------------------------------------------------------+ +void CRect::Shift(const int dx,const int dy) + { + left +=dx; + top +=dy; + right +=dx; + bottom+=dy; + } +//+------------------------------------------------------------------+ +//| Relative movement of area | +//+------------------------------------------------------------------+ +void CRect::Shift(const CPoint& point) + { + left +=point.x; + top +=point.y; + right +=point.x; + bottom+=point.y; + } +//+------------------------------------------------------------------+ +//| Relative movement of area | +//+------------------------------------------------------------------+ +void CRect::Shift(const CSize& size) + { + left +=size.cx; + top +=size.cy; + right +=size.cx; + bottom+=size.cy; + } +//+------------------------------------------------------------------+ +//| Check if a point is within the area | +//+------------------------------------------------------------------+ +bool CRect::Contains(const int x,const int y) const + { +//--- check and return the result + return(x>=left && x<=right && y>=top && y<=bottom); + } +//+------------------------------------------------------------------+ +//| Check if a point is within the area | +//+------------------------------------------------------------------+ +bool CRect::Contains(const CPoint& point) const + { +//--- check and return the result + return(point.x>=left && point.x<=right && point.y>=top && point.y<=bottom); + } +//+------------------------------------------------------------------+ +//| Standardizes the height and width | +//+------------------------------------------------------------------+ +void CRect::Normalize(void) + { + if(left>right) + { + int tmp1=left; + left=right; + right=tmp1; + } + if(top>bottom) + { + int tmp2=top; + top=bottom; + bottom=tmp2; + } + } +//+------------------------------------------------------------------+ +//#include "Defines.mqh" +//+------------------------------------------------------------------+ +//| Defines.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Enumerations | +//+------------------------------------------------------------------+ +//--- properties flags +enum ENUM_WND_PROP_FLAGS + { + WND_PROP_FLAG_CAN_DBL_CLICK = 1, // can be double clicked by mouse + WND_PROP_FLAG_CAN_DRAG = 2, // can be dragged by mouse + WND_PROP_FLAG_CLICKS_BY_PRESS= 4, // generates the "click" event series on pressing left mouse button + WND_PROP_FLAG_CAN_LOCK = 8, // control with fixed state (usually it is a button) + WND_PROP_FLAG_READ_ONLY =16 // read only (usually it is a edit) + }; +//--- state flags +enum ENUM_WND_STATE_FLAGS + { + WND_STATE_FLAG_ENABLE = 1, // "object is enabled" flag + WND_STATE_FLAG_VISIBLE = 2, // "object is visible" flag + WND_STATE_FLAG_ACTIVE = 4, // "object is active" flag + }; +//--- mouse flags +enum ENUM_MOUSE_FLAGS + { + MOUSE_INVALID_FLAGS =-1, // no buttons state + MOUSE_EMPTY = 0, // buttons are not pressed + MOUSE_LEFT = 1, // left button pressed + MOUSE_RIGHT = 2 // right button pressed + }; +//--- alignment flags +enum ENUM_WND_ALIGN_FLAGS + { + WND_ALIGN_NONE = 0, // no alignment + WND_ALIGN_LEFT = 1, // align by left border + WND_ALIGN_TOP = 2, // align by top border + WND_ALIGN_RIGHT = 4, // align by right border + WND_ALIGN_BOTTOM = 8, // align by bottom border + WND_ALIGN_WIDTH = WND_ALIGN_LEFT|WND_ALIGN_RIGHT, // justify + WND_ALIGN_HEIGHT = WND_ALIGN_TOP|WND_ALIGN_BOTTOM, // align by top and bottom border + WND_ALIGN_CLIENT = WND_ALIGN_WIDTH|WND_ALIGN_HEIGHT // align by all sides + }; +//+------------------------------------------------------------------+ +//| Drawing styles and colors | +//+------------------------------------------------------------------+ +//--- common +#define CONTROLS_FONT_NAME "Trebuchet MS" +#define CONTROLS_FONT_SIZE (10) +//--- Text +#define CONTROLS_COLOR_TEXT C'0x3B,0x29,0x28' +#define CONTROLS_COLOR_TEXT_SEL White +#define CONTROLS_COLOR_BG White +#define CONTROLS_COLOR_BG_SEL C'0x33,0x99,0xFF' +//--- Button +#define CONTROLS_BUTTON_COLOR C'0x3B,0x29,0x28' +#define CONTROLS_BUTTON_COLOR_BG C'0xDD,0xE2,0xEB' +#define CONTROLS_BUTTON_COLOR_BORDER C'0xB2,0xC3,0xCF' +//--- Label +#define CONTROLS_LABEL_COLOR C'0x3B,0x29,0x28' +//--- Edit +#define CONTROLS_EDIT_COLOR C'0x3B,0x29,0x28' +#define CONTROLS_EDIT_COLOR_BG White +#define CONTROLS_EDIT_COLOR_BORDER C'0xB2,0xC3,0xCF' +//--- Scrolls +#define CONTROLS_SCROLL_COLOR_BG C'0xEC,0xEC,0xEC' +#define CONTROLS_SCROLL_COLOR_BORDER C'0xD3,0xD3,0xD3' +//--- Client +#define CONTROLS_CLIENT_COLOR_BG C'0xDE,0xDE,0xDE' +#define CONTROLS_CLIENT_COLOR_BORDER C'0x2C,0x2C,0x2C' +//--- ListView +#define CONTROLS_LISTITEM_COLOR_TEXT C'0x3B,0x29,0x28' +#define CONTROLS_LISTITEM_COLOR_TEXT_SEL White +#define CONTROLS_LISTITEM_COLOR_BG White +#define CONTROLS_LISTITEM_COLOR_BG_SEL C'0x33,0x99,0xFF' +#define CONTROLS_LIST_COLOR_BG White +#define CONTROLS_LIST_COLOR_BORDER C'0xB2,0xC3,0xCF' +//--- CheckGroup +#define CONTROLS_CHECKGROUP_COLOR_BG C'0xF7,0xF7,0xF7' +#define CONTROLS_CHECKGROUP_COLOR_BORDER C'0xB2,0xC3,0xCF' +//--- RadioGroup +#define CONTROLS_RADIOGROUP_COLOR_BG C'0xF7,0xF7,0xF7' +#define CONTROLS_RADIOGROUP_COLOR_BORDER C'0xB2,0xC3,0xCF' +//--- Dialog +#define CONTROLS_DIALOG_COLOR_BORDER_LIGHT White +#define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0xB6,0xB6,0xB6' +#define CONTROLS_DIALOG_COLOR_BG C'0xF0,0xF0,0xF0' +#define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x28,0x29,0x3B' +#define CONTROLS_DIALOG_COLOR_CLIENT_BG C'0xF7,0xF7,0xF7' +#define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0xC8,0xC8,0xC8' +//+------------------------------------------------------------------+ +//| Constants for the controls | +//+------------------------------------------------------------------+ +//--- common +#define CONTROLS_INVALID_ID (-1) // invalid ID +#define CONTROLS_INVALID_INDEX (-1) // invalid index of array +#define CONTROLS_SELF_MESSAGE (-1) // message to oneself +#define CONTROLS_MAXIMUM_ID (10000) // maximum number of IDs in application +#define CONTROLS_BORDER_WIDTH (1) // border width +#define CONTROLS_SUBWINDOW_GAP (3) // gap between sub-windows along the Y axis +#define CONTROLS_DRAG_SPACING (50) // sensitivity threshold for dragging +#define CONTROLS_DBL_CLICK_TIME (100) // double click interval +//--- BmpButton +#define CONTROLS_BUTTON_SIZE (16) // default size of button (16 x 16) +//--- Scrolls +#define CONTROLS_SCROLL_SIZE (18) // default lateral size of scrollbar +#define CONTROLS_SCROLL_THUMB_SIZE (22) // default length of scroll box +//--- RadioButton +#define CONTROLS_RADIO_BUTTON_X_OFF (3) // X offset of radio button (for RadioButton) +#define CONTROLS_RADIO_BUTTON_Y_OFF (3) // Y offset of radio button (for RadioButton) +#define CONTROLS_RADIO_LABEL_X_OFF (20) // X offset of label (for RadioButton) +#define CONTROLS_RADIO_LABEL_Y_OFF (0) // Y offset of label (for RadioButton) +//--- CheckBox +#define CONTROLS_CHECK_BUTTON_X_OFF (3) // X offset of check button (for CheckBox) +#define CONTROLS_CHECK_BUTTON_Y_OFF (3) // Y offset of check button (for CheckBox) +#define CONTROLS_CHECK_LABEL_X_OFF (20) // X offset of label (for CheckBox) +#define CONTROLS_CHECK_LABEL_Y_OFF (0) // Y offset of label (for CheckBox) +//--- Spin +#define CONTROLS_SPIN_BUTTON_X_OFF (2) // X offset of button from right (for SpinEdit) +#define CONTROLS_SPIN_MIN_HEIGHT (18) // minimal height (for SpinEdit) +#define CONTROLS_SPIN_BUTTON_SIZE (8) // default size of button (16 x 8) (for SpinEdit) +//--- Combo +#define CONTROLS_COMBO_BUTTON_X_OFF (2) // X offset of button from right (for ComboBox) +#define CONTROLS_COMBO_MIN_HEIGHT (18) // minimal height (for ComboBox) +#define CONTROLS_COMBO_ITEM_HEIGHT (18) // height of combo box item (for ComboBox) +#define CONTROLS_COMBO_ITEMS_VIEW (8) // number of items in combo box (for ComboBox) +//--- ListView +#define CONTROLS_LIST_ITEM_HEIGHT (18) // height of list item (for ListView) +//--- Dialog +#define CONTROLS_DIALOG_CAPTION_HEIGHT (22) // height of dialog header +#define CONTROLS_DIALOG_BUTTON_OFF (3) // offset of dialog buttons +#define CONTROLS_DIALOG_CLIENT_OFF (2) // offset of dialog client area +#define CONTROLS_DIALOG_MINIMIZE_LEFT (10) // left coordinate of dialog in minimized state +#define CONTROLS_DIALOG_MINIMIZE_TOP (10) // top coordinate of dialog in minimized state +#define CONTROLS_DIALOG_MINIMIZE_WIDTH (100) // width of dialog in minimized state +#define CONTROLS_DIALOG_MINIMIZE_HEIGHT (4*CONTROLS_BORDER_WIDTH+CONTROLS_DIALOG_CAPTION_HEIGHT) // height of dialog in minimized state +//+------------------------------------------------------------------+ +//| Macro | +//+------------------------------------------------------------------+ +//--- check properties +#define IS_CAN_DBL_CLICK ((m_prop_flags&WND_PROP_FLAG_CAN_DBL_CLICK)!=0) +#define IS_CAN_DRAG ((m_prop_flags&WND_PROP_FLAG_CAN_DRAG)!=0) +#define IS_CLICKS_BY_PRESS ((m_prop_flags&WND_PROP_FLAG_CLICKS_BY_PRESS)!=0) +#define IS_CAN_LOCK ((m_prop_flags&WND_PROP_FLAG_CAN_LOCK)!=0) +#define IS_READ_ONLY ((m_prop_flags&WND_PROP_FLAG_READ_ONLY)!=0) +//--- check state +#define IS_ENABLED ((m_state_flags&WND_STATE_FLAG_ENABLE)!=0) +#define IS_VISIBLE ((m_state_flags&WND_STATE_FLAG_VISIBLE)!=0) +#define IS_ACTIVE ((m_state_flags&WND_STATE_FLAG_ACTIVE)!=0) +//+------------------------------------------------------------------+ +//| Macro of event handling map | +//+------------------------------------------------------------------+ +#define INTERNAL_EVENT (-1) +//--- beginning of map +#define EVENT_MAP_BEGIN(class_name) bool class_name::OnEvent(const int id,const long& lparam,const double& dparam,const string& sparam) { +//--- end of map +#define EVENT_MAP_END(parent_class_name) return(parent_class_name::OnEvent(id,lparam,dparam,sparam)); } +//--- event handling by numeric ID +#define ON_EVENT(event,control,handler) if(id==(event+CHARTEVENT_CUSTOM) && lparam==control.Id()) { handler(); return(true); } +//--- event handling by numeric ID by pointer of control +#define ON_EVENT_PTR(event,control,handler) if(control!=NULL && id==(event+CHARTEVENT_CUSTOM) && lparam==control.Id()) { handler(); return(true); } +//--- event handling without ID analysis +#define ON_NO_ID_EVENT(event,handler) if(id==(event+CHARTEVENT_CUSTOM)) { return(handler()); } +//--- event handling by row ID +#define ON_NAMED_EVENT(event,control,handler) if(id==(event+CHARTEVENT_CUSTOM) && sparam==control.Name()) { handler(); return(true); } +//--- handling of indexed event +#define ON_INDEXED_EVENT(event,controls,handler) { int total=ArraySize(controls); for(int i=0;i +//+------------------------------------------------------------------+ +//| Object.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include "StdLibErr.mqh" +//+------------------------------------------------------------------+ +//| StdLibErr.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +#define ERR_USER_INVALID_HANDLE 1 +#define ERR_USER_INVALID_BUFF_NUM 2 +#define ERR_USER_ITEM_NOT_FOUND 3 +#define ERR_USER_ARRAY_IS_EMPTY 1000 +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Class CObject. | +//| Purpose: Base class for storing elements. | +//+------------------------------------------------------------------+ +class CObject + { +private: + CObject *m_prev; // previous item of list + CObject *m_next; // next item of list + +public: + CObject(void): m_prev(NULL),m_next(NULL) { } + ~CObject(void) { } + //--- methods to access protected data + CObject *Prev(void) const { return(m_prev); } + void Prev(CObject *node) { m_prev=node; } + CObject *Next(void) const { return(m_next); } + void Next(CObject *node) { m_next=node; } + //--- methods for working with files + virtual bool Save(const int file_handle) { return(true); } + virtual bool Load(const int file_handle) { return(true); } + //--- method of identifying the object + virtual int Type(void) const { return(0); } + //--- method of comparing the objects + virtual int Compare(const CObject *node,const int mode=0) const { return(0); } + }; +//+------------------------------------------------------------------+ +class CDragWnd; + +#define RTTI _rtti = StringFormat("%s %d", typename(this), &this); + +struct CRectCreator: public CRect +{ + CRectCreator(const int x1, const int y1, const int x2, const int y2) + { + left = x1; + top = y1; + right = x2; + bottom = y2; + } +}; + +//+------------------------------------------------------------------+ +//| Class CWnd | +//| Usage: base class of the control object that creates | +//| control panels and indicator panels | +//+------------------------------------------------------------------+ +class CWnd : public CObject + { + public: + string _rtti; +protected: + //--- parameters of creation + long m_chart_id; // chart ID + int m_subwin; // chart subwindow + string m_name; // object name + //--- geometry + CRect m_rect; // chart area + //--- ID + long m_id; // object ID + //--- state flags + int m_state_flags; + //--- properties flags + int m_prop_flags; + //--- alignment + int m_align_flags; // alignment flags + int m_align_left; // fixed offset from left border + int m_align_top; // fixed offset from top border + int m_align_right; // fixed offset from right border + int m_align_bottom; // fixed offset from bottom border + //--- the last saved state of mouse + int m_mouse_x; // X coordinate + int m_mouse_y; // Y coordinate + int m_mouse_flags; // state of buttons + uint m_last_click; // last click time + //--- drag object + CDragWnd *m_drag_object; // pointer to the dragged object + +public: + CWnd(void); + ~CWnd(void); + //--- create + virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2); + //--- release memory + virtual void Destroy(const int reason=0); + //--- chart event handler + virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam); + virtual bool OnMouseEvent(const int x,const int y,const int flags); + //--- naming (read only) + string Name(void) const { return(m_name); } + //--- access the contents of container + int ControlsTotal(void) const { return(0); } + CWnd* Control(const int ind) const { return(NULL); } + virtual CWnd* ControlFind(const long id); + //--- geometry + const CRect Rect(void) const { return(m_rect); } + int Left(void) const { return(m_rect.left); } + virtual void Left(const int x) { m_rect.left=x; } + int Top(void) const { return(m_rect.top); } + virtual void Top(const int y) { m_rect.top=y; } + int Right(void) const { return(m_rect.right); } + virtual void Right(const int x) { m_rect.right=x; } + int Bottom(void) const { return(m_rect.bottom); } + virtual void Bottom(const int y) { m_rect.bottom=y; } + int Width(void) const { return(m_rect.Width()); } + virtual bool Width(const int w); + int Height(void) const { return(m_rect.Height()); } + virtual bool Height(const int h); + CSize Size(void) const { return(m_rect.Size()); } + virtual bool Size(const int w,const int h); + virtual bool Size(const CSize &size); + virtual bool Move(const int x,const int y); + virtual bool Move(const CPoint &point); + virtual bool Shift(const int dx,const int dy); + bool Contains(const int x,const int y) const { return(m_rect.Contains(x,y)); } + bool Contains(CWnd *control) const; + //--- alignment + void Alignment(const int flags,const int left,const int top,const int right,const int bottom); + virtual bool Align(const CRect &rect); + + ENUM_WND_ALIGN_FLAGS Alignment(void) const + { + return (ENUM_WND_ALIGN_FLAGS)m_align_flags; + } + CRect Margins(void) const + { + CRectCreator rect(m_align_left, m_align_top, m_align_right, m_align_bottom); + return rect; + } + void Alignment(const int flags) + { + m_align_flags = flags; + } + void Margins(const int left, const int top, const int right, const int bottom) + { + m_align_left = left; + m_align_top = top; + m_align_right = right; + m_align_bottom = bottom; + } + void Margins(const int all) + { + m_align_left = all; + m_align_top = all; + m_align_right = all; + m_align_bottom = all; + } + + //--- ID + virtual long Id(const long id); + long Id(void) const { return(m_id); } + //--- state + bool IsEnabled(void) const { return(IS_ENABLED); } + virtual bool Enable(void); + virtual bool Disable(void); + bool IsVisible(void) const { return(IS_VISIBLE); } + virtual bool Visible(const bool flag); + virtual bool Show(void); + virtual bool Hide(void); + bool IsActive(void) const { return(IS_ACTIVE); } + virtual bool Activate(void); + virtual bool Deactivate(void); + //--- state flags + int StateFlags(void) const { return(m_state_flags); } + void StateFlags(const int flags) { m_state_flags=flags; } + void StateFlagsSet(const int flags) { m_state_flags|=flags; } + void StateFlagsReset(const int flags) { m_state_flags&=~flags; } + //--- properties flags + int PropFlags(void) const { return(m_prop_flags); } + void PropFlags(const int flags) { m_prop_flags=flags; } + void PropFlagsSet(const int flags) { m_prop_flags|=flags; } + void PropFlagsReset(const int flags) { m_prop_flags&=~flags; } + //--- for mouse operations + int MouseX(void) const { return(m_mouse_x); } + void MouseX(const int value) { m_mouse_x=value; } + int MouseY(void) const { return(m_mouse_y); } + void MouseY(const int value) { m_mouse_y=value; } + int MouseFlags(void) const { return(m_mouse_flags); } + virtual void MouseFlags(const int value) { m_mouse_flags=value; } + bool MouseFocusKill(const long id=CONTROLS_INVALID_ID); + bool BringToTop(void); + +protected: + //--- internal event handlers + virtual bool OnCreate(void) { return(true); } + virtual bool OnDestroy(void) { return(true); } + virtual bool OnMove(void) { return(true); } + virtual bool OnResize(void) { return(true); } + virtual bool OnEnable(void) { return(true); } + virtual bool OnDisable(void) { return(true); } + virtual bool OnShow(void) { return(true); } + virtual bool OnHide(void) { return(true); } + virtual bool OnActivate(void) { return(true); } + virtual bool OnDeactivate(void) { return(true); } + virtual bool OnClick(void); + virtual bool OnDblClick(void); + virtual bool OnChange(void) { return(true); } + //--- mouse event handlers + virtual bool OnMouseDown(void); + virtual bool OnMouseUp(void); + //--- handlers of dragging + virtual bool OnDragStart(void); + virtual bool OnDragProcess(const int x,const int y); + virtual bool OnDragEnd(void); + //--- methods for drag-object + virtual bool DragObjectCreate(void) { return(false); } + virtual bool DragObjectDestroy(void); + }; +//+------------------------------------------------------------------+ +//| Common handler of chart events | +//+------------------------------------------------------------------+ +bool CWnd::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) + { + if((id!=CHARTEVENT_MOUSE_MOVE)) + return(false); + if(!IS_VISIBLE) + return(false); + int x=(int)lparam; + int y=(int)dparam; + int flags=(int)StringToInteger(sparam); +//--- + if(m_drag_object!=NULL) + return(m_drag_object.OnMouseEvent(x,y,flags)); +//--- + return(OnMouseEvent(x,y,flags)); + } +//+------------------------------------------------------------------+ +//| Common handler of mouse events | +//+------------------------------------------------------------------+ +bool CWnd::OnMouseEvent(const int x,const int y,const int flags) + { + if(!IS_ENABLED || !IS_VISIBLE) return false; + if(!Contains(x,y)) + { + //--- if cursor is not inside the element and this element is active - deactivate + if(IS_ACTIVE) + { + //--- reset state and coordinates + m_mouse_x =0; + m_mouse_y =0; + m_mouse_flags=MOUSE_INVALID_FLAGS; + //--- deactivate + Deactivate(); + } + return(false); + } +//--- check the state of the left mouse button + if((flags&MOUSE_LEFT)!=0) + { + //--- left mouse button is pressed + if(m_mouse_flags==MOUSE_INVALID_FLAGS) + { + //--- but not in this control (i.e., cursor entered the element with mouse button pressed) + //--- activate the control, but there will be no click + if(!IS_ACTIVE) + { + //--- generate event + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_MOUSE_FOCUS_SET,m_id,0.0,m_name); + //--- activate + return(Activate()); + } + return(true); + } + if((m_mouse_flags&MOUSE_LEFT)!=0) + { + //--- mouse button has already been pressed + if(IS_CAN_DRAG) + return(OnDragProcess(x,y)); + if(IS_CLICKS_BY_PRESS) + { + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_CLICK,m_id,0.0,m_name); + //--- handled + return(true); + } + } + else + { + //--- mouse button has been released (pressing) + //--- save the state and coordinates + m_mouse_flags=flags; + m_mouse_x =x; + m_mouse_y =y; + //--- call the handler + return(OnMouseDown()); + } + } + else + { + //--- left mouse button is released + if(m_mouse_flags==MOUSE_INVALID_FLAGS) + { + //--- cursor entered the control with mouse button released + //--- activate control and save state to the member + m_mouse_flags=flags; + //--- generate event + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_MOUSE_FOCUS_SET,m_id,0.0,m_name); + //--- activate + return(Activate()); + } + if((m_mouse_flags&MOUSE_LEFT)!=0) + { + //--- mouse button has been pressed (clicking) + //--- save the state and coordinates + m_mouse_flags=flags; + m_mouse_x =x; + m_mouse_y =y; + //--- call the handler + return(OnMouseUp()); + } + } +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Constructor | +//+------------------------------------------------------------------+ +CWnd::CWnd(void) : m_chart_id(CONTROLS_INVALID_ID), + m_subwin(CONTROLS_INVALID_ID), + m_name(NULL), + m_id(CONTROLS_INVALID_ID), + m_state_flags(WND_STATE_FLAG_ENABLE+WND_STATE_FLAG_VISIBLE), + m_prop_flags(0), + m_align_flags(WND_ALIGN_NONE), + m_align_left(0), + m_align_top(0), + m_align_right(0), + m_align_bottom(0), + m_mouse_x(0), + m_mouse_y(0), + m_mouse_flags(MOUSE_INVALID_FLAGS), + m_last_click(0), + m_drag_object(NULL), + _rtti(typename(this)) + { + } +//+------------------------------------------------------------------+ +//| Destructor | +//+------------------------------------------------------------------+ +CWnd::~CWnd(void) + { + } +//+------------------------------------------------------------------+ +//| Create a control | +//+------------------------------------------------------------------+ +bool CWnd::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2) + { +//--- attach to chart + m_chart_id=chart; + m_name =name; + m_subwin =subwin; +//--- set coordinates of area + Left(x1); + Top(y1); + Right(x2); + Bottom(y2); +//--- always successful + return(true); + } +//+------------------------------------------------------------------+ +//| Destruction of the control | +//+------------------------------------------------------------------+ +void CWnd::Destroy(const int reason) + { +//--- call virtual event handler + if(OnDestroy()) + m_name=""; + } +//+------------------------------------------------------------------+ +//| Find control by specified ID | +//+------------------------------------------------------------------+ +CWnd* CWnd::ControlFind(const long id) + { + CWnd *result=NULL; +//--- check + if(id==m_id) + result=GetPointer(this); +//--- return the result + return(result); + } +//+------------------------------------------------------------------+ +//| Change width of control | +//+------------------------------------------------------------------+ +bool CWnd::Width(const int w) + { +//--- change width + m_rect.Width(w); +//--- call virtual event handler + return(OnResize()); + } +//+------------------------------------------------------------------+ +//| Change height of control | +//+------------------------------------------------------------------+ +bool CWnd::Height(const int h) + { +//--- change height + m_rect.Height(h); +//--- call virtual event handler + return(OnResize()); + } +//+------------------------------------------------------------------+ +//| Resize control | +//+------------------------------------------------------------------+ +bool CWnd::Size(const int w,const int h) + { +//--- change size + m_rect.Size(w,h); +//--- call virtual event handler + return(OnResize()); + } +//+------------------------------------------------------------------+ +//| Resize control | +//+------------------------------------------------------------------+ +bool CWnd::Size(const CSize &size) + { +//--- change size + m_rect.Size(size); +//--- call virtual event handler + return(OnResize()); + } +//+------------------------------------------------------------------+ +//| Absolute movement of the control | +//+------------------------------------------------------------------+ +bool CWnd::Move(const int x,const int y) + { +//--- moving + m_rect.Move(x,y); +//--- call virtual event handler + return(OnMove()); + } +//+------------------------------------------------------------------+ +//| Absolute movement of the control | +//+------------------------------------------------------------------+ +bool CWnd::Move(const CPoint &point) + { +//--- moving + m_rect.Move(point); +//--- call virtual event handler + return(OnMove()); + } +//+------------------------------------------------------------------+ +//| Relative movement of the control | +//+------------------------------------------------------------------+ +bool CWnd::Shift(const int dx,const int dy) + { +//--- moving + m_rect.Shift(dx,dy); +//--- call virtual event handler + return(OnMove()); + } +//+------------------------------------------------------------------+ +//| Check contains | +//+------------------------------------------------------------------+ +bool CWnd::Contains(CWnd *control) const + { +//--- check + if(control==NULL) + return(false); +//--- result + return(Contains(control.Left(),control.Top()) && Contains(control.Right(),control.Bottom())); + } +//+------------------------------------------------------------------+ +//| Enables event handling by the control | +//+------------------------------------------------------------------+ +bool CWnd::Enable(void) + { +//--- if there are now changes, then succeed + if(IS_ENABLED) + return(true); +//--- change flag + StateFlagsSet(WND_STATE_FLAG_ENABLE); +//--- call virtual event handler + return(OnEnable()); + } +//+------------------------------------------------------------------+ +//| Disables event handling by the control | +//+------------------------------------------------------------------+ +bool CWnd::Disable(void) + { +//--- if there are now changes, then succeed + if(!IS_ENABLED) + return(true); +//--- change flag + StateFlagsReset(WND_STATE_FLAG_ENABLE); +//--- call virtual event handler + return(OnDisable()); + } +//+------------------------------------------------------------------+ +//| Set the "object is visible" flag for the control | +//+------------------------------------------------------------------+ +bool CWnd::Visible(const bool flag) + { +//--- if there are now changes, then succeed + if(IS_VISIBLE==flag) + return(true); +//--- call virtual event handler + return(flag ? Show() : Hide()); + } +//+------------------------------------------------------------------+ +//| Makes the control visible | +//+------------------------------------------------------------------+ +bool CWnd::Show(void) + { +//--- change flag + StateFlagsSet(WND_STATE_FLAG_VISIBLE); +//--- call virtual event handler + return(OnShow()); + } +//+------------------------------------------------------------------+ +//| Makes the control hidden | +//+------------------------------------------------------------------+ +bool CWnd::Hide(void) + { +//--- change flag + StateFlagsReset(WND_STATE_FLAG_VISIBLE); +//--- call virtual event handler + return(OnHide()); + } +//+------------------------------------------------------------------+ +//| Makes the control active | +//+------------------------------------------------------------------+ +bool CWnd::Activate(void) + { +//--- if there are now changes, then succeed + if(IS_ACTIVE) + return(true); +//--- change flag + StateFlagsSet(WND_STATE_FLAG_ACTIVE); +//--- call virtual event handler + return(OnActivate()); + } +//+------------------------------------------------------------------+ +//| Makes the control inactive | +//+------------------------------------------------------------------+ +bool CWnd::Deactivate(void) + { +//--- if there are now changes, then succeed + if(!IS_ACTIVE) + return(true); +//--- change flag + StateFlagsReset(WND_STATE_FLAG_ACTIVE); +//--- call virtual event handler + return(OnDeactivate()); + } +//+------------------------------------------------------------------+ +//| Set ID of control | +//+------------------------------------------------------------------+ +long CWnd::Id(const long id) + { + m_id=id; +//--- always use only one ID + return(1); + } +//+------------------------------------------------------------------+ +//| Set parameters of alignment | +//+------------------------------------------------------------------+ +void CWnd::Alignment(const int flags,const int left,const int top,const int right,const int bottom) + { + m_align_flags =flags; + m_align_left =left; + m_align_top =top; + m_align_right =right; + m_align_bottom=bottom; + } +//+------------------------------------------------------------------+ +//| Align element in specified chart area | +//+------------------------------------------------------------------+ + bool CWnd::Align(const CRect &rect) + { + if(m_align_flags == WND_ALIGN_NONE) return true; + + int new_value = 0; + int new_width = -1; + int new_height = -1; + + if((m_align_flags & WND_ALIGN_RIGHT) != 0) + { + // there is alignment by right border, + if((m_align_flags & WND_ALIGN_LEFT) != 0) + { + // and by left border (change size and move) + new_width = rect.Width() - m_align_left - m_align_right; + Move(rect.left + m_align_left, Top()); + } + else + { + // no alignment by left border (move) + new_value = rect.right - Width() - m_align_right; + Move(new_value, Top()); + } + } + else if((m_align_flags & WND_ALIGN_LEFT) != 0) + { + // alignment by left border only + new_value = rect.left + m_align_left; + Move(new_value, Top()); + } + + if((m_align_flags & WND_ALIGN_BOTTOM) !=0 ) + { + // there is alignment by bottom border, + if((m_align_flags & WND_ALIGN_TOP) != 0) + { + // and by top border (change size and move) + new_height = rect.Height() - m_align_top - m_align_bottom; + Move(Left(), rect.top + m_align_top); + } + else + { + // no alignment by top border (move) + new_value = rect.bottom - Height() - m_align_bottom; + Move(Left(), new_value); + } + } + else + if((m_align_flags & WND_ALIGN_TOP) != 0) + { + // alignment by top border only + new_value = rect.top + m_align_top; + Move(Left(), new_value); + } + + if(new_width != -1 || new_height != -1) + { + Size(new_width != -1 ? new_width : Width(), new_height != -1 ? new_height : Height()); + } + + return true; + } + +//+------------------------------------------------------------------+ +//| Remove the mouse focus from control | +//+------------------------------------------------------------------+ +bool CWnd::MouseFocusKill(const long id) + { +//--- check + if(id==m_id) + return(false); +//--- reset flag + Deactivate(); +//--- clean + m_mouse_x =0; + m_mouse_y =0; + m_mouse_flags=MOUSE_INVALID_FLAGS; +//--- call the handler + return(OnDeactivate()); + } +//+------------------------------------------------------------------+ +//| Increases the priority of an element | +//+------------------------------------------------------------------+ +bool CWnd::BringToTop(void) + { +//--- generate event + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_BRING_TO_TOP,m_id,0.0,m_name); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of the "click" event | +//+------------------------------------------------------------------+ +bool CWnd::OnClick(void) + { +//--- send notification + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_CLICK,m_id,0.0,m_name); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of the "doubl click" event | +//+------------------------------------------------------------------+ +bool CWnd::OnDblClick(void) + { +//--- send notification + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_DBL_CLICK,m_id,0.0,m_name); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of click on the left mouse button | +//+------------------------------------------------------------------+ +bool CWnd::OnMouseDown(void) + { + if(IS_CAN_DRAG) + return(OnDragStart()); + if(IS_CLICKS_BY_PRESS) + return(OnClick()); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of releasing the left mouse button | +//+------------------------------------------------------------------+ +bool CWnd::OnMouseUp(void) + { + if(IS_CAN_DBL_CLICK) + { + uint last_time=GetTickCount(); + if(m_last_click==0 || last_time-m_last_click>CONTROLS_DBL_CLICK_TIME) + { + m_last_click=(last_time==0) ? 1 : last_time; + } + else + { + m_last_click=0; + return(OnDblClick()); + } + } + if(IS_CAN_DRAG) + return(OnDragEnd()); + if(!IS_CLICKS_BY_PRESS) + return(OnClick()); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of the control dragging start | +//+------------------------------------------------------------------+ +bool CWnd::OnDragStart(void) + { + if(!IS_CAN_DRAG) + return(true); +//--- disable scrolling of chart with mouse + ChartSetInteger(m_chart_id,CHART_MOUSE_SCROLL,false); +//--- generate event + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_DRAG_START,m_id,0.0,m_name); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of control dragging process | +//+------------------------------------------------------------------+ +bool CWnd::OnDragProcess(const int x,const int y) + { + Shift(x-m_mouse_x,y-m_mouse_y); +//--- save + m_mouse_x=x; + m_mouse_y=y; +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Handler of the control dragging end | +//+------------------------------------------------------------------+ +bool CWnd::OnDragEnd(void) + { + if(!IS_CAN_DRAG) + return(true); +//--- enable scrolling of chart with mouse + ChartSetInteger(m_chart_id,CHART_MOUSE_SCROLL,true); +//--- generate event + EventChartCustom(CONTROLS_SELF_MESSAGE,ON_DRAG_END,m_id,0.0,m_name); +//--- handled + return(true); + } +//+------------------------------------------------------------------+ +//| Destroy the dragged object | +//+------------------------------------------------------------------+ +bool CWnd::DragObjectDestroy(void) + { + if(m_drag_object!=NULL) + { + delete m_drag_object; + m_drag_object=NULL; + } +//--- succeed + return(true); + } +//+------------------------------------------------------------------+ +//| Class CDragWnd | +//| Usage: base class for drag | +//+------------------------------------------------------------------+ +class CDragWnd : public CWnd + { +protected: + int m_limit_left; // left constraint + int m_limit_top; // top constraint + int m_limit_right; // right constraint + int m_limit_bottom; // bottom constraint + +public: + CDragWnd(void); + ~CDragWnd(void); + //--- constraints + void Limits(const int l,const int t,const int r,const int b); + +protected: + virtual bool OnDragProcess(const int x,const int y); + }; +//+------------------------------------------------------------------+ +//| Constructor | +//+------------------------------------------------------------------+ +CDragWnd::CDragWnd(void) + { + } +//+------------------------------------------------------------------+ +//| Destructor | +//+------------------------------------------------------------------+ +CDragWnd::~CDragWnd(void) + { + } +//+------------------------------------------------------------------+ +//| Constrain the control dragging | +//+------------------------------------------------------------------+ +void CDragWnd::Limits(const int l,const int t,const int r,const int b) + { +//--- save + m_limit_left =l; + m_limit_top =t; + m_limit_right =r; + m_limit_bottom=b; + } +//+------------------------------------------------------------------+ +//| Handler of control dragging process | +//+------------------------------------------------------------------+ +bool CDragWnd::OnDragProcess(const int x,const int y) + { + int dx=x-m_mouse_x; + int dy=y-m_mouse_y; +//--- check shift + if(Right()+dx>m_limit_right) + dx=m_limit_right-Right(); + if(Left()+dxm_limit_bottom) + dy=m_limit_bottom-Bottom(); + if(Top()+dy +//+------------------------------------------------------------------+ +//| ArrayObj.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include "Array.mqh" +//+------------------------------------------------------------------+ +//| Array.mqh | +//| Copyright 2009-2017, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +//#include +//+------------------------------------------------------------------+ +//| Class CArray | +//| Purpose: Base class of dynamic arrays. | +//| Derives from class CObject. | +//+------------------------------------------------------------------+ +class CArray : public CObject + { +protected: + int m_step_resize; // increment size of the array + int m_data_total; // number of elements + int m_data_max; // maximmum size of the array without memory reallocation + int m_sort_mode; // mode of array sorting + +public: + CArray(void); + ~CArray(void); + //--- methods of access to protected data + int Step(void) const { return(m_step_resize); } + bool Step(const int step); + int Total(void) const { return(m_data_total); } + int Available(void) const { return(m_data_max-m_data_total); } + int Max(void) const { return(m_data_max); } + bool IsSorted(const int mode=0) const { return(m_sort_mode==mode); } + int SortMode(void) const { return(m_sort_mode); } + //--- cleaning method + void Clear(void) { m_data_total=0; } + //--- methods for working with files + virtual bool Save(const int file_handle); + virtual bool Load(const int file_handle); + //--- sorting method + void Sort(const int mode=0); + +protected: + virtual void QuickSort(int beg,int end,const int mode=0) { m_sort_mode=-1; } + //--- templates for methods of searching for minimum and maximum + template + int Minimum(const T &data[],const int start,const int count) const; + template + int Maximum(const T &data[],const int start,const int count) const; + }; +//+------------------------------------------------------------------+ +//| Constructor | +//+------------------------------------------------------------------+ +CArray::CArray(void) : m_step_resize(16), + m_data_total(0), + m_data_max(0), + m_sort_mode(-1) + { + } +//+------------------------------------------------------------------+ +//| Destructor | +//+------------------------------------------------------------------+ +CArray::~CArray(void) + { + } +//+------------------------------------------------------------------+ +//| Method Set for variable m_step_resize | +//+------------------------------------------------------------------+ +bool CArray::Step(const int step) + { +//--- check + if(step>0) + { + m_step_resize=step; + return(true); + } +//--- failure + return(false); + } +//+------------------------------------------------------------------+ +//| Sorting an array in ascending order | +//+------------------------------------------------------------------+ +void CArray::Sort(const int mode) + { +//--- check + if(IsSorted(mode)) + return; + m_sort_mode=mode; + if(m_data_total<=1) + return; +//--- sort + QuickSort(0,m_data_total-1,mode); + } +//+------------------------------------------------------------------+ +//| Writing header of array to file | +//+------------------------------------------------------------------+ +bool CArray::Save(const int file_handle) + { +//--- check handle + if(file_handle!=INVALID_HANDLE) + { + //--- write start marker - 0xFFFFFFFFFFFFFFFF + if(FileWriteLong(file_handle,-1)==sizeof(long)) + { + //--- write array type + if(FileWriteInteger(file_handle,Type(),INT_VALUE)==INT_VALUE) + return(true); + } + } +//--- failure + return(false); + } +//+------------------------------------------------------------------+ +//| Reading header of array from file | +//+------------------------------------------------------------------+ +bool CArray::Load(const int file_handle) + { +//--- check handle + if(file_handle!=INVALID_HANDLE) + { + //--- read and check start marker - 0xFFFFFFFFFFFFFFFF + if(FileReadLong(file_handle)==-1) + { + //--- read and check array type + if(FileReadInteger(file_handle,INT_VALUE)==Type()) + return(true); + } + } +//--- failure + return(false); + } +//+------------------------------------------------------------------+ +//| Find minimum of array | +//+------------------------------------------------------------------+ +template +int CArray::Minimum(const T &data[],const int start,const int count) const + { + int real_count; +//--- check for empty array + if(m_data_total<1) + { + SetUserError(ERR_USER_ARRAY_IS_EMPTY); + return(-1); + } + //--- check for start is out of range + if(start<0 || start>=m_data_total) + { + SetUserError(ERR_USER_ITEM_NOT_FOUND); + return(-1); + } +//--- compute count of elements + real_count=(count==WHOLE_ARRAY || start+count>m_data_total) ? m_data_total-start : count; +#ifdef __MQL5__ + return(ArrayMinimum(data,start,real_count)); +#else + return(ArrayMinimum(data,real_count,start)); +#endif + } +//+------------------------------------------------------------------+ +//| Find maximum of array | +//+------------------------------------------------------------------+ +template +int CArray::Maximum(const T &data[],const int start,const int count) const + { + int real_count; +//--- check for empty array + if(m_data_total<1) + { + SetUserError(ERR_USER_ARRAY_IS_EMPTY); + return(-1); + } + //--- check for start is out of range + if(start<0 || start>=m_data_total) + { + SetUserError(ERR_USER_ITEM_NOT_FOUND); + return(-1); + } +//--- compute count of elements + real_count=(count==WHOLE_ARRAY || start+count>m_data_total) ? m_data_total-start : count; +#ifdef __MQL5__ + return(ArrayMaximum(data,start,real_count)); +#else + return(ArrayMaximum(data,real_count,start)); +#endif + } +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------+ +//| Class CArrayObj. | +//| Puprose: Class of dynamic array of pointers to instances | +//| of the CObject class and its derivatives. | +//| Derives from class CArray. | +//+------------------------------------------------------------------+ +class CArrayObj : public CArray + { +protected: + CObject *m_data[]; // data array + bool m_free_mode; // flag of necessity of "physical" deletion of object + +public: + CArrayObj(void); + ~CArrayObj(void); + //--- methods of access to protected data + bool FreeMode(void) const { return(m_free_mode); } + void FreeMode(const bool mode) { m_free_mode=mode; } + //--- method of identifying the object + virtual int Type(void) const { return(0x7778); } + //--- methods for working with files + virtual bool Save(const int file_handle); + virtual bool Load(const int file_handle); + //--- method of creating an element of array + virtual bool CreateElement(const int index) { return(false); } + //--- methods of managing dynamic memory + bool Reserve(const int size); + bool Resize(const int size); + bool Shutdown(void); + //--- methods of filling the array + bool Add(CObject *element); + bool AddArray(const CArrayObj *src); + bool Insert(CObject *element,const int pos); + bool InsertArray(const CArrayObj *src,const int pos); + bool AssignArray(const CArrayObj *src); + //--- method of access to thre array + CObject *At(const int index) const; + //--- methods of changing + bool Update(const int index,CObject *element); + bool Shift(const int index,const int shift); + //--- methods of deleting + CObject *Detach(const int index); + bool Delete(const int index); + bool DeleteRange(int from,int to); + void Clear(void); + //--- method for comparing arrays + bool CompareArray(const CArrayObj *array) const; + //--- methods for working with the sorted array + bool InsertSort(CObject *element); + int Search(const CObject *element) const; + int SearchGreat(const CObject *element) const; + int SearchLess(const CObject *element) const; + int SearchGreatOrEqual(const CObject *element) const; + int SearchLessOrEqual(const CObject *element) const; + int SearchFirst(const CObject *element) const; + int SearchLast(const CObject *element) const; + +protected: + void QuickSort(int beg,int end,const int mode); + int QuickSearch(const CObject *element) const; + int MemMove(const int dest,const int src,int count); + }; +//+------------------------------------------------------------------+ +//| Constructor | +//+------------------------------------------------------------------+ +CArrayObj::CArrayObj(void) : m_free_mode(true) + { +//--- initialize protected data + m_data_max=ArraySize(m_data); + } +//+------------------------------------------------------------------+ +//| Destructor | +//+------------------------------------------------------------------+ +CArrayObj::~CArrayObj(void) + { + if(m_data_max!=0) + Shutdown(); + } +//+------------------------------------------------------------------+ +//| Moving the memory within a single array | +//+------------------------------------------------------------------+ +int CArrayObj::MemMove(const int dest,const int src,int count) + { + int i; +//--- check parameters + if(dest<0 || src<0 || count<0) + return(-1); +//--- check count + if(src+count>m_data_total) + count=m_data_total-src; + if(count<0) + return(-1); +//--- no need to copy + if(dest==src || count==0) + return(dest); +//--- check data total + if(dest+count>m_data_total) + { + if(m_data_max=0;i--) + { + //--- "physical" removal of the object (if necessary and possible) + if(m_free_mode && CheckPointer(m_data[dest+i])==POINTER_DYNAMIC) + delete m_data[dest+i]; + //--- + m_data[dest+i]=m_data[src+i]; + m_data[src+i]=NULL; + } + } +//--- successful + return(dest); + } +//+------------------------------------------------------------------+ +//| Request for more memory in an array. Checks if the requested | +//| number of free elements already exists; allocates additional | +//| memory with a given step | +//+------------------------------------------------------------------+ +bool CArrayObj::Reserve(const int size) + { + int new_size; +//--- check + if(size<=0) + return(false); +//--- resize array + if(Available()=size); + } +//+------------------------------------------------------------------+ +//| Resizing (with removal of elements on the right) | +//+------------------------------------------------------------------+ +bool CArrayObj::Resize(const int size) + { + int new_size; +//--- check + if(size<0) + return(false); +//--- resize array + new_size=m_step_resize*(1+size/m_step_resize); + if(m_data_total>size) + { + //--- "physical" removal of the object (if necessary and possible) + if(m_free_mode) + for(int i=size;i=m_data_total) + return(NULL); +//--- result + return(m_data[index]); + } +//+------------------------------------------------------------------+ +//| Updating element in the specified position | +//+------------------------------------------------------------------+ +bool CArrayObj::Update(const int index,CObject *element) + { +//--- check + if(index<0 || !CheckPointer(element) || index>=m_data_total) + return(false); +//--- "physical" removal of the object (if necessary and possible) + if(m_free_mode && CheckPointer(m_data[index])==POINTER_DYNAMIC) + delete m_data[index]; +//--- update + m_data[index]=element; + m_sort_mode=-1; +//--- successful + return(true); + } +//+------------------------------------------------------------------+ +//| Moving element from the specified position | +//| on the specified shift | +//+------------------------------------------------------------------+ +bool CArrayObj::Shift(const int index,const int shift) + { + CObject *tmp_node; +//--- check + if(index<0 || index+shift<0 || index+shift>=m_data_total) + return(false); + if(shift==0) + return(true); +//--- move + tmp_node=m_data[index]; + m_data[index]=NULL; + if(shift>0) + { + if(MemMove(index,index+1,shift)<0) + return(false); + } + else + { + if(MemMove(index+shift+1,index+shift,-shift)<0) + return(false); + } + m_data[index+shift]=tmp_node; + m_sort_mode=-1; +//--- successful + return(true); + } +//+------------------------------------------------------------------+ +//| Deleting element from the specified position | +//+------------------------------------------------------------------+ +bool CArrayObj::Delete(const int index) + { +//--- check + if(index>=m_data_total) + return(false); +//--- delete + if(index=0 && MemMove(index,index+1,m_data_total-index-1)<0) + return(false); + } + else + if(m_free_mode && CheckPointer(m_data[index])==POINTER_DYNAMIC) + delete m_data[index]; + m_data_total--; +//--- successful + return(true); + } +//+------------------------------------------------------------------+ +//| Detach element from the specified position | +//+------------------------------------------------------------------+ +CObject *CArrayObj::Detach(const int index) + { + CObject *result; +//--- check + if(index>=m_data_total) + return(NULL); +//--- detach + result=m_data[index]; +//--- reset the array element, so as not remove the method MemMove + m_data[index]=NULL; + if(indexto || from>=m_data_total) + return(false); +//--- delete + if(to>=m_data_total-1) + to=m_data_total-1; + if(MemMove(from,to+1,m_data_total-to-1)<0) + return(false); + for(int i=to-from+1;i>0;i--,m_data_total--) + if(m_free_mode && CheckPointer(m_data[m_data_total-1])==POINTER_DYNAMIC) + delete m_data[m_data_total-1]; +//--- successful + return(true); + } +//+------------------------------------------------------------------+ +//| Clearing of array without the release of memory | +//+------------------------------------------------------------------+ +void CArrayObj::Clear(void) + { +//--- "physical" removal of the object (if necessary and possible) + if(m_free_mode) + { + for(int i=0;i>1" is quick division by 2 + p_node=m_data[(beg+end)>>1]; + while(i0) + { + //--- control the output of the array bounds + if(j==0) + break; + j--; + } + if(i<=j) + { + t_node=m_data[i]; + m_data[i++]=m_data[j]; + m_data[j]=t_node; + //--- control the output of the array bounds + if(j==0) + break; + j--; + } + } + if(beg0) + Insert(element,pos); + else + Insert(element,pos+1); +//--- restore the sorting flag after Insert(...) + m_sort_mode=mode; +//--- successful + return(true); + } +//+------------------------------------------------------------------+ +//| Quick search of position of element in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::QuickSearch(const CObject *element) const + { + int i,j,m=-1; + CObject *t_node; +//--- search + i=0; + j=m_data_total-1; + while(j>=i) + { + //--- ">>1" is quick division by 2 + m=(j+i)>>1; + if(m<0 || m==m_data_total-1) + break; + t_node=m_data[m]; + if(t_node.Compare(element,m_sort_mode)==0) + break; + if(t_node.Compare(element,m_sort_mode)>0) + j=m-1; + else + i=m+1; + } +//--- position + return(m); + } +//+------------------------------------------------------------------+ +//| Search of position of element in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::Search(const CObject *element) const + { + int pos; +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + pos=QuickSearch(element); + if(m_data[pos].Compare(element,m_sort_mode)==0) + return(pos); +//--- not found + return(-1); + } +//+------------------------------------------------------------------+ +//| Search position of the first element which is greater than | +//| specified in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchGreat(const CObject *element) const + { + int pos; +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + pos=QuickSearch(element); + while(m_data[pos].Compare(element,m_sort_mode)<=0) + if(++pos==m_data_total) + return(-1); +//--- position + return(pos); + } +//+------------------------------------------------------------------+ +//| Search position of the first element which is less than | +//| specified in the sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchLess(const CObject *element) const + { + int pos; +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + pos=QuickSearch(element); + while(m_data[pos].Compare(element,m_sort_mode)>=0) + if(pos--==0) + return(-1); +//--- position + return(pos); + } +//+------------------------------------------------------------------+ +//| Search position of the first element which is greater than or | +//| equal to the specified in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchGreatOrEqual(const CObject *element) const + { +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + for(int pos=QuickSearch(element);pos=0) + return(pos); +//--- not found + return(-1); + } +//+------------------------------------------------------------------+ +//| Search position of the first element which is less than or equal | +//| to the specified in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchLessOrEqual(const CObject *element) const + { +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + for(int pos=QuickSearch(element);pos>=0;pos--) + if(m_data[pos].Compare(element,m_sort_mode)<=0) + return(pos); +//--- not found + return(-1); + } +//+------------------------------------------------------------------+ +//| Find position of first appearance of element in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchFirst(const CObject *element) const + { + int pos; +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + pos=QuickSearch(element); + if(m_data[pos].Compare(element,m_sort_mode)==0) + { + while(m_data[pos].Compare(element,m_sort_mode)==0) + if(pos--==0) + break; + return(pos+1); + } +//--- not found + return(-1); + } +//+------------------------------------------------------------------+ +//| Find position of last appearance of element in a sorted array | +//+------------------------------------------------------------------+ +int CArrayObj::SearchLast(const CObject *element) const + { + int pos; +//--- check + if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) + return(-1); +//--- search + pos=QuickSearch(element); + if(m_data[pos].Compare(element,m_sort_mode)==0) + { + while(m_data[pos].Compare(element,m_sort_mode)==0) + if(++pos==m_data_total) + break; + return(pos-1); + } +//--- not found + return(-1); + } +//+------------------------------------------------------------------+ +//| Writing array to file | +//+------------------------------------------------------------------+ +bool CArrayObj::Save(const int file_handle) + { + int i=0; +//--- check + if(!CArray::Save(file_handle)) + return(false); +//--- write array length + if(FileWriteInteger(file_handle,m_data_total,INT_VALUE)!=INT_VALUE) + return(false); +//--- write array + for(i=0;i(m_controls.At(ind))); } + virtual CWnd* ControlFind(const long id); + //--- for mouse cursor focus + virtual bool MouseFocusKill(const long id=-1); + //--- fill + bool Add(CWnd *control); + bool Add(CWnd &control); + //--- underflowing + bool Delete(CWnd *control); + bool Delete(CWnd &control); + bool DeleteAll(void); + //--- geometry + virtual bool Move(const int x,const int y); + virtual bool Move(const CPoint &point); + virtual bool Shift(const int dx,const int dy); + //--- ID + virtual long Id(const long id); + long Id(void) const { return(CWnd::Id()); } + //--- state + virtual bool Enable(void); + virtual bool Disable(void); + virtual bool Show(void); + virtual bool Hide(void); + //--- methods for working with files + virtual bool Save(const int file_handle); + virtual bool Load(const int file_handle); + +protected: + //--- internal event handlers + virtual bool OnResize(void); + virtual bool OnActivate(void); + virtual bool OnDeactivate(void); + }; +//+------------------------------------------------------------------+ +//| Common handler of chart events | +//+------------------------------------------------------------------+ +bool CWndContainer::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) + { +//--- if an object is being dragged, pass control to the special drag object + if(m_drag_object!=NULL && m_drag_object.OnEvent(id,lparam,dparam,sparam)) + return(true); +//--- loop by elements of group + int total=m_controls.Total(); + for(int i=total-1;i>=0;i--) + { + CWnd *control=Control(i); + //--- check of pointer + if(control==NULL) + continue; + if(control.OnEvent(id,lparam,dparam,sparam)) + return(true); + } +//--- not handled + return(false); + } +//+------------------------------------------------------------------+ +//| Common handler of mouse events | +//+------------------------------------------------------------------+ +bool CWndContainer::OnMouseEvent(const int x,const int y,const int flags) + { + if(!IS_VISIBLE) + return(false); +//--- if an object is being dragged, pass control to the special drag object + if(m_drag_object!=NULL && m_drag_object.OnMouseEvent(x,y,flags)) + return(true); +//--- loop by elements of group + int total=m_controls.Total(); + for(int i=total-1;i>=0;i--) + { + CWnd *control=Control(i); + //--- check of pointer + if(control==NULL) + continue; + if(control.OnMouseEvent(x,y,flags)) + return(true); + } +//--- call of the method of the parent class + return(CWnd::OnMouseEvent(x,y,flags)); + } +//+------------------------------------------------------------------+ +//| Constructor | +//+------------------------------------------------------------------+ +CWndContainer::CWndContainer(void) + { + RTTI; + } +//+------------------------------------------------------------------+ +//| Destructor | +//+------------------------------------------------------------------+ +CWndContainer::~CWndContainer(void) + { + } +//+------------------------------------------------------------------+ +//| Delete group of controls | +//+------------------------------------------------------------------+ +void CWndContainer::Destroy(const int reason) + { +//--- loop by elements of group + int total=m_controls.Total(); + for(int i=0;i= 0; i--) + { + CWnd *pointer = Control(i); + if(pointer == NULL) continue; + + if(pointer == control) + { + CWndContainer *container = dynamic_cast(control); + if(container != NULL) container.DeleteAll(); + return(m_controls.Delete(i)); + } + } + return false; +} + +bool CWndContainer::DeleteAll(void) +{ + const int total = m_controls.Total(); + for(int i = total - 1; i >= 0; i--) + { + CWnd *pointer = Control(i); + if(pointer == NULL) continue; + Delete(pointer); + } + return true; +} + +//+------------------------------------------------------------------+ +//| Delete control from the group (by reference) | +//+------------------------------------------------------------------+ +bool CWndContainer::Delete(CWnd &control) + { +//--- delete by pointer + return(Delete((CWnd*)GetPointer(control))); + } +//+------------------------------------------------------------------+ +//| Absolute movement of the controls group | +//+------------------------------------------------------------------+ +bool CWndContainer::Move(const int x,const int y) + { +//--- relative movement + return(Shift(x-Left(),y-Top())); + } +//+------------------------------------------------------------------+ +//| Absolute movement of the controls group | +//+------------------------------------------------------------------+ +bool CWndContainer::Move(const CPoint &point) + { +//--- relative movement + return(Shift(point.x-Left(),point.y-Top())); + } +//+------------------------------------------------------------------+ +//| Relative movement of the controls group | +//+------------------------------------------------------------------+ +bool CWndContainer::Shift(const int dx,const int dy) + { + if(dx == 0 && dy == 0) return true; + +//--- call of the method of the parent class + if(!CWnd::Shift(dx,dy)) return(false); +//--- loop by elements of group + int total=m_controls.Total(); + for(int i=0;i