云淡风轻

  • 量化与交易
  • 关于站长
博学笃志 切问近思
  1. 首页
  2. C++
  3. 正文

在C++中使用TA-Lib

2017年6月12日 3024点热度 0人点赞 0条评论

TA-Lib是开源的金融时间序列技术指标计算库,支持多语言,多平台,支持包含基本向量计算和各种常用技术指标的计算以及K线形态的识别功能,支持C/C++,C#,java,python和excel。
在VS中使用TA-Lib
下载msvc源码http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-msvc.zip
解压后打开\ta-lib-0.4.0-msvc\ta-lib\c\ide\vs2005\lib_proj\ta_lib.sln编译,编译完成后运行ta_regtest.exe,位于ta-lib/c/bin目录,以确认dll调用无误。即可配置include和link路径。

不过需要注意不同编译配置选项,要与调用ta lib的主程序一致,否则会直接crash

静态库名称使用运行时DLL多线程包含调试信息
ta_libc_csr.lib---
ta_libc_csd.lib--是
ta_libc_cmr.lib-是-
ta_libc_cmd.lib-是是
ta_libc_cdr.lib是是-
ta_libc_cdd.lib是是是

调用TA-Lib只需include一个头文件ta_libc.h,在调用指标计算函数前,调用且仅调用一次TA_Initialize函数
所有TA-Lib函数体均为如下形式

TA_RetCode TA_MAX( int    startIdx,
                   int    endIdx,
                   const double inReal[],
                   int           optInTimePeriod, /* From 2 to 100000 */
                   int          *outBegIdx,
                   int          *outNBElement,
                   double        outReal[] );

startIdx和endIdx:输入数据计算范围,函数只计算从startIdx 到 endIdx参数范围内的输入数据;
inReal:输入数组,有的指标不止一个输入数组,所有的输入数组名都已“in”开头;
optInTimePeriod:opt开头的为可选输入,一般就是指标的参数。如果不关心以“optIn”开头的参数,只需指定TA_INTEGER_DEFAULT或TA_REAL_DEFAULT(取决于参数类型);
outReal:输出数组,有的指标不止一个输出数组,输出数组名都以“out”开头
outBegIdx:指定输出结果的起始index,这个index不是输出数组的index,输出的index都是从0开始
outNbElement:指定输出结果的个数,最后一个有效输出即

outReal[outNbElement-1]

每个TA_XXXX函数都有对应的TA_S_XXXX版本,区别仅仅是输入参数类型为float
另外,因为输出数组往往比输入数组小,为优化内存资源管理,TA-Lib提供TA_XXXX_Lookback函数用以内存分配,因此outReal数据内存分配有三种方式

allocationSize = endIdx + 1;

优点:指定从0到endIdx。易于理解和实现
缺点:指定范围很小时,可能会浪费很多空间

allocationSize = endIdx - startIdx + 1;

优点:指定从startIdx到endIdx,易于实现
缺点:分配略大于需要。例如,计算区间为30的SMA,由于需要回溯(lookback),会浪费29个元素的存储空间。

lookback = TA_XXXX_Lookback( ... ) ;
temp = max( lookback, startIdx );
if( temp > endIdx )
   allocationSize = 0; // No output
else 
   allocationSize = endIdx - temp + 1;

优点:优化分配空间算法;
缺点:实现略显复杂
例如TA_MAX_Lookback(10)将返回9,即前9个元素不产生输出

标签: 暂无
最后更新:2017年10月31日

世平矿

博学笃志,切问近思

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

世平矿

博学笃志,切问近思

分类
  • C++
  • 交易执行
  • 其他
  • 区块链
  • 固定收益
  • 技术及运维
  • 技术指标
  • 数据库
  • 机器学习
  • 权益量化
  • 网站
  • 资产配置
  • 量化与交易
归档
  • 2026 年 2 月
  • 2026 年 1 月
  • 2025 年 2 月
  • 2024 年 12 月
  • 2022 年 1 月
  • 2021 年 6 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2019 年 4 月
  • 2018 年 12 月
  • 2018 年 11 月
  • 2018 年 10 月
  • 2018 年 9 月
  • 2018 年 8 月
  • 2018 年 6 月
  • 2018 年 5 月
  • 2018 年 4 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 12 月
  • 2017 年 11 月
  • 2017 年 10 月
  • 2017 年 9 月
  • 2017 年 7 月
  • 2017 年 6 月
  • 2017 年 5 月

COPYRIGHT © 2026 lishiping.site. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang