{{ currentMenuName }}

Showing data for: {{ activeRangeLabel }} · {{ activeTrades.length }} of {{ trades.length }} trades
{{ t('netPnl') }}
{{ totalPnl >= 0 ? '+' : '' }}${{ formatNum(displayPnl) }}
{{ t('winRate') }}
{{ winRate }}%
{{ wins.length }}W / {{ losses.length }}L
Profit Factor
{{ formatNum(profitFactor, 2) }}
{{ t('totalTrades') }}
{{ activeTrades.length }}
Vol {{ formatNum(totalVolume, 2) }}
{{ t('avgWinLoss') }}
+${{ formatNum(avgWin) }} / ${{ formatNum(avgLoss) }}
Expectancy {{ expectancy >= 0 ? '+' : '' }}${{ formatNum(expectancy) }}
{{ t('maxDrawdown') }}
-${{ formatNum(maxDrawdown) }}
Peak ${{ formatNum(peakEquity) }}

{{ t('noData') }}

Import your MT5 HTML/XML report, or load sample data to explore the dashboard.

{{ currentMonthName }}

Sun
Mon
Tue
Wed
Thu
Fri
Sat
{{ day.date.getDate() }} {{ day.trades }}
{{ day.pnl >= 0 ? '+' : '' }}${{ formatNum(day.pnl) }}
Month P&L
{{ monthSummary.pnl >= 0 ? '+' : '' }}${{ formatNum(monthSummary.pnl) }}
Trades
{{ monthSummary.trades }}
{{ t('winRate') }}
{{ monthSummary.winRate }}%
Trading Days
{{ monthSummary.days }}

{{ selectedDay.date.toLocaleDateString('en-US', { weekday:'long', month:'long', day:'numeric' }) }}

TimeSymbolTypeVolProfit
{{ fmtTime(t.openTime) }} {{ t.symbol }} {{ t.type }} {{ t.volume }} {{ t.profit>=0?'+':'' }}${{ formatNum(t.profit) }}
Range:
Tags: {{ t }} ×
Open Time {{ sortDir==='asc'?'↑':'↓' }} Symbol {{ sortDir==='asc'?'↑':'↓' }} Type {{ sortDir==='asc'?'↑':'↓' }} Volume {{ sortDir==='asc'?'↑':'↓' }} Open {{ sortDir==='asc'?'↑':'↓' }} Close {{ sortDir==='asc'?'↑':'↓' }} Profit {{ sortDir==='asc'?'↑':'↓' }}
{{ t.openTime }} {{ t.symbol }} {{ tag }} {{ t.type }} {{ t.volume }} {{ t.openPrice || '—' }} {{ t.closePrice || '—' }} {{ t.profit>=0?'+':'' }}${{ formatNum(t.profit) }}
{{ '★'.repeat(t.rating) }}
📭
No trades match your filters.
Page {{ page }} of {{ totalPages }}
No data in current range. or import data.

{{ t('riskCalculator') }}

Calculate lot size based on account risk, entry & stop loss.

Recommended Position Size
{{ formatNum(calcResult.lots, 2) }} lots
Risk $
${{ formatNum(calcResult.riskAmount) }}
SL Distance
{{ formatNum(calcResult.slDistance, 5) }}
Pip Value/Lot
${{ formatNum(calcResult.pipValue) }}
R Multiple
1 : {{ formatNum(calcResult.rMultiple, 1) }}
{{ calcResult.warning }}
Quick Symbol Presets

{{ t('import') }} MT5

Upload your MT5 / MT4 report directly. Supports .html, .htm, .xml. Parsed locally — nothing is uploaded.

Click to select or drag & drop your report

Parsing file...

MT5: Report → Save as Report (.html) · MT4: Account History → Save as Report

{{ importStatus.msg }}
Preview (first 8 rows)
TimeSymbolTypeVolPriceProfit
{{ t.openTime }} {{ t.symbol }} {{ t.type }} {{ t.volume }} {{ t.openPrice || '—' }} {{ t.profit>=0?'+':'' }}${{ formatNum(t.profit) }}
{{ dupInfo.count }} duplicate{{ dupInfo.count>1?'s':'' }} detected (same time+symbol+type+volume)

Data Management

{{ trades.length }} trades stored locally

{{ t('parsingTips') }}

  • The parser detects the trade table automatically by scanning headers (Time, Symbol, Type, Volume, Price, Profit).
  • Handles MT5's merged S/L · T/P · Profit columns by extracting the last numeric value as profit.
  • Falls back to content-based profit detection if header mapping fails.
  • XML reports from MT5 are parsed via tag name (Deal/Position/Order).

{{ t('accentTheme') }}

Personalize the highlight color across the app.

Active: {{ accents.find(a=>a.id===settings.accent)?.name }}

{{ t('displayPref') }}

Number formatting, currency, and default risk.

EA Real-time Sync

Connect MT5 Expert Advisor for automatic trade syncing.

Status: {{ syncStatus }} · {{ syncMessage }}

{{ t('keyboardShortcuts') }}

Speed up your workflow.

Command palette⌘ K
DashboardG D
CalendarG C
Trade HistoryG T
AnalyticsG A
CalculatorG R
Import dataG I
Close panel/drawerEsc

{{ t('dataStorage') }}

All data lives in your browser under mt5_trades_pro.

About

Pro Trading Journal — MT5 Edition · v3.1
Single-file Vue 3 + Tailwind CSS + Chart.js. No backend, no tracking. Deploy to Cloudflare Pages by copying this file as index.html.
Made for personal trading accountability.
Pro Trading Journal · Single-file Vue app · localStorage key: mt5_trades_pro
Deploy-ready for Cloudflare Pages
Esc
No matches for "{{ cmdQuery }}"
{{ cmdResults.length }} results ↑↓ navigate select
Trade Detail
{{ drawer.trade?.symbol }} {{ drawer.trade?.type?.toUpperCase() }}
Open Time
{{ drawer.trade.openTime }}
Volume
{{ drawer.trade.volume }} lot
Open Price
{{ drawer.trade.openPrice || '—' }}
Close Price
{{ drawer.trade.closePrice || '—' }}
Profit
{{ drawer.trade.profit>=0?'+':'' }}${{ formatNum(drawer.trade.profit) }}
{{ t }} × No tags yet
Auto-saved on blur · {{ (drawer.trade.note||'').length }} chars
{{ t.type==='error'?'⚠️':t.type==='success'?'✓':'ℹ️' }} {{ t.msg }}

{{ modal.title }}

{{ modal.body }}

{{ tourSteps[tour.step].icon }}
Step {{ tour.step + 1 }} of {{ tourSteps.length }}

{{ tourSteps[tour.step].title }}

{{ tourSteps[tour.step].body }}