<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forex Software — Multi-Market validator in Express Generator]]></title>
	<link rel="self" href="https://forexsb.com/forum/feed/atom/topic/10045/" />
	<updated>2026-02-18T07:25:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forexsb.com/forum/topic/10045/multimarket-validator-in-express-generator/</id>
		<entry>
			<title type="html"><![CDATA[Re: Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83127/#p83127" />
			<content type="html"><![CDATA[<p><strong>--test-symbols auto</strong></p><p>The &quot;auto&quot; option is useful when we use the Multi-Market validator in an automated workflow with input strategies with various symbols.</p><p>We can use <strong>--test-symbols auto</strong> only when the main symbol of the input collection is a valid Forex symbol.</p><p>The program selects the test-symbols in the following order:<br /> - symbols with the same quoted (underlying) currency &quot;USD&quot; for EURUSD<br /> - symbols with the same base currency &quot;EUR&quot; for EURUSD<br /> - symbols with quoted currency equal to the base currency of the main symbol<br /> - symbols with base currency equal to the quoted currency of the main symbol<br /> - some of the rest symbols</p><p>The symbols are selected from the list of symbols provided by the server.</p><p>The count of the symbols is determined by the count of the combinations of test-servers and test-periods, and the required count-of-tests.</p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-18T07:25:47Z</updated>
			<id>https://forexsb.com/forum/post/83127/#p83127</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83126/#p83126" />
			<content type="html"><![CDATA[<p>The Multi-Market tool can automatically set testing symbols and export a collection of the strategies that passed.</p><p>Here is a demo command:</p><div class="codebox"><pre><code>express-generator&gt; node .\bin\mm.js                  ^
    --server Premium                                 ^
    --symbol EURUSD                                  ^
    --period M15                                     ^
    --max-data-bars 100000                           ^
    --input Coll_[SERVER]_[SYMBOL]_[PERIOD].json     ^
    --test-servers Premium                           ^
    --test-periods M15                               ^
    --test-symbols auto                              ^
    --count-of-tests 8                               ^
    --output Coll_[SERVER]_[SYMBOL]_[PERIOD]_MM.json ^
    --min-passed-tests 5   </code></pre></div><p>With the following parameters &quot;--symbol EURUSD&quot;, &quot;--test-symbols auto&quot;, and &quot;--count-of-tests 8&quot;, Multi-Market will set 8 symbols automatically.</p><div class="codebox"><pre><code>         ..:: Express Generator Multi Market v2.69 ::..

Fetched: Premium Data EURUSD M15, From: 2022-02-14 14:15, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data GBPUSD M15, From: 2022-02-14 02:30, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data AUDUSD M15, From: 2022-02-14 12:30, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data NZDUSD M15, From: 2022-02-11 20:45, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data EURGBP M15, From: 2022-02-14 13:30, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data EURAUD M15, From: 2022-02-13 23:15, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data EURCHF M15, From: 2022-02-13 23:15, To: 2026-02-18 06:00, Bars: 100000
Fetched: Premium Data EURJPY M15, From: 2022-02-14 06:45, To: 2026-02-18 06:00, Bars: 100000

Multi-Market fetch ready!</code></pre></div><p>When completed, it will export a collection of strategies that pass at least 5 of 8 tests.</p><p><a href="https://image-holder.forexsb.com/store/exgen-mm-export-collection_mm.png"><span class="postimg"><img src="https://image-holder.forexsb.com/store/exgen-mm-export-collection_mm-thumb.png" alt="https://image-holder.forexsb.com/store/exgen-mm-export-collection_mm-thumb.png" /></span></a></p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-18T07:11:42Z</updated>
			<id>https://forexsb.com/forum/post/83126/#p83126</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83125/#p83125" />
			<content type="html"><![CDATA[<p>The Multi-Market shows some signs of life.</p><p>Here, I generate 100 strategies.</p><p>Generator command:</p><div class="codebox"><pre><code>express-generator&gt; node ./bin/gen.js `
    --server Premium `
    --symbol EURUSD `
    --period M15    `
    --output Coll_[SERVER]_[SYMBOL]_[PERIOD].json</code></pre></div><p>Generator output:</p><div class="codebox"><pre><code>                        ..:: Express Generator v2.69 ::..

    Market : Premium Data EURUSD M15
    From   : 2022-02-11 20:15, To: 2026-02-17 12:00, Bars: 100000
    Spread : 10, Swap long: -21.08, Swap short: 13.08, Commission: 6 USD
    Account: 10000 USD, Leverage: 100, Entry: 0.01 lots

    10358 ┤                         ╭╮    ╭────╮╭─     Net profit      353.77 USD
    10328 ┤                        ╭╯╰─╮╭─╯    ╰╯      Profit per day  0.24   USD
    10298 ┤                     ╭──╯   ╰╯              Profit factor   1.34   
    10269 ┤          ╭──╮  ╭────╯                      Max drawdown    77.19  USD
    10239 ┤         ╭╯  ╰──╯                           Max drawdown    0.75   %
    10209 ┤        ╭╯                                  Return/drawdown 4.58   
    10179 ┤       ╭╯                                   Win / loss      0.70   
    10149 ┤     ╭─╯                                    Max stagnation  414    days
    10119 ┤    ╭╯                                      Max stagnation  28.29  %
    10090 ┤   ╭╯                                       R - squared     64.48  
    10060 ┤  ╭╯                                        Max cons losses 4      
    10030 ┤╭─╯                                         Count of trades 509    
    10000 ┼╯                                           Avrg pos length 171    bars

  - Ascended: 343, Calculated: 17606, Time: 03:00 of 03:00, Coll: 100 

Collection exported: collections/Coll_Premium_Data_EURUSD_M15.json</code></pre></div><p>Then I run the new Multi-Market tool. The count of tests is determined by the combinations of servers, symbols, and periods. (18 in this example).</p><div class="codebox"><pre><code>express-generator&gt; node ./bin/mm.js                   `
    --server Premium --symbol EURUSD --period M15 `
    --input Coll_[SERVER]_[SYMBOL]_[PERIOD].json  `
    --count-of-tests 20                           `
    --test-servers MetaQuotes Premium             `
    --test-periods M5 M15 M30                     `
    --test-symbols EURUSD GBPUSD AUDUSD</code></pre></div><p>It fetches historical data:</p><div class="codebox"><pre><code>         ..:: Express Generator Multi Market v2.69 ::..

Fetched: MetaQuotes AUDUSD M5,  From: 2024-10-11 01:25, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes EURUSD M5,  From: 2024-10-10 22:45, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes GBPUSD M5,  From: 2024-10-11 01:35, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes AUDUSD M15, From: 2022-02-08 04:45, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes EURUSD M15, From: 2022-02-08 04:00, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes GBPUSD M15, From: 2022-02-08 05:15, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes AUDUSD M30, From: 2018-01-30 08:30, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes EURUSD M30, From: 2018-01-30 07:00, To: 2026-02-17 12:30, Bars: 100000
Fetched: MetaQuotes GBPUSD M30, From: 2018-01-30 09:00, To: 2026-02-17 12:30, Bars: 100000
Fetched: Premium Data AUDUSD M5,  From: 2024-10-14 17:30, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data EURUSD M5,  From: 2024-10-14 20:25, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data GBPUSD M5,  From: 2024-10-14 09:30, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data AUDUSD M15, From: 2022-02-11 18:30, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data EURUSD M15, From: 2022-02-11 20:15, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data GBPUSD M15, From: 2022-02-11 08:30, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data AUDUSD M30, From: 2018-02-08 07:00, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data EURUSD M30, From: 2018-02-08 10:30, To: 2026-02-17 12:00, Bars: 100000
Fetched: Premium Data GBPUSD M30, From: 2018-02-07 21:00, To: 2026-02-17 12:00, Bars: 100000</code></pre></div><p>Then it calculates the input collection against each market. It shows progress and stats for each calculations.</p><div class="codebox"><pre><code>...
Market : Premium Data GBPUSD M5
From   : 2024-10-14 09:30, To: 2026-02-17 12:00, Bars: 100000
Spread : 10, Swap long: -9.96, Swap short: -0.28, Commission: 6 USD
Account: 10000 USD, Leverage: 100, Entry: 0.01 lots

 - Passed: 7, Calculated: 100 of 100 

Market : Premium Data AUDUSD M15
From   : 2022-02-11 18:30, To: 2026-02-17 12:00, Bars: 100000
Spread : 10, Swap long: -11.18, Swap short: 2.52, Commission: 6 USD
Account: 10000 USD, Leverage: 100, Entry: 0.01 lots

 - Passed: 14, Calculated: 100 of 100 

Market : Premium Data EURUSD M15
From   : 2022-02-11 20:15, To: 2026-02-17 12:00, Bars: 100000
Spread : 10, Swap long: -21.08, Swap short: 13.08, Commission: 6 USD
Account: 10000 USD, Leverage: 100, Entry: 0.01 lots

 - Passed: 100, Calculated: 100 of 100 

Market : Premium Data GBPUSD M15
From   : 2022-02-11 08:30, To: 2026-02-17 12:00, Bars: 100000
Spread : 10, Swap long: -9.96, Swap short: -0.28, Commission: 6 USD
Account: 10000 USD, Leverage: 100, Entry: 0.01 lots

 - Passed: 19, Calculated: 100 of 100 
...</code></pre></div><p>The Multi-Market application shows stats when it finishes.</p><div class="codebox"><pre><code>Multi-Market validator ready!
  9 of 100 strategies passed  1 of 18 tests
 23 of 100 strategies passed  2 of 18 tests
 20 of 100 strategies passed  3 of 18 tests
 12 of 100 strategies passed  4 of 18 tests
 16 of 100 strategies passed  5 of 18 tests
  6 of 100 strategies passed  6 of 18 tests
  6 of 100 strategies passed  7 of 18 tests
  3 of 100 strategies passed  8 of 18 tests
  4 of 100 strategies passed 10 of 18 tests
  1 of 100 strategies passed 12 of 18 tests</code></pre></div><p>ToDo:<br /> - make it possible to select the test symbols automatically<br /> - make it export the output collection<br /> - inspect the code for issues and best practices<br /> - test for proper work on my workflow<br /> - prepare a release version and publish</p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-17T13:00:13Z</updated>
			<id>https://forexsb.com/forum/post/83125/#p83125</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83124/#p83124" />
			<content type="html"><![CDATA[<p>Thee new tool can fetch data and load collections</p><p><a href="https://image-holder.forexsb.com/store/ex-gen-multi-market-loading-data-and-collection.png"><span class="postimg"><img src="https://image-holder.forexsb.com/store/ex-gen-multi-market-loading-data-and-collection-thumb.png" alt="https://image-holder.forexsb.com/store/ex-gen-multi-market-loading-data-and-collection-thumb.png" /></span></a></p><p>It loads an input collection in a similar way as &quot;./bin/node.js&quot;.</p><p>The parameters &quot;&quot;--server&quot;,&nbsp; &quot;--symbol&quot;, &quot;--period&quot;, and &quot;--input&quot; serve to determine the input collection. I&#039;m using template variables in the example, but it can be a simple collection file path.</p><p>It shows loaded 28 strategies here. I&#039;ll make it showing the collection name also.</p><p>The Multi-Market markets are set as a combination of &quot;--test-servers&quot;, &quot;--test-periods&quot;, and &quot;--test-symbols&quot;. The program will load a combination of them (Cartesian product ) until it reaches the &quot;--count-of-tests&quot; value.</p><p>It loaded 8 markets because I set 4 symbols, 2 servers, and 1 period.</p><p>Here is more extreme example:</p><p><a href="https://image-holder.forexsb.com/store/ex-gen-multi-market-load-a-lot-of-data.png"><span class="postimg"><img src="https://image-holder.forexsb.com/store/ex-gen-multi-market-load-a-lot-of-data-thumb.png" alt="https://image-holder.forexsb.com/store/ex-gen-multi-market-load-a-lot-of-data-thumb.png" /></span></a></p><p>Here I intentionally skip fetching fresher than 20 minutes data. (loaded during the first example).</p><p>I mark the Monday complete.</p><p>Happy Trading!</p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-16T19:02:00Z</updated>
			<id>https://forexsb.com/forum/post/83124/#p83124</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83116/#p83116" />
			<content type="html"><![CDATA[<p>New Multi-Market script is introduced: <strong>.\bin\mm.js</strong></p><p>Intended usage:</p><p>With a custom settings file:</p><div class="codebox"><pre><code>node .\bin\mm.js --settings mm.ini</code></pre></div><br /><p>With CLI options:</p><div class="codebox"><pre><code>node .\bin\mm.js ^
  --input  Collection-[SERVER]-[SYMBOL]-[PERIOD].json    ^
  --output Collection-[SERVER]-[SYMBOL]-[PERIOD]-MM.json ^
  --server Premium     ^
  --symbol EURUSD      ^
  --period M15         ^
  --test-symbols auto  ^
  --count-of-tests   5 ^
  --min-passed-tests 3</code></pre></div><br /><p>By specifying the symbols manually:</p><div class="codebox"><pre><code>node .\bin\mm.js ^
  --input  Collection-[SERVER]-[SYMBOL]-[PERIOD].json ^
  --output Collection-[SERVER]-[SYMBOL]-[PERIOD].json ^
  --output-replace true ^
  --server Premium      ^
  --symbol EURUSD       ^
  --period M15          ^
  --test-symbols EURUSD GBPUSD AUDUSD USDCHF USDJPY  ^
  --count-of-tests   5  ^
  --min-passed-tests 3</code></pre></div><p>The input and the output formats will be as in the Generator &quot;gen.js&quot;.</p><p>For example, the upper <strong>--output-replace true</strong> serves to override the same strategy instead of adding a suffix to the name or using another naming format.</p><br /><p>The parameters &quot;server&quot;, &quot;symbol&quot;, and &quot;period&quot; determine the data origin, symbol information, and placeholders in the input/output templates.</p><p>The actual Multi-Market data are specified in the &quot;--test-symbols&quot; parameter.</p><p>There are two options:<br /> - &quot;auto&quot; - the program will select symbols automatically<br /> - concrete symbols:&nbsp; EURUSD GBPUSD AUDUSD USDCHF USDJPY</p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-16T07:50:50Z</updated>
			<id>https://forexsb.com/forum/post/83116/#p83116</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Multi-Market validator in Express Generator]]></title>
			<link rel="alternate" href="https://forexsb.com/forum/post/83115/#p83115" />
			<content type="html"><![CDATA[<p>Hello Traders,</p><p>I&#039;ve started working on a <strong>Multi-Market</strong> functionality for Express Generator.</p><p><strong>Why is it necessary?</strong></p><p>I&#039;m using Express Generator on two servers to generate and validate strategies for the <a href="https://top-10.forexsb.com/">Top 10 Robots App</a>.</p><p>My current workflow is:<br /> 1) Generate strategies for each symbol and period (16 symbols and 4 periods). The Generator exports collections with capacitty of 1000 strategies.<br /> 2) Validate the strategies against the Acceptance Criteria (AC). The exported collections are up to 100 strategies.<br /> 3) Validate the AC collections with Monte Carlo (MC).<br /> 4) Cross-validation - Validate passed MC collections with data from another server sequentially. I validate M15, M30, and M30 on one additional server, and M5 on 5 servers. M5 collections also go to an application called <a href="https://prop.forexsb.com/">Prop Firm Robots</a>.<br /> 5) All new strategies are validated with already collected strategies.</p><p>My Acceptance Criteria are rather strict, and only a few strategies can progress through the workflow.</p><p>Now I decided to change the approach. Instead of throwing off the strategies at the beginning of the workflow, I want to reduce the AC and to move it into the Application itself.<br />Instead of strict AC, I want to use a Multi-Market validation, like:<br /> 1) Generator<br /> 2) Monte Carlo<br /> 3) Multi-Market<br /> 4) Cross-validation<br /> 5) AC in the applications</p><p>The problem is that the current implementation of Express Generator makes it easy to do sequential validations:<br /> - generate<br /> - test on the market A<br /> - which pass A, test on market B<br /> - ...</p><p>We cannot test strategies on 5 markets and take those that pass 3 markets.</p><p>I&#039;m going to solve that problem this week.</p>]]></content>
			<author>
				<name><![CDATA[Popov]]></name>
				<uri>https://forexsb.com/forum/user/2/</uri>
			</author>
			<updated>2026-02-16T07:41:46Z</updated>
			<id>https://forexsb.com/forum/post/83115/#p83115</id>
		</entry>
</feed>
