The client's idea
Amirhossein Taheri works US30 / NAS100 on M15; the opening brief was: Manage the open US30 and NAS100 positions as one basket, not one by one.
Project and starting point
The two indices are highly correlated; managing positions separately left both open through every reversal.
Solution architecture
Basket management with a break-even move at a fixed threshold, staged profit exits and basket trailing, consistent with prop account rules.
The break-even move is calculated from the basket's profit rather than a single position's. It matches how US30 / NAS100 is actually traded and can be tested against the data already available.
Why this design
The break-even move is calculated from the basket's profit rather than a single position's. It matches how US30 / NAS100 is actually traded and can be tested against the data already available.
Implemented capabilities
Modules and components built: Staged exit + basket trailing.
Delivered output:
Index basket position manager — US30 / NAS100 (M15)
Specification document and the rule-to-code mapping table
Full MQL5 source, commented
Test report: Two-year test across both indices
Parameter document and install guide (7 weeks)
Safeguards and risk control
Every change starts from a saved backup, and the previous behaviour is kept as the test reference.
Backtest and forward test method
Test method: Two-year test across both indices.
Testing runs in three stages: a backtest on historical data, limited optimisation inside the contract's scope, and a forward run with the parameters frozen.
Tools and stack: MQL5, M5 and M15 data, a basket panel.
Every figure from this project is published together with its measurement conditions: the data window, the tick model, the spread, the commission and the build of the executable. Without them a number cannot be compared with anything.
Publishable results
During the test the time spent holding open positions shortened, and the account never broke the prop rule on simultaneous exposure.
Limitations and cautions
Every change starts from a saved backup, and the previous behaviour is kept as the test reference.
Every test result depends on the quality of the historical data, the broker's spread and market conditions, and none of it is a promise about the future. Through a severe price gap or a broker disconnection a stop loss cannot be guaranteed, so behaviour in those conditions must be reviewed separately.
Our next-step proposal
The next step is a full technical review of the expert and clearing the old code's debts.
Portfolio
Measured results
These are the figures the test produced — not a promise about future performance.
- 4 Concurrent position cap
- 620 Trades reviewed
- 8.1 % Max drawdown in test
- 2 Symbols covered