Platforms
To deploy ForeStock on TradeStation, please follow these steps:
- Install TradeStation 2000i or above
- Install ForeStock
- Enter license keys for all components
- Run ForeStock setup for Trade Station
Programs > StockFusion > StockFusion for Trade Station
- There will appear import wizard screen. Select all objects for import and confirm.
Watch imported functions in Easy Language editor. Use provided functions as templates for your own functions and strategies.
Below there is full Easy Language code of Aura
Forecast Engine call.
{*******************************************************************
Description: Aura Forecast
Engine Extended
Provided By: Boris Zinchenko
(c) Copyright 2008
********************************************************************}
DefineDLLFunc:
"EEOmegaX.dll", float, "AURA_ENGINE_EX", LPSTR, DWORD,
DWORD, LPLONG, LPINT, LPLONG, LPLONG, LPLONG, LPLONG, LPLONG, LPLONG, LPSTR,
LPSTR, DWORD;
{ Inputs }
Inputs:
AlgorithmName(String),
InputLength(Numeric),
SeriesNames(String),
Parameters(String),
ForecastLength(Numeric),
Forecast(NumericRef);
{ Inner variables }
Variables: Dummy(0), Counter(0);
{ Reserve arrays for data }
Dummy = Date[InputLength];
Dummy = Time[InputLength];
Dummy = Open[InputLength];
Dummy = High[InputLength];
Dummy = Low[InputLength];
Dummy = Close[InputLength];
Dummy = Volume[InputLength];
Dummy = OpenInt[InputLength];
{ Call solver }
Forecast =
AURA_ENGINE_EX((LPSTR)AlgorithmName, (DWORD)MaxBarsBack, (DWORD)PriceScale,
(LPLONG)&Date, (LPINT)&Time, (LPLONG)&Open, (LPLONG)&High,
(LPLONG)&Low, (LPLONG)&Close, (LPLONG)&Volume,
(LPLONG)&OpenInt,
(LPSTR)SeriesNames, (LPSTR)Parameters, (DWORD)ForecastLength);
AuraEngineExt = Forecast;
Short description of input parameters:
Parameter |
Description |
AlgorithmName |
Name of indicator. It must exactly
coinside with the names of algorithms given in algorithm table in this
manual. Any misprint, wrong case or white space will result in error. |
InputLenght |
Desirable input length of symbol history
for calculation. Please carefully observe minimum input length limitations in
the last section of this manual. If input is too short, no calculation will
take place and indicator will stay void. Typically, minimal limitations are
just barely enough to run algorith at all. User must expect that good results
will require much longer series. It is advised to have at least 500
historical points provided. Best results are expected with several thousands
historical points. Note however that the increase of history dramatically
increases required computational resources. |
SeriesNames |
Comma delimited list of input series for
calculation. Allowed names include
- Open
- High
- Low
- Close
- Volume
- OI
For example: SeriesNames(“Open,High,Low,Close,Volume,OI”). Names are case sensitive. No whitespaces allowed. User can rearrange
names to combine different input sequences to the algorithm. There is no
sense to pass several series into algorithms, which are univariate. Please
consult algorithm table in the last chapter on allowed number of inputs for
each algorithm. |
Parameters |
Reserved for future usage and complex use
cases. Please ignore in current release. |
ForecastLenght |
Number of forward steps, for which
forecast is calculated and returned as function output. Please consult algorithm
table in the last chapter on supported forecast lenghts for each specific
algorithm. Indicators support only zero forecast length. Predictors support
one or more forward steps. |
This is very simple example of calling
engine in trading strategy.
{*******************************************************************
Description: StockFusion
Universal Signal
Provided By: Boris Zinchenko
(c) Copyright 2008
********************************************************************}
Inputs: AlgorithmName("Linear
Regression"), InputLength(500), SeriesNames("Close"),
Parameters(""), ForecastLength(1);
Variables: Forecast(0);
Value1 =
QB_AuraEngineExt(AlgorithmName, InputLength, SeriesNames, Parameters,
ForecastLength, Forecast);
If (Forecast < Close) AND (Close
> Close[1]) Then Sell This Bar at Close;
If (Forecast > Close) AND (Close
< Close[1]) Then Buy This Bar at Close;
Of course, real strategies are typically
more complex and realistic . |