jcl,

The dataset functions allow us to store tick data with any arbitrary number of fields.

Likewise, I think it would be useful if any arbitrary tick data can be sourced in a variant of the tick() function.

Take, for example, a market depth trading application. I can live-record market depth ticks. I define my own tick, like so:

Code
typedef struct DEPTHTICK{
	DATE time; // [0]
	float fPrice; // [1] price data, positive for ask and negative for bid
	float fQty; // [2] quantity at price level's ask or bid
} DEPTHTICK;
So this struct has two fields and a timestamp.

Or maybe I wanted double precision for some reason, because the Asset price data is strange. And the price data can be negative, so let's add some flags. Then I'd do something like this:
Code
typedef struct DEPTHTICKv2{
	DATE time; // [0]
	var vPrice; // [1,2] price data
	float fQty; // [3] quantity at price level's ask or bid
	int flags; // [4]
} DEPTHTICKv2;
In this case, we have four fields and a timestamp. (Two are occupied by double precision.)

In a backtest, I would like to source this generic tick data.

On Init, I call a function that sources the dataset file. I tell the function how many fields there are (two). It returns a handle, int h.

As the backtest proceeds, Zorro invokes a user-supplied function generic_tick(int h, void* pTick), where h is the handle, and pTick is the pointer to my user-defined tick for the given timestamp.