Ushana Kevin Iorkumbul
Ushana Kevin Iorkumbul
  • Information
no
experience
0
products
0
demo versions
0
jobs
0
signals
0
subscribers
Writer and developer
Ushana Kevin Iorkumbul
Published article Drawdown Duration Analysis Indicator in MQL5
Drawdown Duration Analysis Indicator in MQL5

We build a drawdown analytics dashboard that derives the equity curve from deals and finds every episode's depth and recovery duration. Results appear on a CCanvas timeline spaced by point index with alternating bold annotations, and in a terminal table sorted by duration, allowing you to prioritize risk by time spent underwater rather than depth alone.

Ushana Kevin Iorkumbul
Published article Building a Session Performance Analytics Dashboard in MQL5
Building a Session Performance Analytics Dashboard in MQL5

This article builds an MQL5 dashboard that classifies closed deals into Sydney, Tokyo, London, and New York trading sessions by UTC close time. It computes per-session P&L, win rate, and average hold time, then renders the results as a persistent CCanvas bar chart with an account-wide summary row, alongside an Experts tab summary table. A verification script confirms the classification and metrics logic behaves correctly.

Ushana Kevin Iorkumbul
Published article Building a News Filter Engine in MQL5 Using a Local Economic Calendar File
Building a News Filter Engine in MQL5 Using a Local Economic Calendar File

A file-based news filter for MQL5 reads a pre-downloaded Forex Factory CSV from MQL5/Files, avoiding fragile web scraping and paid APIs. It provides a modular CNewsFilter with a quote-aware CSV parser, suffix-robust currency extraction, an inclusive time-window checker with clear block reasons, and chart zones for today's events. A demo EA and assertion tests help you integrate and verify offline filtering around scheduled releases.

Ushana Kevin Iorkumbul
Published article Designing a Multi-EA Communication Bus Using Named Pipes in MQL5
Designing a Multi-EA Communication Bus Using Named Pipes in MQL5

This article implements a typed message bus over Windows named pipes to replace MetaTrader's untyped GlobalVariables for inter‑EA communication. A broker EA manages the server and registry, serves multiple slave EAs, and responds with a live, per‑symbol‑attributed portfolio risk measure. It also explains the non-blocking accept pattern that preserves terminal responsiveness, and includes a dashboard and a test script.

Ushana Kevin Iorkumbul
Published article Expectancy and Trade Quality Score Dashboard in MQL5
Expectancy and Trade Quality Score Dashboard in MQL5

We present an MQL5 script that converts closed trade history into comparable metrics: expectancy in currency, pips, and R-multiples, plus a sample-aware win rate via the Wilson interval. These inputs form a conservative, dimensionless Trade Quality Score. The tool draws a CCanvas panel, prints an Experts-tab report, and supports an hour-based session filter to analyze a defined trading window alongside full-history results.

Ushana Kevin Iorkumbul
Published article A Reusable Breakeven Manager in MQL5 with Spread Compensation
A Reusable Breakeven Manager in MQL5 with Spread Compensation

A robust breakeven implementation for MQL5 is built around live spread sampling and correct pip-to-price conversion by symbol digits. CBreakevenManager moves SL to open_price ± spread ± buffer once a real‑pip activation threshold is reached and prevents duplicate modifications. A demo EA shows the behavioral difference versus a naive breakeven, and a script verifies core calculations.

Ushana Kevin Iorkumbul
Published article Implementing a Trade Throttle and Rate Limiter in MQL5
Implementing a Trade Throttle and Rate Limiter in MQL5

We build a trade throttle for MQL5 EAs using a token bucket with a priority queue to control order submission rate. Tokens refill at a configurable per‑second rate, allowing short bursts up to capacity and then enforcing sustained throughput. When the bucket is empty, requests are queued and later released by priority with FIFO tiebreaks. This keeps execution within safe limits without discarding valid signals under load.

Ushana Kevin Iorkumbul
Published article Building a Compile-Time Unit Testing Framework in MQL5 Using Preprocessor Assertions
Building a Compile-Time Unit Testing Framework in MQL5 Using Preprocessor Assertions

MQL5 lacks native unit testing, so utility bugs in lot sizing, pip value, and normalization often slip into production. This article presents a zero‑dependency framework built from preprocessor assertion macros, interface‑based suites, and a central runner/formatter. It runs as a script in OnStart, executes deterministic tests, and prints pass/fail summaries to the Experts tab to catch rounding, boundary, and error-handling defects before deployment.

Ushana Kevin Iorkumbul
Published article Implementing a Daily Loss Limit and Drawdown Circuit Breaker in MQL5
Implementing a Daily Loss Limit and Drawdown Circuit Breaker in MQL5

This article presents a circuit breaker for MQL5 that monitors combined daily P&L (realized plus floating) on every tick and compares it to a configured loss limit. On breach, it closes positions, cancels pending orders, and activates a HALTED state that blocks further order submission in the EA until server‑time midnight. The package provides a chart dashboard, a demo Expert Advisor, a verification script, and notes on extending the halt signal across EAs.

Ushana Kevin Iorkumbul
Published article Designing a Partial Close Engine in MQL5 with Configurable Profit Ladders
Designing a Partial Close Engine in MQL5 with Configurable Profit Ladders

This MQL5 engine applies configurable profit ladders in R‑multiples to manage partial closes reliably. It prevents stranded remainders by rounding to lot step, computes close percentages from the original entry volume, and moves the stop to breakeven when configured. A supported filling mode is chosen automatically, and the download includes seven include files, a demo EA, and a verification script.

Ushana Kevin Iorkumbul
Published article Institutional-Grade Multi-Currency Portfolio Engine in MQL5 (Part 1): Architecture of a Multi-Currency EA Framework
Institutional-Grade Multi-Currency Portfolio Engine in MQL5 (Part 1): Architecture of a Multi-Currency EA Framework

