#include <stddef.h>
#include "ta_abstract.h"
#include "ta_def_ui.h"
const TA_OptInputParameterInfo TA_DEF_UI_Signal_Period =
{
TA_OptInput_IntegerRange,
"optInSignalPeriod",
0,
"Signal Period",
(const void *)&TA_DEF_TimePeriod_Positive,
9,
"Smoothing for the signal line (nb of period)",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_Slow_MA_Type =
{
TA_OptInput_IntegerList,
"optInSlowMAType",
0,
"Slow MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for slow MA",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_Fast_MA_Type =
{
TA_OptInput_IntegerList,
"optInFastMAType",
0,
"Fast MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for fast MA",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_Signal_MA_Type =
{
TA_OptInput_IntegerList,
"optInSignalMAType",
0,
"Signal MA",
(const void *)&TA_MA_TypeList,
0,
"Type of Moving Average for signal line",
NULL
};
static const TA_InputParameterInfo *TA_MA_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MA_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MA_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30,
&TA_DEF_UI_MA_Method,
NULL
};
DEF_FUNCTION( MA,
TA_GroupId_OverlapStudies,
"Moving average",
"MovingAverage",
TA_FUNC_FLG_OVERLAP
);
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_MACD =
{ TA_Output_Real, "outMACD", TA_OUT_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_MACDSignal =
{ TA_Output_Real, "outMACDSignal", TA_OUT_DASH_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_MACDHist =
{ TA_Output_Real, "outMACDHist", TA_OUT_HISTO };
static const TA_InputParameterInfo *TA_MACD_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MACD_Outputs[] =
{
&TA_DEF_UI_Output_Real_MACD,
&TA_DEF_UI_Output_Real_MACDSignal,
&TA_DEF_UI_Output_Real_MACDHist,
NULL
};
static const TA_OptInputParameterInfo *TA_MACD_OptInputs[] =
{ &TA_DEF_UI_Fast_Period,
&TA_DEF_UI_Slow_Period,
&TA_DEF_UI_Signal_Period,
NULL
};
DEF_FUNCTION( MACD,
TA_GroupId_MomentumIndicators,
"Moving Average Convergence/Divergence",
"Macd",
0
);
static const TA_InputParameterInfo *TA_MACDEXT_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MACDEXT_Outputs[] =
{
&TA_DEF_UI_Output_Real_MACD,
&TA_DEF_UI_Output_Real_MACDSignal,
&TA_DEF_UI_Output_Real_MACDHist,
NULL
};
static const TA_OptInputParameterInfo *TA_MACDEXT_OptInputs[] =
{ &TA_DEF_UI_Fast_Period,
&TA_DEF_UI_Fast_MA_Type,
&TA_DEF_UI_Slow_Period,
&TA_DEF_UI_Slow_MA_Type,
&TA_DEF_UI_Signal_Period,
&TA_DEF_UI_Signal_MA_Type,
NULL
};
DEF_FUNCTION( MACDEXT,
TA_GroupId_MomentumIndicators,
"MACD with controllable MA type",
"MacdExt",
0
);
static const TA_InputParameterInfo *TA_MACDFIX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MACDFIX_Outputs[] =
{
&TA_DEF_UI_Output_Real_MACD,
&TA_DEF_UI_Output_Real_MACDSignal,
&TA_DEF_UI_Output_Real_MACDHist,
NULL
};
static const TA_OptInputParameterInfo *TA_MACDFIX_OptInputs[] =
{ &TA_DEF_UI_Signal_Period,
NULL
};
DEF_FUNCTION( MACDFIX,
TA_GroupId_MomentumIndicators,
"Moving Average Convergence/Divergence Fix 12/26",
"MacdFix",
0
);
const TA_RealRange TA_DEF_MAMA_FastLimit =
{
0.01,
0.99,
2,
0.21,
0.80,
0.01
};
const TA_RealRange TA_DEF_MAMA_SlowLimit =
{
0.01,
0.99,
2,
0.01,
0.60,
0.01
};
const TA_OptInputParameterInfo TA_DEF_UI_MAMA_FastLimit =
{
TA_OptInput_RealRange,
"optInFastLimit",
0,
"Fast Limit",
(const void *)&TA_DEF_MAMA_FastLimit,
0.5,
"Upper limit use in the adaptive algorithm",
NULL
};
const TA_OptInputParameterInfo TA_DEF_UI_MAMA_SlowLimit =
{
TA_OptInput_RealRange,
"optInSlowLimit",
0,
"Slow Limit",
(const void *)&TA_DEF_MAMA_SlowLimit,
0.05,
"Lower limit use in the adaptive algorithm",
NULL
};
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_MAMA =
{ TA_Output_Real, "outMAMA", TA_OUT_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_FAMA =
{ TA_Output_Real, "outFAMA", TA_OUT_DASH_LINE };
static const TA_InputParameterInfo *TA_MAMA_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MAMA_Outputs[] =
{
&TA_DEF_UI_Output_Real_MAMA,
&TA_DEF_UI_Output_Real_FAMA,
NULL
};
static const TA_OptInputParameterInfo *TA_MAMA_OptInputs[] =
{ &TA_DEF_UI_MAMA_FastLimit,
&TA_DEF_UI_MAMA_SlowLimit,
NULL
};
DEF_FUNCTION( MAMA,
TA_GroupId_OverlapStudies,
"MESA Adaptive Moving Average",
"Mama",
TA_FUNC_FLG_UNST_PER|TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MAVP_Inputs[] =
{
&TA_DEF_UI_Input_Real,
&TA_DEF_UI_Input_Periods,
NULL
};
static const TA_OutputParameterInfo *TA_MAVP_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MAVP_OptInputs[] =
{
&TA_DEF_UI_MinPeriod,
&TA_DEF_UI_MaxPeriod,
&TA_DEF_UI_MA_Method,
NULL
};
DEF_FUNCTION( MAVP,
TA_GroupId_OverlapStudies,
"Moving average with variable period",
"MovingAverageVariablePeriod",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MAX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MAX_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MAX_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MAX,
TA_GroupId_MathOperators,
"Highest value over a specified period",
"Max",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MAXINDEX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MAXINDEX_Outputs[] =
{
&TA_DEF_UI_Output_Integer,
NULL
};
static const TA_OptInputParameterInfo *TA_MAXINDEX_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MAXINDEX,
TA_GroupId_MathOperators,
"Index of highest value over a specified period",
"MaxIndex",
0
);
static const TA_InputParameterInfo *TA_MEDPRICE_Inputs[] =
{
&TA_DEF_UI_Input_Price_HL,
NULL
};
static const TA_OutputParameterInfo *TA_MEDPRICE_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MEDPRICE_OptInputs[] = { NULL };
DEF_FUNCTION( MEDPRICE,
TA_GroupId_PriceTransform,
"Median Price",
"MedPrice",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MFI_Inputs[] =
{
&TA_DEF_UI_Input_Price_HLCV,
NULL
};
static const TA_OutputParameterInfo *TA_MFI_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MFI_OptInputs[] =
{
&TA_DEF_UI_TimePeriod_14_MINIMUM2,
NULL
};
DEF_FUNCTION( MFI,
TA_GroupId_MomentumIndicators,
"Money Flow Index",
"Mfi",
TA_FUNC_FLG_UNST_PER
);
static const TA_InputParameterInfo *TA_MIDPRICE_Inputs[] =
{
&TA_DEF_UI_Input_Price_HL,
NULL
};
static const TA_OutputParameterInfo *TA_MIDPRICE_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MIDPRICE_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_14_MINIMUM2,
NULL
};
DEF_FUNCTION( MIDPRICE,
TA_GroupId_OverlapStudies,
"Midpoint Price over period",
"MidPrice",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MIDPOINT_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MIDPOINT_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MIDPOINT_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_14_MINIMUM2,
NULL
};
DEF_FUNCTION( MIDPOINT,
TA_GroupId_OverlapStudies,
"MidPoint over period",
"MidPoint",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MIN_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MIN_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MIN_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MIN,
TA_GroupId_MathOperators,
"Lowest value over a specified period",
"Min",
TA_FUNC_FLG_OVERLAP
);
static const TA_InputParameterInfo *TA_MININDEX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MININDEX_Outputs[] =
{
&TA_DEF_UI_Output_Integer,
NULL
};
static const TA_OptInputParameterInfo *TA_MININDEX_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MININDEX,
TA_GroupId_MathOperators,
"Index of lowest value over a specified period",
"MinIndex",
0
);
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_Min =
{ TA_Output_Real, "outMin", TA_OUT_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_Real_Max =
{ TA_Output_Real, "outMax", TA_OUT_LINE };
static const TA_InputParameterInfo *TA_MINMAX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MINMAX_Outputs[] =
{
&TA_DEF_UI_Output_Real_Min,
&TA_DEF_UI_Output_Real_Max,
NULL
};
static const TA_OptInputParameterInfo *TA_MINMAX_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MINMAX,
TA_GroupId_MathOperators,
"Lowest and highest values over a specified period",
"MinMax",
TA_FUNC_FLG_OVERLAP
);
const TA_OutputParameterInfo TA_DEF_UI_Output_Integer_MinIdx =
{ TA_Output_Integer, "outMinIdx", TA_OUT_LINE };
const TA_OutputParameterInfo TA_DEF_UI_Output_Integer_MaxIdx =
{ TA_Output_Integer, "outMaxIdx", TA_OUT_LINE };
static const TA_InputParameterInfo *TA_MINMAXINDEX_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MINMAXINDEX_Outputs[] =
{
&TA_DEF_UI_Output_Integer_MinIdx,
&TA_DEF_UI_Output_Integer_MaxIdx,
NULL
};
static const TA_OptInputParameterInfo *TA_MINMAXINDEX_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_30_MINIMUM2,
NULL
};
DEF_FUNCTION( MINMAXINDEX,
TA_GroupId_MathOperators,
"Indexes of lowest and highest values over a specified period",
"MinMaxIndex",
0
);
static const TA_InputParameterInfo *TA_MINUS_DI_Inputs[] =
{
&TA_DEF_UI_Input_Price_HLC,
NULL
};
static const TA_OutputParameterInfo *TA_MINUS_DI_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MINUS_DI_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_14,
NULL
};
DEF_FUNCTION( MINUS_DI,
TA_GroupId_MomentumIndicators,
"Minus Directional Indicator",
"MinusDI",
TA_FUNC_FLG_UNST_PER
);
static const TA_InputParameterInfo *TA_MINUS_DM_Inputs[] =
{
&TA_DEF_UI_Input_Price_HL,
NULL
};
static const TA_OutputParameterInfo *TA_MINUS_DM_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MINUS_DM_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_14,
NULL
};
DEF_FUNCTION( MINUS_DM,
TA_GroupId_MomentumIndicators,
"Minus Directional Movement",
"MinusDM",
TA_FUNC_FLG_UNST_PER
);
static const TA_InputParameterInfo *TA_MOM_Inputs[] =
{
&TA_DEF_UI_Input_Real,
NULL
};
static const TA_OutputParameterInfo *TA_MOM_Outputs[] =
{
&TA_DEF_UI_Output_Real,
NULL
};
static const TA_OptInputParameterInfo *TA_MOM_OptInputs[] =
{ &TA_DEF_UI_TimePeriod_10,
NULL
};
DEF_FUNCTION( MOM,
TA_GroupId_MomentumIndicators,
"Momentum",
"Mom",
0
);
DEF_MATH_BINARY_OPERATOR( MULT, "Vector Arithmetic Mult", "Mult" )
const TA_FuncDef *TA_DEF_TableM[] =
{
ADD_TO_TABLE(MA),
ADD_TO_TABLE(MACD),
ADD_TO_TABLE(MACDEXT),
ADD_TO_TABLE(MACDFIX),
ADD_TO_TABLE(MAMA),
ADD_TO_TABLE(MAVP),
ADD_TO_TABLE(MAX),
ADD_TO_TABLE(MAXINDEX),
ADD_TO_TABLE(MEDPRICE),
ADD_TO_TABLE(MFI),
ADD_TO_TABLE(MIDPOINT),
ADD_TO_TABLE(MIDPRICE),
ADD_TO_TABLE(MIN),
ADD_TO_TABLE(MININDEX),
ADD_TO_TABLE(MINMAX),
ADD_TO_TABLE(MINMAXINDEX),
ADD_TO_TABLE(MINUS_DI),
ADD_TO_TABLE(MINUS_DM),
ADD_TO_TABLE(MOM),
ADD_TO_TABLE(MULT),
NULL
};
const unsigned int TA_DEF_TableMSize =
((sizeof(TA_DEF_TableM)/sizeof(TA_FuncDef *))-1);