⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ta_global.c

📁 股票主要技术指标源码
💻 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 + -