Correctsd70efc0, shipped an hour earlier, on the operator's report that historical spread is not accessible from this terminal. THE SOURCE WAS WRONG.d70efc0read MqlRates.spread out of the bar history via CopySpread, reasoning that a historical book should be charged the historical spread. The reasoning is appealing and the data does not support it: that field is only populated for bars the broker's own feed recorded, and anything backfilled, imported or synthesised carries a constant or the spread at download time. A cost that is silently constant is WORSE than no cost at all, because it looks measured - it would have passed every review while charging a made-up number. SPREAD IS NOW SAMPLED LIVE, Ask - Bid, ONCE PER BAR. Per bar and not per tick deliberately: per-tick sampling weights busy hours, and busy hours are the tight-spread ones, so the mean would be biased low - understating exactly the cost this gate exists to charge. The running mean PERSISTS across restarts in a terminal GlobalVariable, so it accumulates a real distribution over however long the fleet has been up instead of resetting to a single tick on every deploy; past WARRIOR_COST_SAMPLE_CAP samples it becomes an EMA so a genuine regime change can still move it. COMMISSION IS NOT A SYMBOL PROPERTY IN THIS BUILD, and this was put to the compiler rather than assumed. A probe file compiled against this terminal returns: error 256: undeclared identifier 'SYMBOL_COMMISSION' error 256: undeclared identifier 'SYMBOL_TRADE_FEE' error 256: undeclared identifier 'SYMBOL_COMMISSION_TYPE' while SYMBOL_ASK / SYMBOL_BID / SYMBOL_SWAP_LONG / SYMBOL_TRADE_TICK_VALUE in the same file compile clean, so the probe itself was sound. The Symbol Specification DIALOG shows a commission for many brokers; MQL5 is not given it. The only programmatic ground truth is DEAL_COMMISSION on an executed deal (Database\TradeJournalManager.mqh already reads it), which is useless before the book has traded. So it is an INPUT - Cost_CommissionPerLotPerSide, account currency per lot per side, the way brokers quote it. Doubled for the round turn and converted to price through tickSize/tickValue. ZERO IS A REAL ANSWER (spread-only accounts exist) and means the gate charges spread alone; it is not a way to disable the test. It ships at 0.0, so until an operator sets it the gate is charging spread only and says so. THE PER-ROW ARRAY IS NOT REDUNDANT at a constant spread: cost is expressed in the BAR'S OWN ATR, so a quiet bar is genuinely dearer to trade than a volatile one and the number still varies row to row. THE LIMITATION, STATED RATHER THAN HIDDEN: this charges a HISTORICAL book the CURRENT spread regime. No data available to this terminal can remove that assumption, so it is written into the module header and is the first thing an operator should challenge. CFeatureBuilder::SpreadPointsAt keeps its body and loses its claim: its comment said it existed for the deploy gate, which stopped being true with this commit. It still backs the spread FEATURE, where a constant column merely fails the keep-screen - a safe failure, which as a cost it is not. Not retrain-forcing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.3 KiB
Text
33 lines
1.3 KiB
Text
DirectML/vc140.pdb
|
|
|
|
# Market data must never enter the repository. A 2.1 GB tick .dat was committed once
|
|
# (c7e9777) by a broad `git add -A`; deleting it afterwards did NOT remove the blob from
|
|
# history, and pushing it is what made syncing hang. Keep raw data outside the workspace -
|
|
# ..\Market Data\ - and reference it by absolute path from the research scripts, which
|
|
# now live in ..\Warrior_Research\ (moved out 2026-08-25 to keep this repo EA-only).
|
|
Market Data/
|
|
*.dat
|
|
*.npz
|
|
|
|
# Tests\sample_data\ holds a COPY of one SQX history file plus its decoded output, made for
|
|
# the Testing phase (see project_autonomous_campaign_20260824.md) so the operator has real
|
|
# sample data to point a manual run at. Same rule as Market Data/ above applies to it - the
|
|
# .dat is already caught by *.dat; this line keeps the whole scratch folder (including any
|
|
# future non-.dat/.npz artifact dropped there) out regardless.
|
|
Tests/sample_data/
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.pyc
|
|
.venv/
|
|
|
|
# MetaTrader build output
|
|
*.ex5
|
|
*.ex4
|
|
|
|
|
|
# Reference books live in docs/ for reading, never in history: 23 MB of PDF went in once
|
|
# (2026-09-03) via a broad `git add -A`, the same way the 2.1 GB tick .dat did. Amended out
|
|
# before any push, because deleting a blob afterwards does NOT remove it from history.
|
|
docs/*.pdf
|
|
*.pdf
|