ta-lib 里的蜡烛图形态函数源码

以CDL2CROWS为例, 看一看c语言的源码:

有关的源码文件包括

  • d:\Documents\Pictures\ta-lib\c\src\ta_func\ta_CDL2CROWS.c
  • d:\Documents\Pictures\ta-lib\c\src\ta_func\ta_utility.h
  • d:\Documents\Pictures\ta-lib\c\src\ta_common\ta_global.c
  • d:\Documents\Pictures\ta-lib\c\src\ta_common\ta_global.h
   i = startIdx;/* Proceed with the calculation for the requested range.* Must have:* - first candle: long white candle* - second candle: black real body* - gap between the first and the second candle's real bodies* - third candle: black candle that opens within the second real body and closes within the first real body* The meaning of "long" is specified with TA_SetCandleSettings* outInteger is negative (-1 to -100): two crows is always bearish; * the user should consider that two crows is significant when it appears in an uptrend, while this function * does not consider the trend*/outIdx = 0;do{if( TA_CANDLECOLOR(i-2) == 1 &&                                                         // 1st: whiteTA_REALBODY(i-2) > TA_CANDLEAVERAGE( BodyLong, BodyLongPeriodTotal, i-2 ) &&     //      longTA_CANDLECOLOR(i-1) == -1 &&                                                        // 2nd: blackTA_REALBODYGAPUP(i-1,i-2) &&                                                        //      gapping upTA_CANDLECOLOR(i) == -1 &&                                                          // 3rd: blackinOpen[i] < inOpen[i-1] && inOpen[i] > inClose[i-1] &&                              //      opening within 2nd rbinClose[i] > inOpen[i-2] && inClose[i] < inClose[i-2]                               //      closing within 1st rb)outInteger[outIdx++] = -100;elseoutInteger[outIdx++] = 0;/* add the current range and subtract the first range: this is done after the pattern recognition * when avgPeriod is not 0, that means "compare with the previous candles" (it excludes the current candle)*/BodyLongPeriodTotal += TA_CANDLERANGE( BodyLong, i-2 ) - TA_CANDLERANGE( BodyLong, BodyLongTrailingIdx );i++; BodyLongTrailingIdx++;} while( i <= endIdx );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 }};/* Candlestick macros (used by candlestick functions, where the parameters are always called inClose, inOpen, etc.* Don't use i++ or func(i) with these macros !*/#define TA_REALBODY(IDX)        ( std_fabs( inClose[IDX] - inOpen[IDX] ) )
#define TA_UPPERSHADOW(IDX)     ( inHigh[IDX] - ( inClose[IDX] >= inOpen[IDX] ? inClose[IDX] : inOpen[IDX] ) )
#define TA_LOWERSHADOW(IDX)     ( ( inClose[IDX] >= inOpen[IDX] ? inOpen[IDX] : inClose[IDX] ) - inLow[IDX] )
#define TA_HIGHLOWRANGE(IDX)    ( inHigh[IDX] - inLow[IDX] )
#define TA_CANDLECOLOR(IDX)     ( inClose[IDX] >= inOpen[IDX] ? 1 : -1 )#if defined( _MANAGED )#define TA_CANDLERANGETYPE(SET) (Globals->candleSettings[(int)CandleSettingType::SET]->rangeType)#define TA_CANDLEAVGPERIOD(SET) (Globals->candleSettings[(int)CandleSettingType::SET]->avgPeriod)#define TA_CANDLEFACTOR(SET)    (Globals->candleSettings[(int)CandleSettingType::SET]->factor)
#elif defined( _JAVA )#define TA_CANDLERANGETYPE(SET) (this.candleSettings[CandleSettingType.SET.ordinal()].rangeType)#define TA_CANDLEAVGPERIOD(SET) (this.candleSettings[CandleSettingType.SET.ordinal()].avgPeriod)#define TA_CANDLEFACTOR(SET)    (this.candleSettings[CandleSettingType.SET.ordinal()].factor)
#else#define TA_CANDLERANGETYPE(SET) (TA_Globals->candleSettings[TA_##SET].rangeType)#define TA_CANDLEAVGPERIOD(SET) (TA_Globals->candleSettings[TA_##SET].avgPeriod)#define TA_CANDLEFACTOR(SET)    (TA_Globals->candleSettings[TA_##SET].factor)
#endif#define TA_CANDLERANGE(SET,IDX) \( TA_CANDLERANGETYPE(SET) == ENUM_VALUE(RangeType,TA_RangeType_RealBody,RealBody) ? TA_REALBODY(IDX) : \( TA_CANDLERANGETYPE(SET) == ENUM_VALUE(RangeType,TA_RangeType_HighLow,HighLow)   ? TA_HIGHLOWRANGE(IDX) : \( TA_CANDLERANGETYPE(SET) == ENUM_VALUE(RangeType,TA_RangeType_Shadows,Shadows)   ? TA_UPPERSHADOW(IDX) + TA_LOWERSHADOW(IDX) : \0 ) ) )
#define TA_CANDLEAVERAGE(SET,SUM,IDX) \( TA_CANDLEFACTOR(SET) \* ( TA_CANDLEAVGPERIOD(SET) != 0.0? SUM / TA_CANDLEAVGPERIOD(SET) : TA_CANDLERANGE(SET,IDX) ) \/ ( TA_CANDLERANGETYPE(SET) == ENUM_VALUE(RangeType,TA_RangeType_Shadows,Shadows) ? 2.0 : 1.0 ) \)
#define TA_REALBODYGAPUP(IDX2,IDX1)     ( min(inOpen[IDX2],inClose[IDX2]) > max(inOpen[IDX1],inClose[IDX1]) )
#define TA_REALBODYGAPDOWN(IDX2,IDX1)   ( max(inOpen[IDX2],inClose[IDX2]) < min(inOpen[IDX1],inClose[IDX1]) )
#define TA_CANDLEGAPUP(IDX2,IDX1)       ( inLow[IDX2] > inHigh[IDX1] )
#define TA_CANDLEGAPDOWN(IDX2,IDX1)     ( inHigh[IDX2] < inLow[IDX1] )

转载于:https://www.cnblogs.com/duan-qs/p/11461012.html

ta-lib 里的蜡烛图形态函数源码相关推荐

  1. Java 蜡烛图_ta-lib 里的蜡烛图形态函数源码

    ta-lib 里的蜡烛图形态函数源码 以CDL2CROWS为例, 看一看c语言的源码: 有关的源码文件包括 d:\Documents\Pictures\ta-lib\c\src\ta_func\ta_ ...

  2. C++ Opengl图形颜色源码

    C++ Opengl图形颜色源码 项目开发环境: 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1,三方库:OpenGL. 项目功能: 创建一个有颜色的图 ...

  3. Python量化投资——mplfinance最佳实践:动态交互式高级K线图(蜡烛图)【源码+详解】

    用mplfinance实现全功能动态交互式K线图 手把手用`python`+mplfinance实现高级K线图 ` mplfinance`的基本K线图 目标 实现自定义风格和颜色 图表尺寸调整.相关信 ...

  4. Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】

    用python实现全功能动态交互式K线图 手把手用`python`一步步实现动态交互式K线图 ` mplfinance`的基本K线图 目标 实现自定义风格和颜色 图表尺寸调整.相关信息的显示 添加完整 ...

  5. MDSF:发布图形编辑器源码OpenGraphicEditor

    OpenExpressApp(开源信息系统开发平台之OpenExpressApp框架.pdf)的建模,打算是基于GOPPRR模型来做的,为了支持更灵活的画图,所以采用了直接使用GEF.这是使用GEF做 ...

  6. vue大括号里接受一个函数_vue源码探究(第四弹)

    vue源码探究(第四弹) 结束了上一part的数据代理,这一部分主要讲讲vue的模板解析,感觉这个有点难理解,而且内容有点多,hhh. 模板解析 废话不多说,先从简单的入手. 按照之前的套路,先举一个 ...

  7. js文件里获取路由 vue_【源码拾遗】从vue-router看前端路由的两种实现

    本文由浅入深观摩vue-router源码是如何通过hash与History interface两种方式实现前端路由,介绍了相关原理,并对比了两种方式的优缺点与注意事项.最后分析了如何实现可以直接从文件 ...

  8. 修改拦截器里的请求头_OkHttp4 源码分析(1) 请求流程分析

    square/okhttp​github.com 本文基于OkHttp4.7.1分析 同步请求示例代码 OkHttpClient client = new OkHttpClient.Builder() ...

  9. 分享一个在内存里搜索QQ号码的源码,源自看雪论坛

    源码出于看雪论坛.源址已佚.先谢过 看结果         耗时47微秒 #include <windows.h> #include <tlhelp32.h> #include ...

最新文章

  1. php安装gb,php安装程序的原理
  2. SpringMVC(二八) 重定向
  3. 元素失去焦点(隐藏软键盘)
  4. 架构设计的目标与衡量
  5. Redis集群:哨兵(Sentinel)
  6. 机器学习(4.文本数据的特征抽取(第二种TfidfVectorizer(TF-IDF)))
  7. 简易 Vue 构建--篇四
  8. python写一个表白程序_用Python个女神做一个表白神器
  9. Immutable 操作在 React 中的实践
  10. Python代码测试 - unitest\doctest\nose\pytest
  11. 楼主,不知道为什么这么流行
  12. C#使用LitJson解析JSON
  13. WEB视频自适应(下)
  14. 阿里云ECS服务器退订
  15. burp暴力破解 ——合天网安实验室学习笔记
  16. 代码质量保证体系(上)
  17. c语言实现123456789变为147258369的方式是输出
  18. ECMAScript语法+关键字和保留字
  19. android edittext 输入法表情,Android开发中EditText禁止输入Emoji表情符
  20. python3 时区 时间戳 指定输入时间为东八区时间、北京时间

热门文章

  1. Object_C与JavaScript交互使用总结
  2. django2自动发现项目中的url
  3. Linux下后台任务管理screen的常见用法(命令)
  4. mysql limit分页查询效率
  5. SILVERLIGHT访问WCF时通过WEB.CONFIG 指定服务器地址
  6. boost正则库匹配ASII编码的中文、全角字符示例
  7. 信用卡-可恶的招商银行,可恶的循环利息
  8. 一个成功的Jsp程序员该怎样学习JSP呢?
  9. Go语言---字符串的基本操作
  10. HTML+CSS实现轮播图效果