Your topic has been moved to the section: Expert Advisors and Automated Trading — In the future, please consider which section is most appropriate for your query.
The current tick values can change during one moment to the next during which you are collecting data.
However, you have not shown that you are refreshing rates, nor that the class object "m_symbol", is in fact referring to the same current symbol "_Symbol".
m_symbol.RefreshRates(); Print("M symbol ask1 ======================= ", SymbolInfoDouble(_Symbol, SYMBOL_ASK)); Print("M symbol bid1 ======================= ", SymbolInfoDouble(_Symbol, SYMBOL_BID)); Print("M symbol ask2 ======================= ", m_symbol.Ask()); Print("M symbol bid2 ======================= ", m_symbol.Bid()); Print("M symbol name1 ======================= ", _Symbol); Print("M symbol name2 ======================= ", m_symbol.Name());
I repeat even with the RefreshRates, it can still happen that the values will update between reading the current values, as the current tick can change from one moment to the next.
Yes, that was the problem, I was not refreshing rates :/
Thank you very much Fernando.
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!
I have an issue with an EA. I have a function that modifies the current open position stops and I realized that m_symbol.Ask() and m_symbol.Bid() are not the real Ask and Bid prices.
In order to debug it, I have this code to print the values:
Print("M symbol ask1 ======================= ", SymbolInfoDouble(_Symbol, SYMBOL_ASK));
Print("M symbol bid1 ======================= ", SymbolInfoDouble(_Symbol, SYMBOL_BID));
Print("M symbol ask2 ======================= ", m_symbol.Ask());
Print("M symbol bid2 ======================= ", m_symbol.Bid());
And this is the result:
The correct prices are the ones calculated with "SymbolInfoDouble" (ask1, and bid1), but the expert considers the other values, the ones calculated with m_symbol.Ask() and m_symbol.Bid()
This causes that position modification fails because of invalid stops. In the example, the TP is higher than the 'fake' ask price that expert is considering.
Do you know why is this happening?
Any help would be appreciated, thank you!