| # EA Health Monitor: specification
|
|
|
| An indicator (read-only, no trading). One core, `mql5/Include/EAHealth/HealthCore.mqh` (MT4: `mql4/Indicators/EAHealth/HealthCore.mqh`),
|
| with a Python twin, `tests/reference.py`, that follows it operation for operation.
|
|
|
| ## Grouping
|
| - Every deal belongs to its POSITION; a position belongs to the magic number of its opening (IN) deal. A manual close of
|
| an EA's trade (an out deal with magic 0) therefore stays with that EA. Magic 0 = manual trades.
|
| - Balance, credit and other non-trade deals are ignored.
|
| - MT4 keeps orders, not deals: each buy or sell order becomes an opening deal (open time, lots) and, once closed, a closing
|
| deal (close time, lots, profit, swap, commission). A partial close leaves the rest open under a new ticket whose comment is
|
| `from #<ticket>`; all parts of one order are one position.
|
|
|
| ## Per magic (closed history, in deal time order)
|
| - Realized P/L curve: each trade deal adds profit + swap + commission + fee at its time (entry commissions included).
|
| - Max drawdown: the largest fall of that curve from its running peak (the peak starts at 0), in money.
|
| - A trade = a position whose OUT volume reached its IN volume; its net = the sum over all its deals. A reversing deal
|
| (IN/OUT) closes the trade and opens the next with the volume beyond.
|
| - N trades, W (net > 0), L (net < 0), win rate W/N, GP (gross profit), GL (gross loss), profit factor GP/GL, expectancy
|
| (GP - GL) / N.
|
| - Today: realized P/L of the deals since the server day start. Last deal time.
|
|
|
| ## Live (open positions of that magic)
|
| - Open count; floating = profit + swap (MT4: + commission, which MT4 books at the close).
|
|
|
| ## Names
|
| - The "Names" input (`magic=name,...`), else the comment of the EA's first opening deal (first 14 characters) plus the magic
|
| number, else `#<magic>`; magic 0 is "Manual".
|
|
|
| ## Panel
|
| One row per magic in the order each first traded, then manual (if shown), then a total. The total's max drawdown is the
|
| largest of the rows, not the drawdown of the account.
|