I wonder how you manage the Tick value in your code. For some Symbols it is in the deposit currency but for some Symbols it is in another currency. In my opinion it depends on the value of MARGINCALCMODE. If it is 0 (Forex) the Tick value is in the deposit currency. If the MARGINCALCMODE is 1 (CFD) or 3 (CFD for indices) the Tick value is in the base currency. My broker doesn't offer any Symbols where it is 2 (Futures) and for this reason I can't say in which currency is the Tick value in this case.
For example my deposit currency is CZK (Czech Crown). The Tick value e.g. for EURUSD (Forex) is in CZK. The Tick value for DAX (CFD for indices) as well as Crude Oil (CFD) isn't in the deposit currency but in EUR (DAX) and in USD (Crude Oil). In this case I have to calculate the Tick value by EURCZK or USDCZK. But I have to enable these currency pairs to be able work with them. Because my broker doesn't offer e.g. JPYCZK I have to use USDCZK and USDJPY together if I want to know the Tick value for NIKKEI in the deposit currency.
It's the account currency always, not sometimes. There can't be any solution for sometimes. Verify and complain to your broker if it's not.
You are really wrong. The documentation says the Tick value is in the deposit currency but it is not true. You can believe me ;-) Or you can try it. Have a look in attached files.
Must always be deposit currency.
However it's set by the broker and is not rare they provide wrong values, mainly for CFDs.
There is not Futures for MT4
Thank you for your confirmation about Futures.
I wrote code which calculate it and in my case it works well, but I don't know if the ideas are universal.