Create and Test Forex Strategies
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| express-generator:mm-js [2026/02/22 09:20] – Miroslav Popov | express-generator:mm-js [2026/05/29 10:23] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Multi-Market (mm.js) ====== | ====== Multi-Market (mm.js) ====== | ||
| - | The Multi-Market script | + | The Multi-Market script |
| + | It combines two core capabilities: | ||
| + | |||
| + | * data fetching from the Fetcher workflow | ||
| + | * strategy validation from the Generator validator workflow | ||
| + | |||
| + | If you are new to ExGen workflows, begin with [[quick-start|Quick Start]] before configuring Multi-Market runs. | ||
| + | |||
| + | ===== How it works ===== | ||
| + | |||
| + | Multi-Market runs this pipeline: | ||
| + | |||
| + | * loads settings from '' | ||
| + | * resolves test markets from '' | ||
| + | * fetches required data files for each test market | ||
| + | * validates each input strategy on each test market | ||
| + | * counts passed tests per strategy and exports only those that meet '' | ||
| + | |||
| + | ===== Requirements ===== | ||
| + | |||
| + | * Input collection must be provided via '' | ||
| + | * Symbol info files must exist for all test servers in '' | ||
| + | * '' | ||
| + | * Both '' | ||
| + | * You can prepare symbol info with Fetcher, for example: '' | ||
| ===== Quick start ===== | ===== Quick start ===== | ||
| - | Validate a collection against 8 markets and export | + | Validate a collection against 8 test markets and export strategies that pass at least 5 tests. |
| Command: | Command: | ||
| express-generator> | express-generator> | ||
| + | |||
| + | |||
| + | Run with a custom settings file and CLI override: | ||
| + | |||
| + | express-generator> | ||
| Output fetch: | Output fetch: | ||
| - | | + | <code text> |
| + | ..:: Express Generator Multi Market v2.xx ::.. | ||
| Fetched: Premium Data EURUSD M30, From: 2018-02-13 20:30, To: 2026-02-20 22:00, Bars: 100000 | Fetched: Premium Data EURUSD M30, From: 2018-02-13 20:30, To: 2026-02-20 22:00, Bars: 100000 | ||
| Line 24: | Line 54: | ||
| Fetched: Premium Data EURCHF M30, From: 2018-02-13 07:30, To: 2026-02-20 22:00, Bars: 100000 | Fetched: Premium Data EURCHF M30, From: 2018-02-13 07:30, To: 2026-02-20 22:00, Bars: 100000 | ||
| Fetched: Premium Data EURJPY M30, From: 2018-02-13 14:30, To: 2026-02-20 22:00, Bars: 100000 | Fetched: Premium Data EURJPY M30, From: 2018-02-13 14:30, To: 2026-02-20 22:00, Bars: 100000 | ||
| + | </ | ||
| Output validation: | Output validation: | ||
| + | <code text> | ||
| ... | ... | ||
| Market : Premium Data NZDUSD M30 | Market : Premium Data NZDUSD M30 | ||
| Line 32: | Line 64: | ||
| Spread : 10, Swap long: -4.16, Swap short: -4.16, Commission: 6 USD | Spread : 10, Swap long: -4.16, Swap short: -4.16, Commission: 6 USD | ||
| Account: 10000 USD, Leverage: 100, Entry: 0.01 lots | Account: 10000 USD, Leverage: 100, Entry: 0.01 lots | ||
| - | | + | |
| - | - Passed: 12, Calculated: 100 of 100 | + | - Passed: 12, Calculated: 100 of 100 |
| - | + | ||
| Market : Premium Data EURGBP M30 | Market : Premium Data EURGBP M30 | ||
| From : 2018-02-13 17:00, To: 2026-02-20 22:00, Bars: 100000 | From : 2018-02-13 17:00, To: 2026-02-20 22:00, Bars: 100000 | ||
| Line 40: | Line 72: | ||
| Account: 10000 USD, Leverage: 100, Entry: 0.01 lots | Account: 10000 USD, Leverage: 100, Entry: 0.01 lots | ||
| ... | ... | ||
| + | </ | ||
| Output stats and collection: | Output stats and collection: | ||
| - | | + | <code text> |
| - | + | Multi-Market validator ready! | |
| - | 34 of 100 strategies passed | + | |
| - | 43 of 100 strategies passed | + | 34 of 100 strategies passed |
| - | 15 of 100 strategies passed | + | 43 of 100 strategies passed |
| - | 3 of 100 strategies passed | + | 15 of 100 strategies passed |
| - | 5 of 100 strategies passed | + | 3 of 100 strategies passed |
| - | + | 5 of 100 strategies passed | |
| - | Count of strategies: 5 | + | |
| - | Collection exported: collections/ | + | Count of strategies: 5 |
| + | Collection exported: collections/ | ||
| + | </ | ||
| + | |||
| + | ===== Settings and priority ===== | ||
| + | |||
| + | Multi-Market reads settings in this order (lowest to highest priority): | ||
| + | |||
| + | * default settings file: '' | ||
| + | * user settings file(s): '' | ||
| + | * CLI options: for example '' | ||
| + | |||
| + | Settings keys can be in snake case, camel case, or pascal case. | ||
| + | |||
| + | When several files are passed with '' | ||
| + | |||
| + | Common aliases are accepted: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | ===== Settings topics ===== | ||
| + | |||
| + | Dedicated Multi-Market pages: | ||
| - | ===== Settings Files ===== | + | * [[mm-initial-data|Initial data set]] |
| + | * [[mm-fetch-parameters|Fetch parameters]] | ||
| + | * [[mm-test-markets|Test markets]] | ||
| + | * [[mm-tests|Multi-Market tests]] | ||
| - | The Multi-Market | + | Shared settings pages used by Multi-Market: |
| - | **mm.js** loads the default | + | |
| + | | ||
| + | | ||
| + | | ||
| + | * [[trading-session|Trading session]] | ||
| + | * [[account-settings|Account settings]] | ||
| + | * [[backtester|Backtester]] | ||
| + | * [[acceptance-criteria|Acceptance criteria]] | ||
| + | * [[miscellaneous|Miscellaneous]] | ||
| + | * [[settings-files|Settings files]] | ||
| - | Here we load custom settings file '' | ||
| - | node ./bin/mm.js --settings mm.ini --symbol GBPUSD | + | ===== Related scripts ===== |
| - | We can give several settings files. The later overrides the previous ones. | + | * [[fetch-js|Fetcher (fetch.js)]] |
| + | * [[gen-js|Generator (gen.js)]] | ||
| - | node ./bin/mm.js --settings mm.ini gbpusd.ini | ||
| - | |||