郁金香指标开源库的使用--(tulipindicators-0.8.4)

时间:2021-03-07 18:57:13

瞎逛发现最新出了这么一个指标库,有100多种指标的函数库,文档写的比较好,重要的是作者一直在维护。

把它编成库,然后测试一下,可用于自动交易,策略交易等开发。

1.下载地址

https://github.com/TulipCharts/tulipindicators

2.编译成DLL,和lib

打开VS2015,文件->新建->项目...

然后,选择“win32 控制台程序”   ,导向最后一步,选择“空项目”,反选“预编译头文件”

3.导入文件

右键工程属性  ->  "在文件资源管理器中打开文件夹"   -》把“indicators.h” 文件,以及“utils”,“indicators”2个目录拷贝到工程下     -》“显示所有文件”

4.修改所有文件为在项目中包含

选中文件右键-》在项目中包含

右键-》工程属性->改为DLL类型

5.生成导出DLL

要生成DLL和lib导出库,需要有导出标记“__declspec(dllexport)”,在函数声明和实现文件的头部都需要加上这个字串。

在函数中发现一个共性,函数名称都已“ti_”开头  ,返回类型为“int”,于是打开工程替换(CTRL + H),选中“整个解决方案” ,“__declspec(dllexport) int ti   ”   替换掉 “   int ti_” ,选择全部替换,最后爆出工替换“369”处。

6.编译

indoicatorLib.vcxproj -> E:\work\tulipindicators-master\indoicatorLib\x64\Release\indoicatorLib.dll

提示成功。

 7.加入测试代码

就在本工程程添加项目:右键工程  -》 新建项目    。。 。 添加一个工程“”TestIndicator"(一个控制台空项目,应用程序工程).

添加测试cpp,文件main.cpp:

文件main.cpp:

 #include "test_sma.hpp"
#include "test_crossover.hpp"
#include "test_boll.hpp" int main()
{
test_crossover();
test_sma();
test_boll(); return ;
}

列出一个上穿指标测试代码:

 void test_crossover()
{
TI_REAL input1[] = { , , , , , , , , , , };
TI_REAL input2[] = { , , , , , , , , , , };
/* Example usage of Crossover */
/* Assuming that 'input1' and 'input2' are pre-loaded arrays of size 'in_size'. */
TI_REAL *inputs[] = { input1, input2 };
TI_REAL options[]; /* No options */
TI_REAL *outputs[]; /* crossover */ int in_size = ;
/* Determine how large the output size is for our options. */
const int out_size = in_size - ti_crossover_start(options); /* Allocate memory for output. */
outputs[] = reinterpret_cast<double *>( malloc(sizeof(TI_REAL) * out_size) );
assert(outputs[] != ); /* crossover */ /* Run the actual calculation. */
const int ret = ti_crossover(in_size, inputs, options, outputs);
assert(ret == TI_OKAY); printf("The output data is: ");
print_array(outputs[], out_size); } 输入序列:
index:0~N

序列1:{4, 4, 6, 6, 6, 4, 4, 6, 5, 5, 5}
序列2:{5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}

输出序列:

index:1  ~  N

{0, 1, 0, 0, 0, 0, 1, 0, 0, 0}

序列1和序列2,数据长度相同,crossover输出从index1开始,检测由下往上的上穿,1表示true;

郁金香指标开源库的使用--(tulipindicators-0.8.4)

具体代码代码见:(下载)