Page 2 of 3

Re: Tick-Volume

Posted: Thu Mar 27, 2014 12:20 am
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.

Re: Tick-Volume

Posted: Wed Apr 23, 2014 2:39 pm
by iwillsurvive
yes, I hope this issue can be looked into.

Re: Tick-Volume

Posted: Wed Aug 27, 2014 3:31 pm
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

Re: Tick-Volume

Posted: Thu Aug 28, 2014 1:53 pm
by SurtiTrader
Thank you. This topic helped me alot into my similar kind of issues. Thanks very much...

Re: Tick-Volume

Posted: Tue Sep 09, 2014 9:11 am
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?

Re: Tick-Volume

Posted: Mon Sep 15, 2014 8:02 am
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.

Re: Tick-Volume

Posted: Mon Sep 15, 2014 3:01 pm
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

Re: Tick-Volume

Posted: Tue Sep 16, 2014 7:04 am
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.

Re: Tick-Volume

Posted: Tue Sep 16, 2014 8:56 am
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?

Re: Tick-Volume

Posted: Wed Sep 17, 2014 7:22 am
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.