📄 ta_global.c
字号:
/* TA-LIB Copyright (c) 1999-2007, Mario Fortier * All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * - Neither name of author nor the names of its contributors * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* List of contributors: * * Initial Name/description * ------------------------------------------------------------------- * MF Mario Fortier * AC Angelo Ciceri * * * Change history: * * MMDDYY BY Description * ------------------------------------------------------------------- * 112400 MF First version. * 082004 AC Add TA_SetCandleSettings, TA_RestoreCandleDefaultSettings * and call to TA_RestoreCandleDefaultSettings in TA_Initialize * 041106 MF Add prefix to theGlobals to avoid clash with other libs. * 040707 MF Change global initialization to eliminate Mac OS X link error. *//* Description: * Provides initialization / shutdown functionality for all modules. *//**** Headers ****/#include <stdlib.h>#include <string.h>#include <time.h>#include "ta_common.h"#include "ta_magic_nb.h"#include "ta_global.h"#include "ta_func.h"/**** External functions declarations. ****//* None *//**** External variables declarations. ****//* None *//**** Global variables definitions. ****//* The entry point for all globals */TA_LibcPriv ta_theGlobals = {0,{{0,0,0}},0,0,0,0,(TA_Compatibility)0,{0},{{(TA_CandleSettingType)0,(TA_RangeType)0,0,0}}};TA_LibcPriv *TA_Globals = &ta_theGlobals;/**** Local declarations. ****//* None *//**** Local functions declarations. ****//* None *//**** Local variables definitions. ****//* None *//**** Global functions definitions. ****/TA_RetCode TA_Initialize( void ){ /* Initialize the "global variable" used to manage the global * variables of all other modules... */ memset( TA_Globals, 0, sizeof( TA_LibcPriv ) ); TA_Globals->magicNb = TA_LIBC_PRIV_MAGIC_NB; /*** At this point, TA_Shutdown can be called to clean-up. ***/ /* Set the default value to global variables */ TA_RestoreCandleDefaultSettings( TA_AllCandleSettings ); return TA_SUCCESS;}TA_RetCode TA_Shutdown( void ){ if( TA_Globals->magicNb != TA_LIBC_PRIV_MAGIC_NB ) return TA_LIB_NOT_INITIALIZE; /* Initialize to all zero to make sure we invalidate that object. */ memset( TA_Globals, 0, sizeof( TA_LibcPriv ) ); return TA_SUCCESS;}TA_RetCode TA_SetCandleSettings( TA_CandleSettingType settingType, TA_RangeType rangeType, int avgPeriod, double factor ){ /*printf("setcdlset:%d ",settingType);*/ if( settingType >= TA_AllCandleSettings ) return TA_BAD_PARAM; TA_Globals->candleSettings[settingType].settingType = settingType; TA_Globals->candleSettings[settingType].rangeType = rangeType; TA_Globals->candleSettings[settingType].avgPeriod = avgPeriod; TA_Globals->candleSettings[settingType].factor = factor; /*printf("cdlset: %d %d %d %f\n",TA_Globals->candleSettings[settingType].settingType,TA_Globals->candleSettings[settingType].rangeType, TA_Globals->candleSettings[settingType].avgPeriod,TA_Globals->candleSettings[settingType].factor);*/ return TA_SUCCESS;}TA_RetCode TA_RestoreCandleDefaultSettings( TA_CandleSettingType settingType ){ const TA_CandleSetting TA_CandleDefaultSettings[] = { /* real body is long when it's longer than the average of the 10 previous candles' real body */ { TA_BodyLong, TA_RangeType_RealBody, 10, 1.0 }, /* real body is very long when it's longer than 3 times the average of the 10 previous candles' real body */ { TA_BodyVeryLong, TA_RangeType_RealBody, 10, 3.0 }, /* real body is short when it's shorter than the average of the 10 previous candles' real bodies */ { TA_BodyShort, TA_RangeType_RealBody, 10, 1.0 }, /* real body is like doji's body when it's shorter than 10% the average of the 10 previous candles' high-low range */ { TA_BodyDoji, TA_RangeType_HighLow, 10, 0.1 }, /* shadow is long when it's longer than the real body */ { TA_ShadowLong, TA_RangeType_RealBody, 0, 1.0 }, /* shadow is very long when it's longer than 2 times the real body */ { TA_ShadowVeryLong, TA_RangeType_RealBody, 0, 2.0 }, /* shadow is short when it's shorter than half the average of the 10 previous candles' sum of shadows */ { TA_ShadowShort, TA_RangeType_Shadows, 10, 1.0 }, /* shadow is very short when it's shorter than 10% the average of the 10 previous candles' high-low range */ { TA_ShadowVeryShort, TA_RangeType_HighLow, 10, 0.1 }, /* when measuring distance between parts of candles or width of gaps */ /* "near" means "<= 20% of the average of the 5 previous candles' high-low range" */ { TA_Near, TA_RangeType_HighLow, 5, 0.2 }, /* when measuring distance between parts of candles or width of gaps */ /* "far" means ">= 60% of the average of the 5 previous candles' high-low range" */ { TA_Far, TA_RangeType_HighLow, 5, 0.6 }, /* when measuring distance between parts of candles or width of gaps */ /* "equal" means "<= 5% of the average of the 5 previous candles' high-low range" */ { TA_Equal, TA_RangeType_HighLow, 5, 0.05 } }; int i; if( settingType > TA_AllCandleSettings ) return TA_BAD_PARAM; if( settingType == TA_AllCandleSettings ) for( i = 0; i < TA_AllCandleSettings; ++i ) TA_Globals->candleSettings[i] = TA_CandleDefaultSettings[i]; else TA_Globals->candleSettings[settingType] = TA_CandleDefaultSettings[settingType]; return TA_SUCCESS;}/**** Local functions definitions. ****//* None */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -