Files
conversation-history/SESSION_SAVE_2026-03-22.md

8.4 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

conversation-history


What's Next (Post-Restart)

  1. Verify MT5 Compilation - Check Journal for successful v1.12 compile
  2. Monitor New Trades - Watch for "Volatility filter BLOCKED" messages
  3. Compare Performance - Expect fewer trades but higher quality
  4. 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: InpMinATRPercent or InpMinADX

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:

  1. Stop the current ollama service
  2. Backup existing binary
  3. Download latest version (currently v0.18.2)
  4. Install and start the new version
  5. 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:

  1. Defines a price range with HIGH and LOW parameters (central zone)
  2. Places multiple small pending orders at intervals (Entry spacing)
  3. Above HIGH: Layer of BUY STOP orders
  4. Below LOW: Layer of SELL STOP orders
  5. Manages basket of up to 600 trades
  6. Calculates average price for exit
  7. Equity-based lot sizing option

Key Parameters:

  • HIGH / LOW - Central range boundaries
  • Entry - Spacing between trade levels
  • Lots - Size per trade
  • TP - Take profit per level
  • TRADE_RANGE - Trading range in pips
  • MaxTrades - Up to 600

Risk Management:

  • EquityFactorPercent - Dynamic lot sizing
  • TakeProfitLevelDollarAmount - Basket profit target
  • GetOut - Emergency exit flag

Status: Ready for use on MT4 or MT5


OrdersEA Cleaned and Updated

Date: March 24, 2026

Changes Made:

  1. Removed WinAPI dependency

    • MT4: Removed #include <WinUser32.mqh>
    • MT5: Removed #include "include\WinAPI\winuser.mqh"
    • Replaced MessageBox() with Print() for margin info display
  2. Removed license checking

    • Removed web.mq5/web.mq4 includes
    • Bypassed IsOK() license validation
    • Removed customer monitoring code
  3. Updated notifications

    • MT4: SendNotificationEx() uses Alert() and Print()
    • MT5: SendNotificationEx() uses SendNotification() and Print()
    • Replaced all SendMail() calls with native alternatives
  4. Updated metadata

Files Updated:

  • OrdersEA.mq5 (MT5 version)
  • OrdersEA (1).mq4 (MT4 version)

Commits:

  • bf70b79 - Clean up OrdersEA.mq5
  • c342966 - 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 backup
  • OrdersEA_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:

  1. MetaEditor tried to compile OrdersEA.mq5
  2. Found 100 MT4-specific syntax errors
  3. Got stuck in error processing loop
  4. VNC session froze (MetaEditor was active window)
  5. 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:

  1. Always check syntax before compiling unknown files
  2. Use MT4→MT5 conversion tools for old code
  3. Watch for MetaEditor freezes during compilation
  4. Restart container if VNC becomes unresponsive