I've googled quite a bit on this, and am really struggling to understand the iStdDev inputs while creating an EA. Help from the brains of the forum would be most appreciated!
Here's the way I expected iStdDev to work:
For the function call:
double StdDevCurrent = iStdDev(NULL,PERIOD_H2,30,30,0,0,0);
I thought it would do the following:
NULL - On the current symbol
PERIOD_H2 - Over the range of the previous two hours
30,30,0,0 - Take the value at close every 30 seconds and calculate StdDev using simple arithmetic mean
0 - Perform this with 0 offset from the current time
But I'm doubting myself, and would really appreciate if someone could tell me whether I've got this line correct?
double StdDevCurrent = iStdDev(NULL,PERIOD_H2,30,30,MODE_SMA,PRICE_CLOSE,0);
Thanks for the response, I do appreciate the guidance. My problem was that I'd Read The Fabulous Manual, but didn't understand what the short two-word description of each option meant. The lack of examples and guidance was worrying me.
So a few follow-up questions:
In MQL4, is it possible to have the EA look at a 2 Hour timeframe?
If I am trying to have it look at 2 hour's worth of 30-second bars, it seems then that I'm doing this completely wrong. What would be the right way around?
Also - is there a more detailed documentation of the functions and what they mean? I fear that as I'm new to MQL, the short explanations in the help guide don't always mean very much to me.
In MQL4, is it possible to have the EA look at a 2 Hour timeframe? If I am trying to have it look at 2 hour's worth of 30-second bars, it seems then that I'm doing this completely wrong. What would be the right way around?
MT4 doesn't have history data more fine-grained than M1. The timeframes which it supports are those you can see on the toolbar in the user interface: M1, M5, M15, M30, H1, H4, D1, W1, MN1.
You can't do any kind of calculation involving 30-second bars because MT4 doesn't have history data of sufficient detail.
It would be possible, if cumbersome, to go upwards in terms of timeframes. For example, if you wanted to do a calculation on an unsupported period such as M3 or H2, then you could get the history data for a lower timeframe (e.g. M1 or H1); aggregate the history into the bars you wanted (e.g. combining each three M1 bars into an M3 bar); and then do a calculation such as standard deviation on your own bar data.
In some such cases MQL4 would provide a handy function which would do the calculation for you, e.g. iStdDevOnArray() which you could use to calculate standard deviation from your own array of aggregated bar data. In other cases, e.g. ATR, you would have to implement the whole calculation yourself as well because there is no "array-version" of the relevant function which you want to use, e.g. no iATROnArray() function.
You can't do any kind of calculation involving 30-second bars because MT4 doesn't have history data of sufficient detail. [...]
if MT4 did have 30-second bar data, then the syntax for a standard deviation calculation on "two hours' worth" would be as follows:
iStdDev(Symbol(), PERIOD_S30, 240, 0, MODE_SMA, PRICE_CLOSE, 0)
... where 240 is the number of 30-second bars in a two-hour period.
I agree that bare descriptions in the documentation such as "Moving Average period" aren't super-helpful. However, they're perhaps being precise. The documentation could say something like "Number of bars to include" instead of "Moving Average period", but that wouldn't be a strictly accurate description when using a type of moving average such as EMA or SMMA.
To add comments, please log in or register