During coding and testing of my software I hit some issues with performance and wasn't able to find suitable answers here on the forum. Maybe the one or other could explain the behaviours that I run into:
Does not support hedging orders on a single symbol on MT5
MultiMTCopier MT5Source - new and improved multi-terminal positions copier for your real / demo account, works faster, requires less, flexible in managing and upgrading, new information support. This expert is designed for terminal MetaTrader5 from which the position will be copied.
The EA will copy all positions without delays Additionally integrated notification in situations requiring user attention Buttons for re
The most profitable trend traders are the ones who know how to recognize not only the market trend, but also the trading opportunities that arise once a trend has been established. The Pz Trend Trading indicator has been designed to profit has much as possible from trends taking place in the maket.
Established trends offer dozens of trading opportunities, but most trend trading indicators neglect them completely, and leave the trader completely uninformed about what the market is doing during a
Trade Copier Pro is a powerful tool to copy trade remotely between multiple accounts at different locations over internet. This is an ideal solution for signal provider, who want to share his trade with the others globally on his own rules. One provider can copy trades to multiple receivers and one receiver can get trade from multiple providers as well. The provider can even set the subscription expiry for each receiver, so that receiver will not be able to receive the signal after that
Easy Order is an Expert Advisor allowing you to enter any type of trade with one click based on your RISK preferences.
You can choose to enter a trade and automatically calculate your lot size based on how much of your account you want to risk. Risk is calculated based on your Stop Loss placement. You can use a fixed lot size if you don't want to use risk based calculation of lot size. Your previous setting of risk based or fixed lot size remains saved for your next use of this Expert Advi
The indicator displays the current market information about the recent trades (their direction and volume).
BackColor - general background color of the indicator; AboveAskBackColor - background color of the line with information about the last trade in case it was performed at the price above Ask; AboveAskFontColor - color of the text entered in the line with information about the last trade in case it was performed at the price above Ask; AtAskBackColor - background color of the
The script is intended for automatic placing of Buy Stop pending orders, Stop Losses and Take Profits on the user specified levels.
Avoiding unwanted entering a long position in case of false hitting the level as a result of widening of the spread by a dealing center. Avoiding unwanted triggering of a Stop Loss in case a quote pierces a significant level (fractal) without further confirmation with the close price. Setting a necessary virtual order and entering the market in
We present you an effective software solution for arbitrage between brokers.
The Arbitrage on the market became widespread due to decentralization. There are many liquidity providers, whose quotes differ for various reasons. By tracking the dynamics of changes in the quotes of different brokers, it is possible to determine the delayed and leading brokers, thereby predicting the future prices of the delayed broker for a short time. Knowing these prices and using efficient built-in software filte
The script creates account summary report in a separate window.
The report can be created for all deals and on deals for selected financial instruments.
It is possible to specify a time interval of calculation and save report to htm-file.
The script creates account summary report in a separate window.
The report can be created for all deals and for deals of the selected financial instruments.
It is possible to specify a time interval of calculation and save report to htm-file.
Auto Trade Copier is designed to copy trades between multi MetaTrader 5 accounts/terminals with 100% accuracy.
With this tool, you can act as either a provider (source) or a receiver (destination). All trading actions will be copied from the provider to the receiver with no delay.
Note: Demo version for testing can be downloaded at: https://www.mql5.com/en/market/product/5006.
Followings are highlight features:
Switch between Provider or Receiver role within one tool.One provider can copy tr
DeltaVolumeDistribution indicator can be considered as the fusion of the DeltaVolume and TradeSizeDistribution indicators.
This indicator, inspired by the MarketDelta-family charts, computes the net difference between trades occurring at bid and at ask, while trades occurring between bid and ask quotes are not computed. The indicator plots the resulting DeltaVolume as a unique distribution plot.
With the DeltaVolumeDistribution indicator you will actually be able to see the order flow entering
COSMOS4U Volume indicator facilitates your trade decisions. It gives confirmation of the running movement and market trends. It highlights current and past accumulation and distribution volumes, comparing them to moving average volume and the highest volume. In addition, it identifies and marks nuances as well as convergence and divergence patterns of bears and bulls in order to provide the market trend and price ranges.
The supported features are as follows:
Fast Volume Moving Average Slow
About the PAM (Price Action Master) EA Series
These multi-symbol multi-time-frame bots enter on high probability engulfing bar and shooting star/hammer/pin bar patterns with a stop order. (Delays won't matter, slippage and spread not a big deal on larger time-frames.) They may consider up to 4 secondary time-frames in their analyses and score of space, trend, quality of bar, quality of important locations, big round numbers and quality of pullbacks. These bots can print a special csv log f
MACD All MAs-14 is a MACD indicator that allows choosing usual parameters of the standard MACD (constructed from EMA) as well as the type of the moving average to be applied: up to 14 different types.
You can select 9 standard MAs available in MetaTrader 5 - SMA, EMA, SMMA, LWMA, DEMA, TEMA, Frama, VIDYA, AMA, TRIX, and 4 non-standard - LRMA, HMA, JMA, AFIRMA.
Method MA - select the type of moving average to be displayed in the current graph. Period slow MA - the number
Exp COPYLOT CLIENT for MT5 is a copier for the МetaТrader 5 platform. It copies forex trades from any accounts. Including those from terminals МТ5 and МТ4.
Install the Expert Advisor in the terminal where you want to copy trades. Specify any text label name as pathRead, for example, "COPY". This should match the master terminal (to bind the two terminals). To copy trades, you need to install the free Master copier in the terminal from where you want to copy the trades: COPYLOT
The fractal analysis of the markets is used in the indicator operation algorithm. According to the fractals theory, after the breakthrough of the fractal level confirmed by the closing price located below or above the fractal, the trend wave in the direction of the breakthrough starts to develop. Until the fractal has been passed in the opposite direction, the trend is considered to be acting even if the price is flat or moves backwards. If a bullish fractal has been previously broken through on
Auto Trade Driver is an automatic powerful tool (run as Expert Advisor) that helps you to manage risk and control orders and maximize your profit in multi-protect/trailing-stop rules.
This tool is very useful for both scalpers and trend followers. It not only calculates the trade risk exactly, but also protects and maximizes your profits in real-time.
With this tool, the only thing you have to do is to enter trade by your own strategy, then it will auto-drive your position with exit strategy y
The main purpose of the indicator is to detect and mark on a chart the following trade signals described in "New Trading Dimensions":
Bullish and bearish reverse bars with angulation (including squat). Bars in the green and red zones according to the histogram color of Awesome Oscillator and Accelerator Oscillator. Bars in the grey zone, when the Awesome Oscillator and Accelerator Oscillator histograms below these bars have opposite directions. Blue squat bars on chart independent of the
The indicator displays economic news on the currency chart (the appropriate data must be downloaded from the Internet - please see the download instructions on the screenshots provided). The list of currencies (countries) is customizable. By default it shows all currencies. The main parameters come with a built-in description. In addition, there are parameters for advanced users. News items are divided into 3 categories by degree of importance. There is a great flexibility in display parameter s
The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips.
Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script.
Safe Automatic is a safe MetaТrader 5 trading robot working autonomously on a VPS server. The good results are achieved on EURUSD.
The EA applies modified versions of a trend-following strategy, half-pyramiding, scalping, Elliott Wave method and speculating trading with a deposit protection. The EA switches the strategies automatically. The program also takes the news calendar into account: the robot does not enter the market in a 10-minute interval before and after a news rel
Does not support hedging orders on a single symbol on MT5
MultiMTCopier MT5Receiver - new and improved multi-terminal positions copier for your real/demo account, works faster, requires less, flexible in managing and upgrading, new information support. This Expert Advisor is designed for the MetaTrader 5 terminal, trades will be copied into this terminal.
The EA will copy all positions without delays Additionally integrated notification in situations requiring user attention
The trading robot opens and closes positions by the indicator signals - buys at support levels, sells at resistance levels, which allows to capture large movements. It has the option to close positions by take profit and stop loss. When new signals appear the EA adds orders. When an opposite signal appears: if the order basket is in profit, then the EA closes it; if the basket is in loss, the robot opens opposite orders. The EA settings can be adjusted right from the chart. The EA also features
The Expert Advisor implements the classic "triangular arbitrage", which is successfully used by hedge funds.
"Triangular" arbitrage refers to a class of neutral-market strategies, in which the profit or loss of open positions does not depend on the direction of the market movement as a whole.
In order to take profit, the EA exploits a weak spot of market makers - it utilizes the difficulty of balancing cross rates of all currency pairs.
The advantages of the strategy are the following:
The indicator represents an additional chart window with a lower time frame where bars are combined into groups that are equivalent in time to main chart time frame. Bars are synchronized by the right hand side of the window, i.e. the time of the last bar in the main window corresponds to the time of the last bar group in the additional window. The maximum number of groups is 16; the maximum number of bars combined into groups in the additional window is 256. Limitations on the numbers are requi
Pipfinite creates unique, high quality and affordable trading tools.
Our tools may or may not work for you, so we strongly suggest to try the Demo Version for MT4 first. Please test the indicator prior to purchasing to determine if it works for you.
We want your good reviews, so hurry up and test it for free...we hope you will find it useful.
Breakout Analyzer with Volume Critical
Strategy: Enter confirmed reversal setups Watch Video: (Click Here)Breakout Analyzer with Strength
Percent Crosshair is a powerful and easy percentage measure tool.
Measure the chart percentage very quick! Don't waste your time anymore!
Just attach the Percent Crosshair indicator in the chart, select crosshair mode at toolbars or press "Ctrl+F" and start using the crosshair as you always do! The percent measure will be next to the indicative price.
Customize your indicator the way you want!
There are 4 entry parameters:
Positive % color: set the desired color when % is positive. Negat
This indicator allows you to enjoy the two most popular products for analyzing request volumes and market deals at a favorable price:
Actual Depth of Market Chart Actual Tick Footprint Volume ChartThis product combines the power of both indicators and is provided as a single file.
The functionality of Actual COMBO Depth of Market AND Tick Volume Chart is fully identical to the original indicators. You will enjoy the power of these two products combined into the single super-indicator!
The script is intended for automatic placing of Sell Stop pending orders, Stop Losses and Take Profits on the user specified levels. This script is not that useful as "Virtual pending buy stop", since short positions are opened as Bid price crosses the levels. Thus spread widening is not dangerous. Nevertheless, you need to have this script to prevent unwanted hitting of the Stop Loss levels.
Automation of the process of placing the Sell Stop pending orders, Stop Losses and T
This indicator extracts a trend from a price series and forecasts its further development. Algorithm is based on modern technique of Singular Spectral Analysis (SSA). SSA is used for extracting the main components (trend, seasonal and wave fluctuations), smoothing and eliminating noise. Does not require the series to be stationary, as well as the information on presence of periodic components and their periods. It can be applied both to price series and to the data of other indicators.
Fast Copy MT5 allows to copy trades between different MetaTrader 5 (netting)(hedge) and MetaTrader 4 accounts in any direction and amount, quickly and easily (without loading the system).
Any type of copying is available
MT5 —> MT5 MT5 —> MT4 MT4 —> MT5 MT4 —> MT4
* For any interaction with the MT4, it is necessary to additionally install Fast Copy MT4
One tool for sending and receiving transactions: [master] > [slave] operation mode can be selected in
Using a moving average indicator as an example
If it is on a H1 chart, it does its calculations using data from the H1 chart
If the chart is chaged to H4, it will do the same calculations but using the data from the H4 chart
The indicator is no longer doing anything with the H1 data.
Thank you for your explaination. Though I wish this would have been officially written down somewhere. The performance bottlenecks could be avoided that way. Because of lack of information and documentation of this "situation" leads into misbehaviour of the indicator, missunderstanding of the initialization / deinitialization process etc. (Well I know what initialization and deinitialization is, but in the context to time frame switches and Metatrader this was unclear).
It was not known to me, that by switching the time frame, that a whole "new" initialization process is being started. I assumed that the indicator is valid "per chart". E.g. If I open EURUSD (as special example) that the indicator is valid for this chart over all time frames. I assumed that once the indicator is loaded that it get's initialized, loops through the main process and during removal being deinitialized. So from what I learn now ist this: EURUSD -> H1 -> OnInit(H1); -> OnCalculate(H1); -> (switching to H4) -> OnDeinit(H1); -> OnInit(H4); -> OnCalculate(H4); -> (switching to any other time frame) -> OnDeinit(H4); ... and so on ... This certainly is the MT4 programmed behaviour but not the - for me - expected behaviour.
Of course I understand that by using a different time frame that the "moving average indicator" will take e.g. H1 values for the H1 chart and H4 values for the H4 chart. But then this is why one uses 0 as 2nd parameter of the iMA function, so when the time frame is switched that it receives the correct values.
I wonder what happens if you switch TABS (charts bar). Running the chart window in full screen and then switching from one currency pair to another one takes another huge amount of CPU load AND time for the switch itself. It's unknown what Metatrader does interally. Refresh ? Re-Inizialize ? etc.
For my "performance" issues I might think about an alternative approach to come over these bottlenecks. Solutions would be:
... hrmmm not my day today ...
1. Regarding OnInit(), you can have a boolean flag so that initialization will not take place each time you change a timeframe or similar. For example, when you load your program, flag can start with 0 (zero) and after initialization finishes, you turn it to 1. At that point, each successive OnInit() call will be directed to another part of OnInit(), presumably simpler than the initial one.
2. Regarding optimizations, OnCalculate() will normally run on every tick; my question is, do you really need to calculate in every single tick? I believe the answer is "usually I do not". So you can either use OnTimer() for your work, or put a Sleep() inside OnCalculate(). That way, your program can become orders of magnitude more efficient and without sacrificing a big part of your powers :) Normally, indicators would not need much time to calculate on today's computers, so even half a second should be much more than enough for most of them. In any case, you are possibly having the option to purchase a faster computer - unless of course you do have that one already :)
Yes I am aware of the "locking" system (Singleton). This will work perfectly at 1st time initialization. But my use case is this:
OnInit(); -> Create 35 Labels in a for loop.
OnDeinit(); -> Delete 35 Labels in a for loop (Or deletall).
Right now in my mind is this. If I use the Singleton to prevent Objects from being re-created within the OnInit(); function when I switch time-frame. But switching the time-frame will call the OnDeinit(); function. What I can do is, check for the Singleton there as well and prevent the objects from being deleted (or have the entire deleting mechanism removed). But this leads that the objects are being stored in the *.chr files in the profiles directory once I exit metatrader. Storing the information there is what I don't want. I can use the Singleton, which clearly saves a shitload of time when switching time-frames (since it doesn't need to remove and recreate the objects over and over again). But I need to think of a way - I haven't looked at it right now - to receive a signal for metatrader termination, so OnDeinit(); receives the flag and deletes the objects. I am still making up my mind to seek a different approach.
Yes the data visualization doesn't need to happen within Ticks. Some stuff is being laid out into OnTimer(); (clock, news) some in OnCalculate(); (atr, ema calculations etc). This luckely isn't the problem. The problem was that I wasn't aware of the context switching (e.g. new Init and Deinit) once you switch time-frames. I thought that init/deinit happens only once for the entire chart.
I have written a small context tester that proves this (attachment). Nothing special but ok for the needs.
Coming back to the point of "do I need the information all the time (tick)". The question should be rephrased to "do I need that information on all charts (running in the background to some degree)". Therefore it might be an exercise to outsource the entire indicator into a separate application by creating an RPC including socket communication. So whenever I switch time-frame data only is being sent. No need to deal with objects and other stuff. No need to use windows api to load external resources etc. This will make "my special requirements" less dependant to metatrader at the end (in case the entire MT4 API is being trashed once again or in case I need to switch to another charting software). An external GUI application (which I can program native on Linux using GTK+ for example) that listens to a socket (which will be opened through the *.mq4 file) and then sents all data.
Ok, you may want to look out for _StopFlag. I have not done it my self, but it seems it can be useful ; I suppose you can leave the OnDeinit() free of having to delete the labels and perform your own deinitialization logic inside OnTimer(), OnCalculate() or wherever
edit. I wish to correct my self. You can not propably check for _StopFlag inside OnTimer() or the others, but only inside OnDeinit(). It should be so because when you are closing the program, Metatrader calls OnDeinit; so, by checking for _StopFlag inside there you can understand if OnDeinit was called by a e.g. timeframe change or because of unloading or exiting
Yep, I tried UninitReason as well and it seems to do the trick , unlike StopFlag (which is strange , by the way - i mean , it should work), and in addition it gives some more options
Please find attached a code fragment, that helps you to boost up your indicators. The code example is neither perfect nor do I claim it to be the "best" solution.
As explained above, the use case was as follows. Let's assume you have 10 currency pairs open in metatrader. Each chart window (where a currency pair will be made visible) is running one or more indicators. In my case it's an information provider. This information provider creates say 35 Labels and fills the values with information that I think I need. On exit (metatrader being closed) these 35 Labels should be removed once again because I dislike having them in the *.chr files.
The indicator does various "time consuming" tasks and with 10 currency pairs open, all these tasks run simultaneously. No matter whether you pay attention to all chart windows at a time or not. In most cases you focus your attention to one or two chart windows at a time. Both chart windows might show similar information. But in the background all indicators are operating and updating their visible data. This of course drains CPU performance.
Another issue is, that while we all happily switching time frames from H1 to H4 to M1 to M5 to MN1 and so on, the internal mechanism of metatrader happily runs OnInit();, OnDeinit(); creating and trashing all objects that we previously build up. Now imagine that your OnInit(); might also initially load up files, pulls information from a webpage and so on. Now each time you switch the time frame all this stuff happens over and over again. This of course drains CPU performance once again.
Another issue is, in case you have your charts running in full screen is the question whether updating the other indicators (in the hidden window) is necessary ? Sure, if you have an indicator that needs to "alert" you a state, then this is of course a must. But if you have an indicator that shows you the time and some news, then this is not really necessary. Running tasks in hidden windows of course drains CPU performance.
A possible solution would be to install a Singleton, that only creates the objects on program launch and removes the objects on program termination (but not during change of time frames). Another solution (basicly an add on) would be to offer the possibility to update the indicator contents - only - if the window has the focus.
The Boost.mq4 skeleton could come handy here. I hacked this together because I need to solve a quick scene, to get my things going on, until I figure out a different approach or way of handling all this. I will now adopt this to two of my own indicators and see how things progress.
Update 1: Code slightly modified.
Update 2: While the previous update required an explicit window focus to do some tasks, this version checks if the window is the top most window in the Z axis. So the top ancestor window will be updated all the time. This makes sense, in case you switch to another program (e.g. browser, mailer, editor etc.) while still being able to keep an eye on the charts and still have it updating.