The article details a master–agent MQL5 framework that mitigates cross-symbol risk concentration. A single Portfolio Controller publishes risk limits and halt flags to Instrument Agents through shared channels and a readiness flag, while agents size orders only within the published budget. It contrasts global variables, named pipes, and files, and clarifies timer intervals and latency so data allocation may be up to one cycle stale without breaking coordination.

Ushana Kevin Iorkumbul
Published article Building a Basket Order Manager in MQL5 for Correlated Position Groups
Building a Basket Order Manager in MQL5 for Correlated Position Groups

The article's system introduces CBasketManager: positions are grouped by a comment‑based basket ID, analyzed as a single snapshot, and controlled with a unified equity stop. CBasketScanner computes aggregate P&L and volume‑weighted pip performance; CBasketStopRegistry triggers coordinated closure on threshold breach; CBasketExecutor adapts to the broker's filling mode. A lightweight dashboard shows live legs, volumes, stops, and distances for faster basket decisions.

Ushana Kevin Iorkumbul
Published article CSV Data Analysis (Part 8): Building an SQLite Strategy Registry from Accumulated CSV Exports
CSV Data Analysis (Part 8): Building an SQLite Strategy Registry from Accumulated CSV Exports

Flat files work well at the start of an MQL5 research pipeline, but they hinder cross-run queries and provenance once the archive grows. We build a Python-based SQLite registry that ingests CSV exports with SHA-1 deduplication, records EA version and run timestamps, applies forward-only schema migrations, and indexes common filters. You get a structured query layer for fast lookups, robustness checks, and version comparisons across all campaigns.

Ushana Kevin Iorkumbul
Published article A Trailing Stop Engine in MQL5 Supporting Five Trail Methods Simultaneously
A Trailing Stop Engine in MQL5 Supporting Five Trail Methods Simultaneously

We implement CTrailingEngine, an interface-driven MQL5 engine that evaluates each registered position on every tick and applies one of five trailing methods: fixed-pip, ATR multiplier, Parabolic SAR, percentage-of-profit, or swing high/low. All methods share the ITrailMethod contract, so new trails plug in without engine edits. Strict improvement and a one-point guard block backward moves and no-change SLTP modifications.

Ushana Kevin Iorkumbul
Published article Detecting Structural Breakpoints in Price Series Using CUSUM in MQL5 (Part 2): Implementing the Detector as a Native MQL5 Indicator
Detecting Structural Breakpoints in Price Series Using CUSUM in MQL5 (Part 2): Implementing the Detector as a Native MQL5 Indicator

This article benchmarks CUSUM_Breakpoint.mq5 against the Siegmund ARL₀ prediction on live‑like data. The empirical false‑alarm rate is about five times higher than theory for all tested symbols and timeframes, and confirmations show sensitivity to variance changes over mean changes. Practitioners should calibrate h and k on the target instrument's history and apply the signal to manage volatility regimes, not to infer directional shifts.

Ushana Kevin Iorkumbul
Published article Building a Position Sizing Engine in MQL5 with Multiple Risk Models
Building a Position Sizing Engine in MQL5 with Multiple Risk Models

The article presents a position sizing engine for MQL5 Expert Advisors that separates risk policy from lot conversion. Four models—fixed fractional, fixed monetary, ATR-based volatility scaling, and equity-curve scaling—share a CLotConverter that uses OrderCalcProfit() to measure real money per point. A unified CPositionSizer interface exposes CalculateLots(), making model changes straightforward while producing broker-compliant volumes across symbols.

Ushana Kevin Iorkumbul
Published article Designing a Unified Order Execution Gateway Class in MQL5
Designing a Unified Order Execution Gateway Class in MQL5

This class provides one point of contact for trade operations in MQL5. It rounds and clamps lot sizes, validates SL/TP against the broker's minimum distance, resolves a compatible filling policy, and applies bounded retries for transient retcodes. Calls return a structured CGatewayResult instead of raw retcodes, simplifying error handling and maintenance across strategies.

Ushana Kevin Iorkumbul
Published article Generating a Per-Symbol Trade Analytics PDF Report from MQL5
Generating a Per-Symbol Trade Analytics PDF Report from MQL5

This article shows how to generate a dependency-free, single-page PDF report in MQL5 using only string assembly and the FILE_BIN API. The script computes per-symbol trade statistics, then renders a labeled table and an equity curve with explicit PDF color and drawing operators. Statistics are calculated in a standalone module, so every value can be verified against synthetic data without relying on a live trading account.

Ushana Kevin Iorkumbul
Published article Exporting Custom Indicator Buffers to CSV for Python Backtesting Pipelines
Exporting Custom Indicator Buffers to CSV for Python Backtesting Pipelines

We build a CSV exporter for MQL5 custom indicators that preserves the exact values seen on the chart. The script creates the indicator handle with iCustom, waits for BarsCalculated, aligns buffers to CopyRates, and writes a locale-safe CSV that pandas loads with parsed dates and NaN for warm-up bars. It addresses compile-time argument limits, jagged-array workarounds, and EMPTY_VALUE handling, enabling reliable Python backtests without re-coding the indicator.

Ushana Kevin Iorkumbul
Published article Streaming MetaTrader 5 Trade Events to a Local HTTP Server Using WinINet in MQL5
Streaming MetaTrader 5 Trade Events to a Local HTTP Server Using WinINet in MQL5

An MQL5 implementation sends trade lifecycle events to a local HTTP service through WinINet with a reusable session and per-request handles. The trade callback only enqueues JSON and returns, while a 500 ms timer drains the queue and retries failed posts, preserving order. A three-stage log policy keeps the Experts tab clear during downtime and summarizes recovery.