9.7 KiB
Session Save Point - 2026-03-22
Created: $(date '+%Y-%m-%d %H:%M:%S %Z') Status: Complete - Ready for system restart
Current Project State
MultiSignal Confluence EA v1.12
Status: Fully implemented and committed
Location:
- Git: https://git.fetcherpay.com/garfield/mql-trading-bots
- Commit:
e2d42b3- "Add complete volatility filters v1.12 (Anti-Chop)" - Local:
~/mql-trading-bots/MultiSignal_Confluence_EA.mq5 - MT5:
~/mt5-docker/config/.wine/drive_c/Program Files/MetaTrader 5/MQL5/Experts/MultiSignal_Confluence_EA.mq5
Features Added in v1.12:
- ATR Volatility Filter (0.5% minimum)
- ADX Trend Strength Filter (20 minimum)
- CheckVolatilityFilter() function called before every trade
- Both filters ON by default, configurable via inputs
Trading Performance (Verified):
- Account: 104125640
- Started: $100,000
- Current: $106,935.12 (+6.94%)
- Trades: 78
- Win Rate: 71.79%
- Profit Factor: 1.29
- Largest Win: $2,216
- Largest Loss: -$1,303
Active Trading Setup
MT5 Docker Container
- Container:
mt5(gmag11/metatrader5_vnc:1.1) - VNC Access: Port 3000
- Config Volume:
/home/garfield/mt5-docker/config
Account Details
- Login: 104125640
- Server: MetaQuotes-Demo
- Platform: MetaTrader 5
Report Access
- Direct HTML:
file:///home/garfield/mt5-docker/config/.wine/drive_c/users/abc/Desktop/ReportHistory-104125640.html - Utility Scripts:
show-latest-report.sh,read-report.sh,export-to-browser.sh
Repositories
mql-trading-bots
- URL: https://git.fetcherpay.com/garfield/mql-trading-bots
- Credentials: garfield@fetcherpay.com / onelove01
- Main File:
MultiSignal_Confluence_EA.mq5
conversation-history
- URL: https://git.fetcherpay.com/garfield/conversation-history
- Session Log:
2026-03-21-mql-trading-bots.md - This Save:
SESSION_SAVE_2026-03-22.md
What's Next (Post-Restart)
- Verify MT5 Compilation - Check Journal for successful v1.12 compile
- Monitor New Trades - Watch for "Volatility filter BLOCKED" messages
- Compare Performance - Expect fewer trades but higher quality
- Backtest - Run strategy tester on v1.12 vs v1.11
Key Code References
Volatility Filter (lines 200-223)
bool CheckVolatilityFilter() {
if(InpUseVolatilityFilter && ATRHandle != INVALID_HANDLE) {
double atr[1], close = iClose(_Symbol, _Period, 0);
if(CopyBuffer(ATRHandle, 0, 0, 1, atr) > 0) {
double atrPct = (atr[0] / close) * 100;
if(atrPct < InpMinATRPercent) {
Print("Volatility filter BLOCKED: ATR too low");
return false;
}
}
}
// ... ADX filter ...
return true;
}
Trade Entry Call (line 616)
if(!CheckVolatilityFilter())
return; // Skip trade - filters not passed
Notes for Future Self
- All work saved to Gitea - accessible from any machine
- MT5 data persists in Docker volume
- v1.12 designed to reduce choppy market losses
- If filters are too aggressive, adjust:
InpMinATRPercentorInpMinADX
Session End - Safe to restart
Ollama Upgrade Script Created
File: ~/upgrade-ollama.sh
The automated upgrade via tool commands was timing out on sudo operations, so an upgrade script was created for manual execution.
To Upgrade Ollama:
~/upgrade-ollama.sh
This will:
- Stop the current ollama service
- Backup existing binary
- Download latest version (currently v0.18.2)
- Install and start the new version
- Verify it's working
Current Status:
- Running: v0.12.11
- Available: v0.18.2
- Location: /usr/local/bin/ollama
- Service: systemd (ollama.service)
- API: localhost:11434
OrdersEA Found and Committed
Date: March 24, 2026
Files Located
~/mql/OrdersEA (1).mq4- Original MT4 version (v1.1)~/mql/OrdersEA.mq5- MT5 version
Committed to Repository
- Commit:
9fac45a - Files:
OrdersEA (1).mq4,OrdersEA.mq5 - Location:
~/mql-trading-bots/
OrdersEA Strategy
Type: Grid/Layering/Basket Trading EA
How it works:
- Defines a price range with
HIGHandLOWparameters (central zone) - Places multiple small pending orders at intervals (
Entryspacing) - Above HIGH: Layer of BUY STOP orders
- Below LOW: Layer of SELL STOP orders
- Manages basket of up to 600 trades
- Calculates average price for exit
- Equity-based lot sizing option
Key Parameters:
HIGH/LOW- Central range boundariesEntry- Spacing between trade levelsLots- Size per tradeTP- Take profit per levelTRADE_RANGE- Trading range in pipsMaxTrades- Up to 600
Risk Management:
EquityFactorPercent- Dynamic lot sizingTakeProfitLevelDollarAmount- Basket profit targetGetOut- Emergency exit flag
Status: Ready for use on MT4 or MT5
OrdersEA Cleaned and Updated
Date: March 24, 2026
Changes Made:
-
Removed WinAPI dependency
- MT4: Removed
#include <WinUser32.mqh> - MT5: Removed
#include "include\WinAPI\winuser.mqh" - Replaced
MessageBox()withPrint()for margin info display
- MT4: Removed
-
Removed license checking
- Removed web.mq5/web.mq4 includes
- Bypassed
IsOK()license validation - Removed customer monitoring code
-
Updated notifications
- MT4:
SendNotificationEx()usesAlert()andPrint() - MT5:
SendNotificationEx()usesSendNotification()andPrint() - Replaced all
SendMail()calls with native alternatives
- MT4:
-
Updated metadata
- Copyright: "Copyright 2024, Garfield Heron"
- Website: "https://fetcherpay.com"
- Default Email: "garfield@fetcherpay.com"
Files Updated:
OrdersEA.mq5(MT5 version)OrdersEA (1).mq4(MT4 version)
Commits:
bf70b79- Clean up OrdersEA.mq5c342966- Clean up OrdersEA MT4 version
Oanda MT4 Status & OrdersEA Conversion
Date: March 24, 2026
Oanda Platform Status (Verified)
- MT4: ✅ Fully supported globally (Oanda's primary platform)
- MT5: ⚠️ Available only in select regions (Japan, UK, Europe, BVI)
- MT5 US: ❌ NOT available for Oanda US clients
- Rating: Oanda rated "Best MetaTrader 4 Broker 2026"
MT4 Environment Setup
- Attempted Docker MT4 setup - image not publicly available
- Created MT4 directory in Wine prefix:
~/mt5-docker/config/.wine/drive_c/Program Files/MetaTrader 4/ - Note: MT4 installer must be downloaded from Oanda directly (MetaQuotes removed public downloads)
OrdersEA Conversion to MT5
Files Created:
OrdersEA.mq5- Converted MT5 version (v2.0)OrdersEA_MT4_Original.mq5- Original MT4 backupOrdersEA_MT5_Converted.mq5- Conversion reference
Key Conversions Made:
| MT4 | MT5 |
|---|---|
OrderSelect() |
PositionGet() / HistorySelect() |
MarketInfo() |
SymbolInfoDouble/Integer() |
Bid, Ask, Digits, Point |
SymbolInfoDouble(_Symbol, SYMBOL_BID/ASK/POINT) |
OrderSend() |
CTrade::OrderSend() |
OrderClose() |
CTrade::PositionClose() |
int ticket |
ulong ticket |
WindowExpertName() |
MQLInfoString(MQL_PROGRAM_NAME) |
IsOptimization() |
MQLInfoInteger(MQL_OPTIMIZATION) |
Commit: c415cd9
MT5 Freeze Analysis & Solutions
Date: March 24, 2026
Why Did It Freeze?
Root Cause: OrdersEA.mq5 was an MT4 file disguised as MT5
| Issue | Details |
|---|---|
| File Type | MT4 syntax with .mq5 extension |
| Syntax Errors | 100 errors detected by MetaEditor |
| Problem Functions | OrderSelect(), MarketInfo(), Bid, Digits, Point |
| Trigger | MetaEditor hung while processing errors |
| Wine Factor | Windows apps in Wine are less stable with errors |
What Happened:
- MetaEditor tried to compile OrdersEA.mq5
- Found 100 MT4-specific syntax errors
- Got stuck in error processing loop
- VNC session froze (MetaEditor was active window)
- Required container restart to clear
Solutions Implemented:
1. Syntax Checker (check-syntax.sh)
./check-syntax.sh OrdersEA.mq5
# Detects MT4 functions before compilation
2. Watchdog (metaeditor-watchdog.sh)
- Auto-kills MetaEditor if running >5 minutes
- Kills if CPU >50% for extended period
3. Safe Compile (safe-compile.sh)
- 2-minute timeout on compilations
- Auto-kills on timeout
- Prevents indefinite hangs
Prevention Tips:
- Always check syntax before compiling unknown files
- Use MT4→MT5 conversion tools for old code
- Watch for MetaEditor freezes during compilation
- Restart container if VNC becomes unresponsive
OrdersEA Smart Grid v3.0 Created
Date: March 24, 2026
New EA: OrdersEA_Smart_Grid.mq4
Features:
- Auto Pivot Calculation - Calculates P, R1, S1, R2, S2 from daily data
- RSI Filter - Only trades when RSI is in neutral zone (35-65)
- ADX Filter - Only trades when ADX < 25 (ranging market)
- ATR Adaptive Range - Grid range adjusts to volatility
- Max Levels - Safety limit on grid depth
- Auto Recalculation - Updates pivots at new trading day
Key Parameters:
Grid Settings:
- UseAutoPivots: true = auto-calculate, false = use manual HIGH/LOW
- Entry: Grid spacing in pips (default 10)
- TP: Take profit per level (default 15)
- MaxLevels: Maximum orders per side (default 10)
Filters:
- UseRSIFilter: Enable RSI check
- RSILower/RSIUpper: 35/65 default (neutral zone)
- UseADXFilter: Enable trend detection
- ADXMax: 25 default (below = ranging)
- UseATRFilter: Enable volatility-based range
- ATRMultiplier: 1.5 default (range = ATR × 1.5)
How It Works:
- At startup, calculates yesterday's pivot points
- Sets grid range: HIGH = R1 (or R2), LOW = S1 (or S2)
- Each tick checks:
- RSI between 35-65? (Not overbought/oversold)
- ADX < 25? (Not trending)
- Price within range?
- If all pass, places grid orders
- If market trends (ADX > 25), stops placing new orders