Have you ever seen such a behavior of iCustom?
-
What could be the cause that the EA can query the Indicator perfectly fine in the backtest, but doesn't seem to receive any valid results from iCustom during forward testing?
-
Do I miss something? Am I making something wrong?
-
Can an Indicator know if it was queried via iCustom and return garbage values?
-
I assume that you need to pass ALL parameters on the iCustom call, also the String separators?
You either pass in ALL parameters, or you pass in NONE, in which case default values will be used - so that's something you can try out:
double result = iCustom( _Symbol, PERIOD_CURRENT, Ind_Path_Name, Data_Index_Buy, // Index Buffer Buy = 0 1 // Shift = 1 = Previous bar );
On your second qn, an indicator can know whether it is running in backtest or not, and decide how to behave in each case... but without any code, we can only guess. Similarly, for your 4th qn, there is no way, as far as I'm aware of, but again, we can only guess... LOL
If you can attach your complete EA code, that might shed some lights... or trigger off more ideas for testing... of course, that is making the assumption that there is nothing unusual going on within the indicator "black-box"...
Thanks for your time to reply. :)
Yes, you are right. Without having the code for the Indicator it is a "needle in the haystack" search. :/
You either pass in ALL parameters, or you pass in NONE, in which case default values will be used - so that's something you can try out:
Yes, I do pass in ALL parameters. Just didn't want to clutter the forum with 30+ parameters. The default values of the Indicator are all 0. So calling iCustom without any parameters wouldn't lead to anything.
Besides some trade logic, this actually is - more or less - the core for the EA. The result from iCustom is returned from a function, so that I don't need to repeat the code for the other Index Buffers. And if the result from Data_Index_Buy (0) or Data_Index_Sell (1) is other than EMPTY_VALUE, it opens a particular trade with the given SL and TP prices.
As I said, the strange thing is:
- If you put the Indicator alone on the chart in a live / demo account, it works fine.
- If you put the Indicator alone on the chart in a backtest, it also works fine.
- If you call iCustom to query the Indicator from the EA - with all the same parameters - during backtest, it also works perfectly fine.
- If you put the Indicator on the chart during backtest of the EA, you can see they match up perfectly. The Indicator signals a Trade and in the next tick the EA receives the same Trade Signal via iCustom and opens a trade.
- BUT if you have the EA running on a live / demo account, it receives nothing but EMPTY_VALUE all the time from iCustom. Even when the same Indicator with the same parameters on the same chart outputs a Trade Signal, the EA still receives EMPTY_VALUE ... ?!
In a nutshell:
- Parameters for the Indicator and the EA are all the same.
- All parameters are getting passed to the Indicator on iCustom call.
- Indicator works fine on a live / demo account.
- Indicator works fine in backtest.
- EA works perfectly fine during backtest.
- EA doesn't work on a live / demo account. Even when the Indicator signals a trade, the EA still receives EMPTY_VALUE from either Data_Index_Buy (0) and Data_Index_Sell (1).
- "Auto Trading" etc. is (of course) enabled.
You either pass in ALL parameters, or you pass in NONE, in which case default values will be used - so that's something you can try out:
...It's not totally exact, ALL/NONE are correct, but you can also pass any number of parameters, provided they are in the right order (1st, 2nd,...), the missing parameters will use the default values.
It's not totally exact, ALL/NONE are correct, but you can also pass any number of parameters, provided they are in the right order (1st, 2nd,...), the missing parameters will use the default values.
Thanks for pointing that out - I never considered this possible, and never even tried it out... not sure why though...
And the right ordering part simply motivates programmers to declare parameters that are more dynamic, first.
Ok, we solved it. Problem was:
The EA was designed to query the Indicator once every new bar.
However, the Indicator seems to work differently: It doesn't give the signal on a new bar, but rather on a tick-basis. It seems to wait for confirmation and then gives the signal during the candle.
I changed the EA to also query the Indicator on every tick and this seems to work reliably now. :)

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello,
I've got a Custom Indicator which outputs Entry Signals on the chart. In the Data Window I can see that the Indicator has 5 "Index Buffers" and outputs "Buy", "Sell", "Entry", "SL" and "TP".
I want to query this Indicator in an EA via iCustom.
The Indicator has several parameters. Mostly "Int" type, some "String" type separators, some "Double" type and some "Color" type. For instance:
And a few more. But let's assume these are all the parameters.
I use iCustom to call the Indicator like this:
When the Indicator finds a valid (buy) signal, the result of querying the "Index Buffer" 0 (Buy) is the current bid price of the Symbol, otherwise EMPTY_VALUE (2147483647).
Now the strange problem is, it all works perfectly fine in backtests. The EA receives A LOT of signals from the Indicator all over the test period. Also when I put the Indicator separately on the chart during the backtest to see if the EA and the Indicator match up, they do so perfectly fine. The Indicator outputs a signal, and on the next tick the EA receives the same signal with the same values via iCustom and opens a trade.
However, during forward testing on a Live / Demo account, only the Indicator works and does its job. The EA doesn't seem to work, even though all settings for the Indicator and the EA are the same. During Live testing, the EA always receives EMPTY_VALUE from iCustom all the time, while the Indicator outputs signals on the chart. And sometimes, in like 1 of 10 cases, the EA receives the signal from the Indicator and opens a trade. As said before: The Indicator and the EA use exactly the same settings for the parameters (Min Pattern Length, Min Candles Between, ...). The path to the Indicator passed to iCustom is correct, etc.
Unfortunately, the only thing I can do to debug the problem is output the values I receive via iCustom. And they are mostly EMPTY_VALUE. So it doesn't help that much. I don't have the code of the Indicator, because it was given to me by a friend who kind of purchased it a while ago and asked me if I could wrap an EA around it. And the programmer of the Indicator seems to have left the scene. I can't attach the Indicator here, because of the Licensing reasons and thus was asked to not do so.
Have you ever seen such a behavior of iCustom?
What could be the cause that the EA can query the Indicator perfectly fine in the backtest, but doesn't seem to receive any valid results from iCustom during forward testing?
Do I miss something? Am I making something wrong?
Can an Indicator know if it was queried via iCustom and return garbage values?
I assume that you need to pass ALL parameters on the iCustom call, also the String separators?
Thanks a lot in advance for your time and help!