// Uncompiled, Untested, simply typed out — MQL4 Only int OnInit() { return(INIT_SUCCEEDED); }; void OnTick() { // Display Comment in top-left of chart Comment( "Current Prices: Open = ", Open[ 0 ], ", Close = ", Close[ 0 ] ); };Don't call OnTick() (or any other event handler) from anywhere. It is an event handler called by the terminal.
Exactly.
In addition, you wanted to compare the last two opens. For that, you need to wait for the start of a new bar. For a new bar test, Bars is unreliable (a refresh/reconnect can change number of bars on chart), volume is unreliable (miss ticks), Price is unreliable (duplicate prices and The == operand. - MQL4 programming forum.) Always use time.
MT4: New candle - MQL4 programming forum #3 (2014)
MT5: Accessing variables - MQL4 programming forum #3 (2022)
I disagree with making a new bar function, because it can only be called once per tick. A variable can be tested multiple times.
Running EA once at the start of each bar - MQL4 programming forum (2011)
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hello there,
So I've been trying to use mql4 to create a little automated system. I have a bunch of code that should recognise when there's a new candle present by simply comparing the open of the two most recent candles, and if they're different then voila. This isn't exactly what this post is about though.
Say for example, I'm running the EA on a 5m chart, I can pull the open price of the candle that was present when I initiated/set the EA to run. I cannot figure out how to pull the open price from the CURRENT candle. I've been testing a bit of code:
As you can see, I'm simply calling the OnTick() function over and over during this test and outputting the open price in a message box.
The issue I'm getting, is when a new candle occurs, it doesn't pull the open price for that. It simply keeps pulling the open price from the candle that was present when the EA was set to run. Would anybody know how I can retrieve the open price for the CURRENT/MOST RECENT candle?
This is my first time using MQL4, so I appreciate if I'm just doing something silly here.
Thanks!