CopyTicksRange doesn't provide volume

 
Hello again.

I am a bit disappointed that I can't seem to get Volume with the tick data. As you see in this thread:
The volume is always equals zero.
There I provided some code that downloads ticks in chunks.
If I try CopyTicksRange with the flag COPY_TICKS_RANGE the volume is still only zeros.

Is that a broker thing? It might be awesome to be able to draw conclusions from tickwise volume dynamics.
 

CopyTicks/CopyTicksRange provide MqlTick data (or vector/matrix but these are the same data in an other data structure). MqlTick provides volume, if there is a volume. The copy flags your are using are irrelevant.

On Forex/CFDs there is no volume as these are not centralized market. Some brokers provide volume data from their own customers on Forex, which is probably not representative of the whole Market.

On Futures/Stocks/Options which are centralized markets, you will have volume data.

 
Okay, thank you.
 
Alain Verleyen #:

CopyTicks/CopyTicksRange provide MqlTick data (or vector/matrix but these are the same data in an other data structure). MqlTick provides volume, if there is a volume. The copy flags your are using are irrelevant.

On Forex/CFDs there is no volume as these are not centralized market. Some brokers provide volume data from their own customers on Forex, which is probably not representative of the whole Market.

On Futures/Stocks/Options which are centralized markets, you will have volume data.

What about "tick volume"? how can I read it? I am using the CopyTicksRange but it returns 0 for volume. I want to read "tick volume" per each tick not per each candle!

 
b.mohammadi #:

What about "tick volume"? how can I read it? I am using the CopyTicksRange but it returns 0 for volume. I want to read "tick volume" per each tick not per each candle!

Yes you can get tick volume but not via CopyTicksRange. You have to get it through iTickVolume(). I know it makes the use of CopyTicksRange impractical, because you could just use SymbolInfoDouble() for bid and Ask then.
 
Tobias Johannes Zimmer #:
Yes you can get tick volume but not via CopyTicksRange. You have to get it through iTickVolume(). I know it makes the use of CopyTicksRange impractical, because you could just use SymbolInfoDouble() for bid and Ask then.

I just realized TickVolume is the number of ticks per candle. so obviously Tick volume in MqlTicks has no meaning by itself!

 
b.mohammadi #:

What about "tick volume"? how can I read it? I am using the CopyTicksRange but it returns 0 for volume. I want to read "tick volume" per each tick not per each candle!

This is a misconception.

When you copy with CopyTicksRange a certain time scope of ticks, the received array size is your tick volume for that time scope.

Let's say, you copy 3 minutes of ticks and you receive an array of size 100 then the tick volume for these 3 minutes is 100.

There is however one crucial detail, that needs to be understood. What is a tick from CopyTicksRange and what counts as tick volume.


https://www.mql5.com/en/forum/291724/page3#comment_9797126