郁金香指标开源库的使用--(tulipindicators-0.8.4)
瞎逛发现最新出了这么一个指标库,有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)的更多相关文章
- Android6.0运行时权限(基于RxPermission开源库)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...
- 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)
0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...
- 使用的一些支持swift3.0的开源库
#解决键盘弹起遮挡工具 pod 'IQKeyboardManagerSwift', '~>4.0.6' #多种类型弹出框 pod 'SCLAlertView', :git => 'http ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- Java下好用的开源库推荐
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定 ...
- 【转】用JitPack发布开源库时附加文档和源码
来自:http://www.gcssloop.com/course/jitpack-sources-javadoc 用JitPack发布开源库时附加文档和源码 很早之前写过一篇用JitPack发布An ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- .NET蓝牙开源库:32feet.NET
在用C#调用蓝牙编程一文中我留个小悬念就是:InTheHand.Net.Personal.dll是怎么来的?这篇文章来解答这个问题,InTheHand.Net.Personal.dll就是来源于今天要 ...
随机推荐
- 使用.Net访问Office编程接口(PIA和IA的区别)
在这篇文章里面,我将向大家介绍如何在.Net中访问Office所公开的编程接口.其实,不管是使用哪种具体的技术来针对Office进行开发(比如VSTO,或者用C#编写一个Office Add-in,或 ...
- Python实例---利用正则实现计算器[参考版]
利用正则进行运算规则的计算 版本一: # import re # # ss = '1 - 2 * ((60 - 30 + (-40/5) * (9 - 2 * 5 / 3 + 7 / 3 * 99 / ...
- WCF已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectio ...
- August 08th 2017 Week 32nd Tuesday
The very essence of romance is uncertainty. 浪漫的精髓就在于它充满种种可能. Romance is the glamour that can turn th ...
- Vim 编辑器及其基本操作
实验楼某些课程有用 Vim 编辑器来写代码,因此有了这篇博客,据说是上古神器,当然主要目的是基本操作. Vim 编辑器 Vim(Vi IMprove) 是 Linux 系统上的最著名的文本/代码编辑器 ...
- list 去重并保持原来排序
public <T> List<T> removeDuplicateKeepOrder(List<T> list){ /* Set set = new HashSe ...
- yarn logs -applicationId [applicationID]
yarn logs -applicationId application_1435648583743_0001 报错: tmp/logs/.../application_1435648583743_0 ...
- css属性之flex属性
flex属性 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间.是一个简写属性,可以同时设置flex-grow, flex-shrink, flex-basis三个子属性. /* Basic ...
- android中反射技术使用实例
在计算机科学领域.反射是指一类应用,它们能够自描写叙述和自控制.也就是说,这类应用通过採用某种机制来实现对自己行为的描写叙述(self-representation)和监測(examination), ...
- Codeforces441A_Valera and Antique Items(水题)
Valera and Antique Items time limit per test 1 second memory limit per test 256 megabytes input stan ...