Tick-Volume

General discussion about the Tickstory Lite software package.
tickstory
Posts: 5167
Joined: Sun Jan 06, 2013 12:27 am

Re: Tick-Volume

Post by tickstory »

Hi Berty,

The tick volume that is published is still as described above - that is, it uses the volume traded as oppose to the number of ticks. All data originates from Dukascopy.

We still have an open enhancement item to change the MT4 export so it exports the tick activity rather than volume.

Hope this helps.
iwillsurvive
Posts: 5
Joined: Sat Oct 05, 2013 6:20 am

Re: Tick-Volume

Post by iwillsurvive »

yes, I hope this issue can be looked into.
golfsong
Posts: 2
Joined: Tue Mar 11, 2014 5:10 am

Re: Tick-Volume

Post by golfsong »

Thank you very much, tickster. For the good information about Volume,
The first was nearly hopeless for me to find out that why all the Volumes in MT4 are only value 1 per bar,
now I know that I need to deselect the Suppress Volume info to get Volume from Duka.

Regards,
TDP
SurtiTrader
Posts: 6
Joined: Mon Jul 28, 2014 11:03 am

Re: Tick-Volume

Post by SurtiTrader »

Thank you. This topic helped me alot into my similar kind of issues. Thanks very much...
gooly
Posts: 57
Joined: Tue Jul 09, 2013 10:12 am

Re: Tick-Volume

Post by gooly »

May I ask a technical question - due to the changes and the new function coming with b600+.
I hope you don't mind!

The Volume-Array and IVolume(..) are long. ok.
But the MQl4 Reference writes:

Code: Select all

long Volume[]
Series array that contains tick volumes of each bar of the current chart.
...
Example:
      if(i==0 && time0<i_time+periodseconds)
        {
         d_volume += Volume[0];
         if(Low[0]<d_low)   d_low = Low[0];
         if(High[0]>d_high) d_high = High[0];
         d_close = Close[0];
        }
      last_fpos = FileTell(ExtHandle);
      last_volume = Volume[i];
      FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
      FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);


So why the long variable is writen as a double-value - despite it is long and FileWriteDouble() does NOT have the 3rd option DOUBLE_VALUE, only FileWriteInteger(..) has?

Can you please tell me what would be working set of orders
As I want to write the fxt-files with quotes from my real account with my broker would you mind to tell me you this set of writing-numbers-orders shall look like?
Would that be correct?

Code: Select all

      FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
      FileWriteDouble(ExtHandle, d_open);
      FileWriteDouble(ExtHandle, d_low);
      FileWriteDouble(ExtHandle, d_high);
      FileWriteDouble(ExtHandle, d_close);
      FileWriteInteger(ExtHandle, d_volume, LONG_VALUE);
Thank you very much in advance,
Gooly
PS: Do you already have a plan when TickStory will be able to launch MT4 to backtest with real spreads?
tickstory
Posts: 5167
Joined: Sun Jan 06, 2013 12:27 am

Re: Tick-Volume

Post by tickstory »

Hi Gooly,

The use of 'double' for Volume is probably for historical reasons as MT4 once used a double to store this information. It's not overly correct to be doing things in this manner - the assumption is that the value of the volume will never be large enough to cause a problem.

Volume is stored as a 32-bit integer so the code you have shown should export the volume correctly.

We will re-look at the item to change the volume to be the spread. Of course, you wont be able to utilise this feature unless you have Birt's Tick Data Suite as we have no immediate plans to support real spreads in the Tickstory launcher.

Hope this helps.
gooly
Posts: 57
Joined: Tue Jul 09, 2013 10:12 am

Re: Tick-Volume

Post by gooly »

Thanks a lot!!

But why don't you have any plans to support real spreads?
As far as I know one can backtest MT4 with 'real' ticks without launching mt4 by Tickstory?
So what are your plans with Tickstory?

Gooly
tickstory
Posts: 5167
Joined: Sun Jan 06, 2013 12:27 am

Re: Tick-Volume

Post by tickstory »

Hi Gooly,

Back-testing with real spreads isn't natively supported in MT4 - their database does not contain both the bid and ask price but instead relies on a fixed value (eg. 2 pips) to add onto the bid price. This fixed spread value can be set in Tickstory during the export.

The "workaround" is to use the volume field in the MT4 database as a proxy for the spread, however only Birt's TDS launcher allows you to do this at the moment. Updating the Tickstory launcher each time MT4 changes is a significant development effort and detracts from improving Tickstory's tick database functions. We would welcome open-sourcing the launcher script, however we didn't see enough interested when we posed the question some time back.

Regards.
gooly
Posts: 57
Joined: Tue Jul 09, 2013 10:12 am

Re: Tick-Volume

Post by gooly »

I can remember that you were asking for a 'public project'.
But I don't feel competent enough to be a valid contributor.
I even couldn't imagine how this could be done. :(

Could it be that there is an another way to use real spread and volume?
I don't know whether the idea might work.
If you save spread and volume as 2 integer in the 'volume-field' you can easily depart them in an EA:

Code: Select all

void splitVol(long lng, int& spr, int& vol){
	spr = (int)lng;
	vol = (int)(lng >> 32);   
	return;
}
so the 'real' Ask would be:

Code: Select all

   double Vol,Spr;
   splitVol(Volume[0], Spr, Vol);
   double realAsk = Bid + (Ask-Bid) + Spr*Point;
Isn't there a way to use this in the StrategyTester?
tickstory
Posts: 5167
Joined: Sun Jan 06, 2013 12:27 am

Re: Tick-Volume

Post by tickstory »

Hi Gooly,

I imagine you could do something like this aside from potential issues of losing volume information. The other issue of course is that you require your EA has been specifically to use the embedded spread information. This obviously rules out back-testing with pre-compiled/paid-for products.

Regards.
Post Reply