龙听期货论坛's Archiver

C
+
+


 微信: QQ:

龙听 发表于 2024-11-8 09:36

C++程序化/量化学习视频教程系列 第006节:鼎元C++程序化策略源码分析与模块化功能分类【我们是如何降低C++程序化门槛的?】

C++程序化/量化视频教程系列 第006节:鼎元C++程序化策略源码分析与模块化功能分类【我们是如何降低C++程序化门槛的?】

[mp4]http://mp4.qhlt.club/Cpp-Video/006.mp4[/mp4]

C++程序化学习视频教程系列安排如下:
第一楼:教学视频。一般控制在15分钟左右;
第二椄:视频课程中使用的程式源码。
第三楼:视频教学中需要用到的一些文档或资源。
第四楼:其它的一些边角料,特别是一些经典程序化策略的回测类的部分会放到下面楼层里面。

参与模式如下:
1、希望参与到编写策略与调试方面的工作通过上面的联系方式联系管理员咨询即可。记的加群,有问题第一时间交流,也可以在论坛指定版发贴交流,专用版地址:[url=http://www.qhlt.cn/forum-244-1.html]http://www.qhlt.cn/forum-244-1.html[/url];
2、有意绑定期货账户跑实盘网友可以联系管理员,咨询相关的费用【极低费用!】,以及开通的方式。
3、基于C++策略交易软件具有1、软件小(100兆不到);2、效率高(C++语言);3、功能精(专注于策略);4、对服务噐或电脑兼容性好(老旧电脑都兼容)等优势,特别适合在长期跑程序化的客户朋友,特别是有稳定交易模式客户更适合使用C++构建的交易系统。

联系方式:
C++微信群:[img=180,180]http://p.algo2.net/2024/0922/23852f86ccf81.png[/img]  QQ群:[img=140,180]http://p.algo2.net/2024/0115/3c6af4df957c3.jpg[/img] 管理员微信:[img]http://www.qhlt.cn/link/wx.png[/img];管理员QQ:[img]http://www.qhlt.cn/link/q.png[/img]

龙听 发表于 2024-11-8 10:05

第一部分:整体上分类

[img]http://p.algo2.net/2024/1108/97112c5016572.png[/img]

1、外部依赖项:

[img]http://p.algo2.net/2024/1108/d21af8e054704.png[/img]

2、头文件类:

[img]http://p.algo2.net/2024/1108/348cb99df9401.png[/img]

3、源文件:

[img]http://p.algo2.net/2024/1108/beef11d6b6907.png[/img]

4、资源文件:

[img]http://p.algo2.net/2024/1108/9f001792485f2.png[/img]

龙听 发表于 2024-11-8 10:09

第二部分:说明

1、外部依赖项【谨慎修改】

2、头文件【修改与编辑仅限于 test.h文件】

3、源文件【修改与编辑仅限于test.cpp文件】

4、资源文档【谨慎修改】

[b]整体上来说我们进行C++程序化设计主要的编辑与设计就是集中于【test.h头文件】和【test.cpp资源文件】这两项。环境配置与交易配置相关的模块就由专门技术人员一次性写好后就不用到,我们设计策略的仅集中于策略本身进行创作与设计就可以了,这样就可以从根本上降低了程序化领域中最复杂的C++领域的程序化入门的门槛![/b]

龙听 发表于 2024-11-8 10:24

第三部分:【test.h】头文件模块相关的说明与注释
**** Hidden Message *****

经过我上面的分类与功能模块化处理后,我们在后续的程序化交易过程中仅需要设计与编辑最后面的function变量和策略变量与参数相关的功能模块就行了,其它就不用动了。就是这样降低的C++量化门槛的。

龙听 发表于 2024-11-8 10:36

第三部分:【test.h】头文件主要编辑与设计的变量如下:

1、公式指标设计相关的变量名称:[code]
private:
        //公式指标(function)变量设计(开始)******************************************
        double avg(string period, string inst, int num);
        double highest(string period, string inst, int num);
        double lowerest(string period, string inst, int num);
        double avg1(string period, string inst, int num, int ref);
        double highest1(string period, string inst, int num, int ref);
        double lowerest1(string period, string inst, int num, int ref);
        //公式指标(function)变量设计(结束)******************************************
[/code]以上面的变量为例,我主要设计了AVG(均线公式类似MC中average功能),highest(最高公式,MC中highest功能),lowest(最低值公式,参考MC中lowest功能),avg1(获取上一根均线的数值,参考MC中average[1]功能),highest1(参考MC中highest[1]功能),lowest1(参考MC中lowest[1]功能)。

在后续的教程中我将逐渐将市面上面公式逐渐写出来供大家使用。

龙听 发表于 2024-11-8 10:57

第四部分:【test.cpp】源文件模块相关的说明与注释

全部程式码如下:
**** Hidden Message *****

龙听 发表于 2024-11-8 11:08

第四部分:【test.cpp】源文件模块相关的说明与注释

由于test.cpp文件源码过多,虽然我按功能进行了模块化分类,不过还是大体上说一下功能类似。

1、外部引用类:【勿动】

2、TEST主文件功能性模块;【勿动】

3、公式(function)模块;

4、初始化相关的参数与变量配置与引用模块;

5、点击“运行”与“停止”模块;

6、tick数据策略模块(主模块之一);

7、bar数据策略模块(主策略之二);

8、与交易相关的一些功能性模块及其它琐碎的功能模块;【勿动】

经过上面我的归类,在程序化策略设计中我们主要的使用模块就只有几个需要动即的:公式指标模块、初始参数与变量模块、运行与停止动作模块、tick策略模块(可选),bar策略模块(可选);

特别上上面的tick策略与bar策略,是可以选择的,有人喜欢跑tick策略,有人喜欢跑bar策略。自己选择即可。经过这样一分类是不是感觉C++的程序化设计也不过就是这么几个简单的功能模块了?后在我将逐步教大家如何对他们进行设计。

页: [1]