Time/date periods

StartDate

Start of the simulation; determines the begin of the backtest or of the preceding training period. The variable can be set in different ways:
- A 4-digit year number (f.i. 2006) gives the number of the historical data file with which the simulation begins (f.i. EURUSD_2006.t6). If the data file has no year number (f.i. MSFT.t6), the simulation starts with the earliest record in the file that matches the year number.
- A date in yyyymmdd format starts the simulation at a certain date (f.i. 20090401 = April 1st, 2009). The LookBack period is added in front of the date and begins accordingly earlier. Due to the lookback period, StartDate = 2006 is not the same as StartDate = 20060101.
- StartDate = NOW sets the start date to the current day, and executes the run function in [Trade] mode immediately after the lookback period, regardless of the current time. Useful for strategies that do not run permanently, but are only started for modifying a portfolio.
- StartDate = 0 (default) starts the simulation with NumYears before the current year.

EndDate

End of the simulation, either 4 digits for determining the number of the last historical price data file (similar to StartDate), or a date in yyyymmdd format for ending the backtest at that date (f.i. 20091231 = December 31, 2009), or NOW for the current day. If at 0 (default), the simulation runs until the end of the available price history. In January it runs until the end of the price history of the previous year.

NumYears

Number of years of the simulation if no StartDate or EndDate is given (default: 6 years; max 32 years). The current year counts as one full year. Set NumYears to -1 for not loading any prices by assetHistory.

MaxBars

Maximum number of bars of the simulation (default: 0 = no limit). The simulation ends either at EndDate or after the given number of bars (including the LookBack period), whichever happens earlier.
 

UpdateDays

Interval in days for automatically downloading price data from the selected broker (default: 0 = don't automatically download price data). The download process starts when calling asset() the first time in a [Test] or [Train] cycle and the price history is older than the given number of days. Zorro will then log in to the broker, download recent price data in M1 or T1 format dependent on History, and add it to the price history. This variable can be used for getting fresh data in a retraining or retesting process. It has no effect in [Trade] mode. Set UpdateDays to -1 for loading prices even when the history is up to date.

ReTrainDays

Interval in days for automatically retraining a live trading system (Zorro S required; default: 0 = no automatic retraining). Set this to the duration of the WFO test period for keeping a WFO trained system in sync with the market when it trades unsupervised for a long time. The retraining interval starts with the session start.

GapDays

Maximum allowed gap in days in the historical prices and in downloaded price data (default: 0 = no gap checking). Set this to 2 or above in order to check the price curve for gaps and inconsistencies, and give an Error 047 message if any are detected. Weekends and Holidays are except from gap checking. Gaps of 1 day are normal in historical prices when market holidays are not set up in the Holidays array (see below).
 

StartWeek

EndWeek

Start and end of the business week in dhhmm local time in the BarZone, where d = day number (1 = Monday .. 7 = Sunday) hh = hour and mm = minute. Default: Start 72300 (Sunday 23:00), end 52000 (Friday 20:00). Used to determine the weekend for BarMode flags. 

StartMarket

EndMarket

Daily global market opening and closing time in hhmm local time in the BarZone, hh = hour and mm = minute. Default: 0930. Used for local time functions (day, market, etc.) and for trading and sampling of bars, dependent on BarMode. Automatically converted from AssetMarketStart/End (see below) when BR_LOCAL is set. 

AssetMarketStart

AssetMarketEnd

Local market opening and closing time of the selected asset, in hhmm local time in the AssetMarketZone. Initially read from the Market field in the asset list; can also be set by script. Used for intraday trading in BR_LOCAL mode. 

Type:

int
 

Holidays

Pointer to an int array of holiday dates either in yyyymmdd or in mmdd format, ending with 0. Default: { 0101, 1225, 0 }. Can be set to a 0-terminated array for defining local stock market holidays. The yyyymmdd format specifies a holiday only in a certain year, mmdd for all years.

Type:

int*
 

Now

Date/time variable in DATE format for passing a certain point in time to the contractUpdate function or to the NOW argument of date/time functions. When at 0 (default), the current PC date and time is used for NOW.

DayOffset

Time period in DATE format to be added to the current time in [Trade] mode for special purposes, such as a quick test of the live behavior at a particular day, or at weekend or market closure (see also Troubleshooting). Set it to 1 or adding a day, or to 1./24 for adding one hour to the current time, or increase it by 1./24 at any 1-hour bar for trading a system in double speed. Affects also the lookback period and the time of a connected server; does not affect timestamps of historical data.

Type:

var
 

Remarks:

Example:

StartDate = 20150901; // start the simulation in September 2015
EndDate = 20160901; // and simulate one year. static int USHolidays[10] = { 0101, 0218, 0419, 0704, 0527, 0902, 1128, 1225, 0 }; Holidays = USHolidays; // set up US holidays

See also:

bar, BarPeriod, LookBack, Detrend, time/date functions, PlotDate

 

► latest version online