polyfit (var* coeff, vars Data, int TimePeriod, int order, var weight) : var
Polynomial regression. Generates a polynomial that is the best fit to a section of a price series or any other data series. This polynomial can be used for extrapolating the Data series into the future, and thus predicting future prices.
||A var array for storing the calculated polynomial coefficients, or 0 for storing the coefficients internally.
||Data series to be approximated by the polynomial.
||Number of elements (1..1000) in the Data series to be approximated by the polynomial.
||Order of the polynom (1..7). Use 1 for linear regression, 2 for parabolic regression, and higher numbers for nth-order regression.
||Ratio of the weight of the last data value to the weight of the first value, for "fading-memory" polynomials. Use 1 for equal weights.
Correlation coefficient, normally in the 0..1 range. Gives the similarity of the price curve and the polynomial.
coeff - set to the coefficients of the polynomial, in the order of their index, starting with coeff.
polynom (var* coeff, int num) : var
Returns the value of the polynom with the given coefficients at a given bar number.
||A var array that contains the polynomial coefficients, or 0 for using the last coefficients generated by polyfit.
||The bar offset of the returned polynomial value (0 = current bar). Use negative bar numbers for predicting the future.
The predicted data at the given bar number, based on the polynomial.
- Polynomials of order 1 (straight line), 2 (parabola), or 3 are useful for price change predictions. Higher order polynomials are unlikely to give good predictions.
- The weight ratio can be used for giving recent data more weight; however the best predictions are usually generated with weight at 1.
- For better accuracy, don't fit the polynomial to a price series, but to a series of price differences. Price differences vary more than prices and thus give more accurate correlation coefficients.
- As data series are stored in reverse order, a rising data series generates a polynomial with a falling slope, and vice versa.
- For predicting curve events with polynomial regression, such as crossovers, peaks, or valleys, use the predict function.
- For logistic linear regression with multiple variables, use the advise(PERCEPTRON,...) function.
vars Diff = series(price(0)-price(1));
var Correlation = polyfit(0,Diff,15,2,1);
// sum the differences for predicting the price change over the next 3 bars
var Change3 = polynom(0,-1)+polynom(0,-2)+polynom(0,-3);
detect, advise, predict