瞎逛发现最新出了这么一个指标库,有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;
具体代码代码见:(下载)