通达信炒股软件从入门到精通和通达信炒股
前一篇介绍DLL文件绑定,本篇简要说说DLL文件如何编写。DLL程序编写要求稍稍要高一些,需要懂一些编程语言,本篇以MFC为例需要有点C语言基础,本例比较简单。
通达信DLL链接库编写,首先是要搭框架,就是与通达信软件的接口处理;在通达信官网帮助页面可以下载《通达信DLL函数编程规范》,里面有一个WORD简要说明,与一个较老的实例。按说明与实例素材,搭好框架;编写代码就只需在框架内按要求增加功能性代码即可。
下面以编程环境用Visual Studio2017 MFC为例,写个简单的DLL实例。VS2017可以网络搜索下载破解版,此软件比较大需要10G+空间,实际以安装内容大小有不同,必须安装MFC组件。此处就不介绍软件安装,以安装好为例。
打开VS2017,文件——新建——项目,弹出如下图窗口,按图填写,项目名称可自定义,确定后弹出窗口再确定;新建项目完成。
新建项目
新建项目(MFC DLL)
完成项目新建
在新项目中任意打开一个文件,此处打开Dll_Demo.cpp,然后按下图,打开项目根目录。
打开文件所在位置
把《通达信DLL函数编程规范》内的PluginTCalcFunc.h头文件,复制粘贴到项目根目录。
编程规范头文件
粘贴头文件
在项目中添加PluginTCalcFunc.h头文件。下图中第③步点击现有项后,在弹出的窗口选择PluginTCalcFunc.h头文件,并确定添加。
添加资源
添加头文件
用记事本打开DLL编程规范里的TCalcFuncSets.h头文件,复制以下代码到PluginTCalcFunc.h头文件图示位置。
#ifdef __cplusplus
extern "C"
{
#endif //__cplusplus
__declspec(dllexport) BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun);
#ifdef __cplusplus
}
#endif //__cplusplus
头文件粘贴代码
如上图2提示,鼠标移到第20行红色波浪线处右键弹出窗口,选择第一行快速操作与重构,再点击第一行创建CPP文件,如下图:
创建CPP文件
cpp文件
打开《通达信DLL函数编程规范》内的TCalcFuncSets.cpp文件,复制如以下到代码到刚新建的cpp文件,注意语句对齐:
//生成的dll及相关依赖dll请拷贝到通达信安装目录的T0002/dlls/下面,再在公式管理器进行绑定
void TestPlugin1(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
for(int i=0;i<DataLen;i++)
pfOUT[i]=i;
}
void TestPlugin2(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
{
for(int i=0;i<DataLen;i++)
{
pfOUT[i]=pfINa[i]+pfINb[i]+pfINc[i];
pfOUT[i]=pfOUT[i]/3;
}
}
//加载的函数
PluginTCalcFuncInfo g_CalcFuncSets[] =
{
{1,(pPluginFUNC)&TestPlugin1},
{2,(pPluginFUNC)&TestPlugin2},
{0,NULL},
};
//导出给TCalc的注册函数
BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
{
if(*pFun==NULL)
{
(*pFun)=g_CalcFuncSets;
return TRUE;
}
return FALSE;
}
如下图点击生成菜单,生成解决方案,编译通过且生成我们所需的DLL文件。至此框架搭完。此官方实例两个功能函数,一个是输出通达信每次读取多少根K线数据(此数据用户在通达信系统设置里可自定义,K线图缩到最少,输出的数据为总共K线根数);另一个函数输出为传入三个参数的均值。
搭框架完成
设置项目属性,然后重新编译生成Release版dll。
项目属性
生成Release版本
框架完成后,以后要编辑新的功能,只需要在PluginTCalcFunc.cpp中添加新的功能函数代码,并加入到g_CalcFuncSets[]数组,下面举例,把第一个函数更改为求取平均值,等下在通达信画平均线。
把第一个函数全部删除或修改为如下代码,同时修改加载函数那里第一个的名称,改为MA(如下图):
void MA(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)
{//参数1传入收盘价;参数2传入均线周期
int N = int(*pfINb);
float sum;
for (int i = N - 1; i < DataLen; i++)
{
sum = 0;
for (int j = 0; j < N; j++)
sum = sum + pfINa[i - j];
pfOUT[i] = sum / N;
}
}
MA函数
编译通过,若有问题请检查是否按步骤没有错漏,如下图,在提示的路径文件夹中找到Dll_Demo.dll文件,复制到通达信安装路径下的T0002dlls,然后按上一篇文章绑定该DLL到第一号DLL。
绑定DLL
在通达信公式管理器中,新建如下图指标,就是调用dll画均线,同一个函数给不同均线周期即可画出不同的均线。
通达信tn6指标公式
测试公式通过后,主图调用该指标,成功画出三条均线
DLL画均线
这个过程说起来很复杂,明白了就很简单,以后要做的就是在框架内编辑不同的函数代码,根据个人C语言水平,编辑不同功能的股票函数。
过程中如有遗漏,可留言讨论,有其他更好的方法也请指正。
第一部分:引言
通达信就能做策略回测!
上一篇文章,我给大家介绍了一个建立量化交易策略的便捷工具:通达信公式系统中的“专家系统公式”,相信通过上一篇文章的学习,大家已经能够看懂一个一个完整的交易策略的公式框架是怎么样的,同时也能够将买入卖出信号体现在K线图上。还没有看过前一篇文章的可以点击下方链接回顾:
第二部分:回测简介
那么今天我们的主题是,我们可以根据自己的学习和操作经历,通过“专家公式系统”来建立自己的交易体统,但是这个系统到底是站效果如何,可能更多的是我们自己有限的操作中得出的效果,那么这个策略到底在历史数据中是什么样的情况,拉长周期看是怎么样的效果呢?
虽然我们能够按照上一篇文章中介绍的,将买入卖出信号加入到K线图中,似乎是比较直观的,但是到底策略成功率有多少,平均每笔交易盈利多少?整体来说能否实现长期(3年以上)持续稳定收益,仅从下图中看是没办法完成的。
这些问题就是搞量化的人嘴上经常说的“回测”,就是把自己的策略放到较长周期的行情数据中进行模拟操作,以便于分析每一笔交易的成败和整体策略的稳定性。
第三部分:通达信回测实操
那么,我们怎么用通达信来做回测呢?
首先,我们在“系统”菜单栏下,找到“程序交易测评系统”:
点击后就能得到:
因为这里主要是演示功能,帮助大家快速熟悉相关界面和操作,所以就以上一篇中分享的MA交易策略为例,来给大家分享通达信策略回测功能,后续我将会给大家分享一个实战的全流程。
我们可以看到这个系统一共有5个标签页,一步一步操作完毕后,只要你的数据下载完成,就能得到详细地回测数据,我们首先选择MA交易策略,并采用日线回测以及前复权数据,同时将参数设置成5、20,再点击建仓规则:
这里面我们需要设置几个内容:1、就是测评时间段,也就是我们要回测的时间段,我这里设置了向前两年,大家可以根据自己的策略和习惯来设置;2、建仓规则,一般我们选第一个“使用资金”就是用多少资金来买,这里选择全部资金开仓(还可以选择部分资金开仓、固定资金开仓等),“固定数量”在我们实操中不具可行性。
接下来就可以设置“交易方式”:
1、买入的费率,卖出时的印花税和买卖的佣金大家根据自己的情况填入到手续费中即可;2、交易的时机,一般可以选择收盘价,因为有收盘集合竞价,所以就不需要设置滑点,比较简单一些。
接着点击“平仓规则”:
可以看到这里主要是止损止盈的设置,那么这里只是演示用,所以这一步我们先可以忽略,接着点击“测评品种”:
点击添加,直接敲代码,我这里选择了510300(沪深300ETF):
就可以开始点击测评,但是测试之前不要忘了下载数据,我们就得到这个策略在300ETF上的效果了:
以上就是这个均线策略在最近两年的业绩情况,总体来说比较惨,从胜率(40次交易,赚钱的仅为8次)到收益率(-36.24)都被按在地上摩擦。同时最大回撤也接近一半(对多的时候连续亏了47%)。
当然,这也是因为沪深300指数近两年主要是稳定市场的定海神针,所以趋势性行情并不持续,更多展示为震荡行情所致。
下面“评测指标详情”则是详细的报告,大家可以仔细地去看一下这个报告的内容,整体比较详细和专业,基本上一个策略我们要看他好,好在哪里,基本都包含了。所以一个策略或者一个基金,收益率只是其中一个指标。如果你能看懂“程序交易测评系统”,不光是能为你自己的策略进行回测,而且还能够更专业地去判断基金的优劣。
上一篇:新手炒股开户哪个证券公司比较好
下一篇:002376,股票在线看盘

炒股技巧
技术指标
炒股入门
炒股专题
炒股问题
外部文章
网站首页