Interview with Stanislav Starikov: Features of New MQL5 - page 15

 

What I hate at strategy tester:

1. Lack of multi-asset backtesting

2. It creates every time a new window instead of reusing

3. I have to manually place the indicators every time it creates a new window.

 
TheEconomist wrote >>

3. I have to manually place the indicators every time it creates a new window.

Why?

Save your chart with the all nesessary indicators as <your_tested_expert>.tpl. And this template will be used at the testing visualisation automatically

 
TheEconomist:

What I hate at strategy tester:

1. Lack of multi-asset backtesting

2. It creates every time a new window instead of reusing

3. I have to manually place the indicators every time it creates a new window.

What ones loves the other one hates.

1. Agree, this would be useful, however right now I use 3rd parties tools and can live with it.

2. This is very useful form me, this way I can compare different runs visually very efficient. It would be a real pain if the strategy tester would reuse the same window.

3. I've read the manual and created templates.

 
TheEconomist:

So that means that current position on all contracts must be found by the station by requesting all orders that were opened on that account, from its opening to the current time, add lots on long trades and subtracting the short ones. I wonder how would that would work when a high frequency system will make a few hundred trades daily. Second, there will be a problem with pending orders. If you open a pending buy and a pending sell, the system should report no trades. [...]

See 'MetaTrader 5 Client Terminal'. Confirms that positions will be calculated by the platform ("Any financial security can have only one position"), rather than being controllable by individual EAs. Many, many implications for EA developers. For example, I'd guess this means that OrderClose() will either cease to exist, or will simply become alternative syntax for placing a market order in an opposite direction to an existing order. The screenshot in this new topic also only shows one open order on each symbol. Again, I'd guess that orders are moved into "history" once they are netted off against other orders - i.e. the equivalent of MODE_TRADES will only ever report either long or short orders for a symbol, not both. Or, perhaps, this is now listing the positions on each symbol, rather than individual orders making up those positions.

 

This has been mentioned before but time goes by as do design team expectations.

1. will current MetaTrader 4 continue to be available for trading and auto trading?

2. will MT4 Broker interactions be accepted or will Brokers reject MT4 client interactions?

iow, if some users would like to continue using MT4 client will it be "service as normal" ?

 
jjc:

 Many, many implications for EA developers. For example, I'd guess this means that OrderClose() will either cease to exist, or will simply become alternative syntax for placing a market order in an opposite direction to an existing order.

Well, it might not have so many implications. So, in that example, Lenar showed us 2 lots buyed and 3 sold, in 3 orders. Yes, position reported is only one lot buyed. But reported to who? To the broker or to the trader? Because when you OrderClose the last one of 3 lots, it will close 3 lots, and 1 lot. What you suggest, is that orders vanish in the new "mt5 order", they "depersonalize" once they are opened, and trader only gets his current position. There would be no active trade management, management would apply only to pending orders. However, I think the job is done well, what broker gets in reports is just "position fluctuation", rather than trade flow.

Let's say you have:

Market @1.2800

Pending buy @1.3000

Pending buy @1.3100

Pending sell @1.2700 2 lots

This would look in position fluctuation like this:

Long 1 @ 1.3000

...

Long 2 @ 1.3050 

Close position 2 lots @ 1.2700

When trader closes with an OrderClose() the last order @ 1.2500, it would be reported as:

Long 2 @ 1.3050 (previous long positions unhedged)

Take profit 200 pips for 2 lots 

 
TheEconomist:

What you suggest, is that orders vanish in the new "mt5 order", they "depersonalize" once they are opened, and trader only gets his current position.

No, what I'm suggesting is as follows. Let's say that there are two EAs, both trading the same symbol (e.g. EURUSD). EA #1 goes long, EA #2 goes short. MT5 will report that there is no open position on EURUSD - "Any financial security can have only one position". However, each EA will (need to) be tracking the orders it has placed; will (need to) maintain an internal record of its own position based on the status of those orders; and will (need to) act accordingly. EAs will still presumably have access to the details of individual orders, but will be responsible for maintaining their own position calculation.


The crucial point about the "Sell 3.00 EURUSD" column in the table in 'MetaTrader 5 Client Terminal' is that the sell can't be "closing" the buy orders, because the buys could have been placed by different EAs. Therefore, the possible states of an individual order are now only either pending or filled. An order can no longer be "closed". As a result, the meaning of OrderClose() has to change - or the function simply becomes redundant.


To put it another, with a concrete example, the table in 'MetaTrader 5 Client Terminal' looks identical to the way something like Ninjatrader handles orders versus positions. Ninja has no "close" operation (other than a "flatten" for returning an entire symbol position to zero), because such a thing has no meaning in its order-based model.


The other interesting thing about the screenshot in 'MetaTrader 5 Client Terminal' is that the pending orders have ID numbers associated with them, whereas the filled orders (at the top of the list) do not. This implies that the filled orders are actually positions, potentially made up of multiple orders (in the same direction). The interesting thing then is how they can have a t/p or s/l given that a position of 1.00 long could be made up of two 0.50 longs, each with a different t/p and s/l.

 

Well, if trades are not depersonalized and are still available, the EAs will work like now, scanning the orders to see which one matches is own (by checking magic number).

In other words, even if the station will give the broker a "position flow statement", the client's way of interaction with the trades remains intact. 

 
TheEconomist:

Well, if trades are not depersonalized and are still available, the EAs will work like now, scanning the orders to see which one matches is own (by checking magic number).

In other words, even if the station will give the broker a "position flow statement", the client's way of interaction with the trades remains intact. 

There's a problem with this which goes back to our earlier exchange of messages, and your very sensible query about "a high frequency system will make a few hundred trades daily".


If I'm right about orders being pending/filled rather than pending/filled/closed, then there is no longer a distinction between MODE_HISTORY and MODE_TRADES. There are only pending orders and filled orders. Under these circumstances, the typical MT4 behaviour of scanning order history becomes very, very bad practice - you could potentially be looking through 100,000 historic orders (on every tick) to find the ones which match your magic number. An EA will instead need to maintain state information, and persist it somewhere.

 

You see things correctly, however you mix them up.

You're right, in a position flow system there is no closing, also no distinction between MODE_HISTORY and MODE_TRADES.  However, in the position flow system also there are no pending orders. Because whatever is not filled does not produce a position modification so does not even exist. The order mechanism is just translated to position flow. That's why MT will not look back 100,000 historic orders. Also, the order selection stuff is a pain for both programmer and computer... It knows, in the order pool, which orders are open and which are closed. No need to look over position modifications. There is no need to even compare to NinjaTrader. NinjaTrader is a speedy futures platform. It was made to help traders scalp futures markets, open and close trades quickly - also, where available, working on the L2 level, quoting bids or asks - not using complex expert advisors and complex exposure, with lots of market and pending orders, each with its own purpose. Look at my previous example of how order mechanism is translated into position flow: At the point I close the sell@1.2700 at 1.2500, the position is updated with long 2 orders @ 1.3050. But market is at 2500, client having instantly a net loss 550 pips for 2 lots. It's true, I'm abiding the position flow rule ; but who says prices are always new? Position becomes long again, but taken at a previous price, because it was the client's hedge...

Reason: