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:
The indicator is based on the comparison of the correlation of trading instruments following an original algorithm. It determines the difference between correlated contracts (delta). The greater the difference, the more it is likely that this Delta will return to zero.
More suited to the FORTS market.
The greater the deviation from zero, the more it is likely that the price will return to zero. Also, the indicator divergence can be applied by comparing highs and lows.
Fast Copy MT5 allows you 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
MT4 → MT5 MT4 → MT4 MT5 → MT5 MT5 → MT4
* For the MetaTrader 4 terminal — Fast Copy MT4
* For the MetaTrader 5 terminal — Fast Copy MT5
** Before the purchase, you can test the program by downloading the free demo versions — Fast
The indicator has standard settings. The new modification of indicator provides special marking of the segment when the moving averages begin to form a cross in one direction or another. The Alligator`s cross indicates that the trend is about to change. Modified Alligator helps traders to determine a trend on a particular timeframe even if the averages are intertwined and have a shift in the future. Direction of a trend is determined by a cross of the averages with a specified marking area on th
The EA implements a reversal strategy which uses the analysis of prices databases of ENUM_APPLIED_PRICE type for generating signals. Statistical observations of the price databases of different timeframes allows to make an assumption about a possible vector of price movement. The probability of such an event is shown as scale and as a percentage. The functionality of the trade panel allows sending requests for the broker to execute trading operations. This EA uses market orders. You can addition
Another breakthrough. Using the legendary BBSO range trading module the no 1 ROBOT AND THE AMAZING SPEED OF METATRADER 5, this scalper generates a lot of quick trades in and out using the strongest point of BBSO the ENTRY.
Self-optimizes in seconds ANY Pair on any timeframe (always check with Olivier Nomblot for current settings and pairs).
No special CPU needs or fast internet connections or set files or strategies or complicated parameters. Adapts to your broker... just drag on your screen.
Purpose and functions of the indicator
The indicator determines and marks the moments of trend change on a chart based on the theory of fractal levels breakdown on any time frames. If a breakdown based on all rules is real, the horizontal lines will appear on the chart with corresponding color. If there is an up trend, the line will be blue. In the descending trend the line will be red. The blue line is a strong support level, the trader should look for buying opportunities above this line. The
The Expert Advisor for increasing (or opening) market positions.
Allows specifying the desired risk, target and searching for the best open price and trade volume.
It is included in the ActivePanel product.
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
qAutoActivation indicator is one of the main components of Trading Chaos Expert trading expert panel. The indicator displays the current trend on the current timeframe. This is the first indicator that is attached to the chart and saved in the trading complex template. It defines what trading signals from the expert panel should be automated for market entry (bullish or bearish ones).
When the trend changes, the indicator changes the line color and, at the same time, highlights the trading pane
Displays divergence for any custom indicator. You just need to specify the name of an indicator name; on default it uses CCI.
In addition you can set smoothing for the selected indicator as well as levels. If one of these levels is crossed, you'll receive a notification. The custom indicator must be compiled (a file with extension EX5) and it must be located in MQL5/Indicators directory of the client terminal or in one of its subdirectories. It uses zero bar of the selected indicator with defau
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
This is a half scalping system that analyzes the market using a transmission function. The system can be scalping or not depending on the "takeprofit" and "stoploss" parameters.
This Expert Advisor is intended for trading on EURUSD, however it can work on other currency pairs. You should use timeframe M1 for trading.
You should optimize only two parameters: Seconds_to_move and TradePrice. It is sufficient to optimize Bobra Adept only once, for example, for a half year period. After that, Bobra
The economic calendar is made in the form of an Expert Advisor that downloads the data from one of the most popular Forex sites (forexfactory.com/calendar.php). The data is presented in two ways. The first (primary) is represented as icons with detailed information about the event. The second is displayed as a line with a news description. Economic Calendar downloads published news in real mode with the possibility to adjust the spacing of data validation and user-friendly customizable graphical
The Synchronized Charts script allows comparing bars of different symbols or different periods of the same symbol.
Attach the script to a chart and move bars or change the scale, all opened chart will move synchronously with the current one. The bars on different charts aligned to the border according to their open time.
The indicator analyzes the internal averaged price channel on the specified border moving beyond the external cumulative one depending on the direction of current conventional trend, and at the same time the second price channel on the specified border moving beyond the extremums (or specified price modes) of the previous bar. A special case of the setting of this indicator is a well-known Ozymandias. The direction of the current conventional trend is displayed by a line, and the trend change (
This script help user record the value of Moving Average and OHLC at the moment once deals happen.
The datas save as .CSV format file so you can quantitative analysis someone's trading.
Please input value of MA's parameters you like. It tells you the path of data file when script is stopped.
Chart Overlay indicator displays the price action of several instruments on the same chart allowing you to evaluate how differently currency pairs fluctuate relative to each other.
Find overbought or oversold currency pairs easily Plot up to 6 currency pairs overlayed on the same chart Display inverted symbols -if you want to- Adapts to chart size, zoom and timeframe Symbols can be plotted as bars or line charts The size of the overlay chart is customizable Automatic price
Active Lines - a powerful professional tool for operations with lines on charts. Active Lines provides a wide range of actions for events when the price crosses lines. For example: notify, open/modify/close a position, place/remove pending orders. With Active Lines you can assign several tasks to one line, for each of which you can set individual trigger conditions, as well as conditions for re-activations and the number of possible activations.
Active Lines helps you easily organize various tr
The indicator shows the relative "strength explosion" of a selected currency. An additional "limiting" channel is used for filtering the indicator values.
VolatilityPeriod - period to analyze currency volatility, MainPrice - price used for calculation main values of the indicator, FastPeriod - fast period for calculation, FastMethod - method of smoothing of the fast line, SlowPeriod - slow period for calculation, SlowMethod - method of smoothing of the slow line, SmoothingPeriod - resul
This unique indicator detects reversal signals using price action and volume algorithm. It has also the ability to predict reversal power using the probability of past price movement and past volume analyzed.
To achieve more accurate trading, please use this tool in addition or support to the system you are using. This tool will perform better if combined with the right strategy.
To further boost the efficiency of this tool, you can combine this with FxGlow Zone Barr
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 marke
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
Cluster analysis of volumes is now available in MetaTrader 5!
The YuСlusters indicator is a professional tool for analyzing the trading volumes. The cluster graph is plotted based on tick data. For the exchange financial instruments these are the volume, type and price of a deal. For the Forex instruments - the real or tick volume (depending on the broker) and Bid price.
There are 6 criteria of cluster generation:
Time interval, the criterion is set in seconds. Price range, the criteri
Three variables are available for every strategy, any one of them can be disabled, their period can be changed.
type_order=ORDER_FILLING _FOK - order filling type.
ReverseTrade=false — trades opens in reverse direction if true. ExitOnBar=true — trades close on each bar only. spreadcover=false — Spread you pay includes in profit trades. It's like trade with zero spread but you should remember that it can decrease exact match between tester's result and live one. It
EasyPen is designed as beautiful and innovative way to create and manage all your chart analysis, scribbles, notes and more. The app takes advantage of new MQL5 technology to offer an experience unseen in the other apps or in older MQL versions.
An App That Changes Everything
There is no existing drawing app that allows the level of customization that EasyPen offers. Change color of your pen, choose brush size, save drawings, keep drawings attached to specific position in chart, and more. With
This indicator calculates (Hourly, Daily, Weekly, Monthly) pivot point, support and resistance price with different formulation (Classic, Camarilla, Woodie, DeMark, Floor, Fibonacci) and then adds lines on the chart. Line color and style can be changed with input parameters.
And you can choose alert type (Alarm activated when price reach any pivot price)
1. Calculation Method Option (Method = Classic, Camarilla, Woodie, DeMark, Floor and Fibonacci)
Range = High Price(HP) –
The OandaX product series is designed to display additional data on orders and positions provided by the Oanda FxLabs service.
The OandaX Download Manager EA is included in the OandaX product series and is designed to download data for all OandaX indicators running in the terminal.
To test your trading strategies and for historical data analysis, you can use free OandaX 5 Download Manager BETA. It is similar to Download Manager but provides data with a delay for a day.
Note. The EA uses WebRe
This is an utility for automatic scaling of a chart and making at least 140 bars visible in it. This is necessary for a correct wave analysis according to the Bill Williams' strategy "Trading Chaos". The utility can be used on any timeframe available in МetaТrader 5.
It draws a vertical line through the first bar the calculation starts from. This line allows you to see the probable starting point of the wave sequence along with a sufficient number of bars displayed in the chart. It also makes t
Find double top and double bottom reversal chart patterns easily with this indicator.
Easy to use Customizable colors and sizes It implements breakout signals It implements alerts of all kinds
Indicator Settings - The amplitude represents the size of the patterns to be found. The max. history bars parameter is the amount of bars in the chart to look back.
Less bars to evaluate means the indicator will load faster. Patterns - Choose the colors of the patt
This trading panel has been developed for fast and comfortable operation of the financial markets. It is equipped with the necessary functions for manual and semi-automated trading. Due to the presence of the order trailing feature, trailing stop and automatic closure by equity, profit, time. You can use it to automate your trading system. All you have to do is open a position and set the parameters for maintenance, everything else will be handled by the EA. If you want to limit your losses, set
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.