The XMIM Query Language is very high-level, extremely powerful and rich.
Among other things, it supports:
LIM’s patented Show-When technology
LIM’s patented analog indicators
event-driven analysis
cross-market analysis
P&L studies
Good equity model
Sophisticated signals and order types
Comprehensive statistics
Capital balancing
Trading of baskets w/report for basket combined and individual in any desired frequency
Specification of #contracts traded in variable amounts based on a condition (e.g., buy more if volatility is high)
P&L studies
highly sophisticated date language
macro language
looping/optimization including ranking and filtering of results
The XMIM Query Execution Engine is built on top of the time series abstraction so it uses a lot of the time series notions. Some of the real power stems from directly using the time series support in the server. For example,
In the query language, data can be looked at in any granularity (3-day, 5- week, 2-month, 10-year, etc.). Days, months, etc. can be mixed in a single query. The aggregation of data is directly supported by the time series class.
The calendar class provides sophisticated date arithmetic operations, which are also needed by the execution engine. For example, in computing a 20- day average, the calendar class is used to compute the endpoints of the moving 20-day window. The calendar class also provides direct support for the implementation of time offsets in the query language (e.g., Close of DELL 3 weeks ago).
The query language supports rollover on-the-fly. This requires creation of an intermediate temporary time series and use of information from the schema to get the rollover policy. In fact, the actual rollover computation is also handled by the time series updating code, where historical rollover relations are maintained automatically by the database.
The need to support the query language drove some of the sophisticated technology in the server so there was considerable synergy between the execution engine and server efforts. The Execution Engine adds its own level of sophistication as well and some clients use both our client and server as a stand-alone system.