#include <stddef.h>
#include "ta_abstract.h"
#include "ta_def_ui.h"
static const TA_RealRange TA_DEF_AccelerationFactor =
{
0.0,
TA_REAL_MAX,
4,
0.01,
0.20,
0.01
};
static const TA_RealRange TA_DEF_AccelerationMax =
{
0.0,
TA_REAL_MAX,
4,
0.20,
0.40,
0.01
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationFactor =
{
TA_OptInput_RealRange,
"optInAcceleration",
0,
"Acceleration Factor",
(const void *)&TA_DEF_AccelerationFactor,
0.02,
"Acceleration Factor used up to the Maximum value",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationMaximum =
{
TA_OptInput_RealRange,
"optInMaximum",
0,
"AF Maximum",
(const void *)&TA_DEF_AccelerationMax,
0.20,
"Acceleration Factor Maximum value",
NULL
};
static const TA_InputParameterInfo *TA_SAR_Inputs[] =
{
&TA_DEF_UI_Input_Price_HL,
NULL
};
static const TA_OutputParameterInfo *TA_SAR_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_SAR_OptInputs[] =
{ &TA_DEF_UI_D_AccelerationFactor,
&TA_DEF_UI_D_AccelerationMaximum,
NULL
};
DEF_FUNCTION( SAR,
TA_GroupId_OverlapStudies,
"Parabolic SAR",
"Sar",
TA_FUNC_FLG_OVERLAP
);
static const TA_RealRange TA_DEF_AccelerationInit =
{
0.0,
TA_REAL_MAX,
4,
0.01,
0.19,
0.01
};
static const TA_RealRange TA_DEF_SARStartValue =
{
TA_REAL_MIN,
TA_REAL_MAX,
4,
0,
0,
0
};
static const TA_RealRange TA_DEF_SAROffsetOnReverse =
{
0.0,
TA_REAL_MAX,
4,
0.01,
0.15,
0.01
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_StartValue =
{
TA_OptInput_RealRange,
"optInStartValue",
0,
"Start Value",
(const void *)&TA_DEF_SARStartValue,
0.0,
"Start value and direction. 0 for Auto, >0 for Long, <0 for Short",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_OffsetOnReverse =
{
TA_OptInput_RealRange,
"optInOffsetOnReverse",
0,
"Offset on Reverse",
(const void *)&TA_DEF_SAROffsetOnReverse,
0.0,
"Percent offset added/removed to initial stop on short/long reversal",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationInitLong =
{
TA_OptInput_RealRange,
"optInAccelerationInitLong",
0,
"AF Init Long",
(const void *)&TA_DEF_AccelerationInit,
0.02,
"Acceleration Factor initial value for the Long direction",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationLong =
{
TA_OptInput_RealRange,
"optInAccelerationLong",
0,
"AF Long",
(const void *)&TA_DEF_AccelerationFactor,
0.02,
"Acceleration Factor for the Long direction",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationMaxLong =
{
TA_OptInput_RealRange,
"optInAccelerationMaxLong",
0,
"AF Max Long",
(const void *)&TA_DEF_AccelerationMax,
0.20,
"Acceleration Factor maximum value for the Long direction",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationInitShort =
{
TA_OptInput_RealRange,
"optInAccelerationInitShort",
0,
"AF Init Short",
(const void *)&TA_DEF_AccelerationInit,
0.02,
"Acceleration Factor initial value for the Short direction",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationShort =
{
TA_OptInput_RealRange,
"optInAccelerationShort",
0,
"AF Short",
(const void *)&TA_DEF_AccelerationFactor,
0.02,
"Acceleration Factor for the Short direction",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_D_AccelerationMaxShort =
{
TA_OptInput_RealRange,
"optInAccelerationMaxShort",
0,
"AF Max Short",
(const void *)&TA_DEF_AccelerationMax,
0.20,
"Acceleration Factor maximum value for the Short direction",
NULL
};
static const TA_InputParameterInfo *TA_SAREXT_Inputs[] =
{
&TA_DEF_UI_Input_Price_HL,
NULL
};
static const TA_OutputParameterInfo *TA_SAREXT_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_SAREXT_OptInputs[] =
{ &TA_DEF_UI_D_StartValue,
&TA_DEF_UI_D_OffsetOnReverse,
&TA_DEF_UI_D_AccelerationInitLong,
&TA_DEF_UI_D_AccelerationLong,
&TA_DEF_UI_D_AccelerationMaxLong,
&TA_DEF_UI_D_AccelerationInitShort,
&TA_DEF_UI_D_AccelerationShort,
&TA_DEF_UI_D_AccelerationMaxShort,
NULL
};
DEF_FUNCTION( SAREXT,
TA_GroupId_OverlapStudies,
"Parabolic SAR - Extended",
"SarExt",
TA_FUNC_FLG_OVERLAP
);
DEF_MATH_UNARY_OPERATOR( SIN, "Vector Trigonometric Sin", "Sin" )
DEF_MATH_UNARY_OPERATOR( SINH, "Vector Trigonometric Sinh", "Sinh" )
static const TA_InputParameterInfo *TA_SMA_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_SMA_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_SMA_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( SMA,
TA_GroupId_OverlapStudies,
"Simple Moving Average",
"Sma",
TA_FUNC_FLG_OVERLAP
);
DEF_MATH_UNARY_OPERATOR( SQRT, "Vector Square Root", "Sqrt" )
DEF_MATH_BINARY_OPERATOR( SUB, "Vector Arithmetic Substraction", "Sub" )
static const TA_InputParameterInfo *TA_SUM_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_SUM_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_SUM_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( SUM,
TA_GroupId_MathOperators,
"Summation",
"Sum",
0
);
static const TA_InputParameterInfo *TA_STDDEV_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_STDDEV_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_STDDEV_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_5_MINIMUM2,
&TA_DEF_UI_NbDeviation,
NULL
};
DEF_FUNCTION( STDDEV,
TA_GroupId_Statistic,
"Standard Deviation",
"StdDev",
0
);
static const TA_OptInputParameterInfo TA_DEF_UI_FastK_Period =
{
TA_OptInput_IntegerRange,
"optInFastK_Period",
0,
"Fast-K Period",
(const void *)&TA_DEF_TimePeriod_Positive,
5,
"Time period for building the Fast-K line",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_SlowK_Period =
{
TA_OptInput_IntegerRange,
"optInSlowK_Period",
0,
"Slow-K Period",
(const void *)&TA_DEF_TimePeriod_Positive,
3,
"Smoothing for making the Slow-K line. Usually set to 3",
NULL
};
static const TA_OptInputParameterInfo TA_DEF_UI_SlowD_Period =
{
TA_OptInput_IntegerRange,
"optInSlowD_Period",
0,
"Slow-D Period",
(const void *)&TA_DEF_TimePeriod_Positive,
3,
"Smoothing for making the Slow-D line",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_SlowK_MAType =
{
TA_OptInput_IntegerList,
"optInSlowK_MAType",
0,
"Slow-K MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for Slow-K",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_SlowD_MAType =
{
TA_OptInput_IntegerList,
"optInSlowD_MAType",
0,
"Slow-D MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for Slow-D",
NULL
};
const TA_OutputParameterInfo TA_DEF_UI_Output_SlowK =
{ TA_Output_Real, "outSlowK", TA_OUT_DASH_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_SlowD =
{ TA_Output_Real, "outSlowD", TA_OUT_DASH_LINE };
static const TA_InputParameterInfo *TA_STOCH_Inputs[] =
{
&TA_DEF_UI_Input_Price_HLC,
NULL
};
static const TA_OutputParameterInfo *TA_STOCH_Outputs[] =
{
&TA_DEF_UI_Output_SlowK,
&TA_DEF_UI_Output_SlowD,
NULL
};
static const TA_OptInputParameterInfo *TA_STOCH_OptInputs[] =
{ &TA_DEF_UI_FastK_Period,
&TA_DEF_UI_SlowK_Period,
&TA_DEF_UI_SlowK_MAType,
&TA_DEF_UI_SlowD_Period,
&TA_DEF_UI_SlowD_MAType,
NULL
};
DEF_FUNCTION( STOCH,
TA_GroupId_MomentumIndicators,
"Stochastic",
"Stoch",
0
);
static const TA_OptInputParameterInfo TA_DEF_UI_FastD_Period =
{
TA_OptInput_IntegerRange,
"optInFastD_Period",
0,
"Fast-D Period",
(const void *)&TA_DEF_TimePeriod_Positive,
3,
"Smoothing for making the Fast-D line. Usually set to 3",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_FastD_MAType =
{
TA_OptInput_IntegerList,
"optInFastD_MAType",
0,
"Fast-D MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for Fast-D",
NULL
};
const TA_OutputParameterInfo TA_DEF_UI_Output_FastK =
{ TA_Output_Real, "outFastK", TA_OUT_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_FastD =
{ TA_Output_Real, "outFastD", TA_OUT_LINE };
static const TA_InputParameterInfo *TA_STOCHF_Inputs[] =
{
&TA_DEF_UI_Input_Price_HLC,
NULL
};
static const TA_OutputParameterInfo *TA_STOCHF_Outputs[] =
{
&TA_DEF_UI_Output_FastK,
&TA_DEF_UI_Output_FastD,
NULL
};
static const TA_OptInputParameterInfo *TA_STOCHF_OptInputs[] =
{ &TA_DEF_UI_FastK_Period,
&TA_DEF_UI_FastD_Period,
&TA_DEF_UI_FastD_MAType,
NULL
};
DEF_FUNCTION( STOCHF,
TA_GroupId_MomentumIndicators,
"Stochastic Fast",
"StochF",
0
);
static const TA_InputParameterInfo *TA_STOCHRSI_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_STOCHRSI_Outputs[] =
{
&TA_DEF_UI_Output_FastK,
&TA_DEF_UI_Output_FastD,
NULL
};
static const TA_OptInputParameterInfo *TA_STOCHRSI_OptInputs[] =
{
&TA_DEF_UI_TimePeriod_14_MINIMUM2,
&TA_DEF_UI_FastK_Period,
&TA_DEF_UI_FastD_Period,
&TA_DEF_UI_FastD_MAType,
NULL
};
DEF_FUNCTION( STOCHRSI,
TA_GroupId_MomentumIndicators,
"Stochastic Relative Strength Index",
"StochRsi",
TA_FUNC_FLG_UNST_PER
);
const TA_FuncDef *TA_DEF_TableS[] =
{
ADD_TO_TABLE(SAR),
ADD_TO_TABLE(SAREXT),
ADD_TO_TABLE(SIN),
ADD_TO_TABLE(SINH),
ADD_TO_TABLE(SMA),
ADD_TO_TABLE(SQRT),
ADD_TO_TABLE(STDDEV),
ADD_TO_TABLE(STOCH),
ADD_TO_TABLE(STOCHF),
ADD_TO_TABLE(STOCHRSI),
ADD_TO_TABLE(SUB),
ADD_TO_TABLE(SUM),
NULL
};
const unsigned int TA_DEF_TableSSize =
((sizeof(TA_DEF_TableS)/sizeof(TA_FuncDef *))-1);