自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 BackTrader学习日志01-第一个例子代码-1

第二天:由于习惯了使用VS工具进行单步或逐句调试程序,所以先查了一下资料,使用pycharm是如何调试的:其实本人还是喜欢用spider,可能是习惯问题:例子还是用昨天的例子在例子代码开头即是from xxx import xxx,其实这相当于C语言或其它语言的头文件包含的作用,在任何一种编程语言来说,任何函数都必须先定义或先声明后定义之后,才能被调用,python也不例外,所以需要用到什么东西,都需要先包含进来,而python中需要使用内置库也好,第三方库也好,都必须先导入。这个“库”其

2022-01-16 16:00:11 571

原创 BackTrader学习日志00-从安装开始

第一天首先,BackTrader就不作介绍了,直接获取源码回来:方法一:在Backtrader的参考手册上,直接使用命令来安装,这很多时候是在Mac或Linux平台下直接执行即可,如果在Windows平台下的话,最好直接安装一下Anaconda工具集,然后再使用pip install backtrader来安装,因为backtrader是使用Pyhon语言写的,那么运行环境和编程语言下,必须要求会一点Python,所以Anaconda似乎是必选项。方法二:去backtrader的官网,再转到Githu

2022-01-16 13:51:09 1786

原创 数据排版--大概思路

首先是行情数据:1.数据服务端:一、数据服务端负责历史数据的存放:当客户端连接上服务器之后,首先是要告诉服务器,你需要的是哪些合约品种的行情,因为不同的交易者所需要的数据是不一样的,后续可能会把全市场的行情都传送,但就目前而言,这样的数据传输量较大,而且速度慢,如果是按流量计费的话,成本也高,所以目前来说,只针对主力合约或准主力合约的行情。二、数据服务端的历史行情数据只提供1分钟K线数据,而且以当根Bar的开始时间作为记录(有些软件是以结束时间作为记录的)。三、实时行情的传送也是按最新的1分钟K线

2021-11-08 13:58:46 12919

原创 一个简单的界面

有了前文的说明,现在就做一个简单的界面:在配置中,可以设置数据服务器的配置,因为后续是准备做一个数据服务器,为客户端提供1分钟基本行情数据,实现数据与交易分离。如果不分离的话,每次关闭客户端,那么数据则会丢失,这样的后果可不是咱们想要的,为了保证数据的及时性和准确性,使用数据服务器势在必得。另外想说的是,后续策略的都做成动态库,在客户端,把策略基类封装一下即可,不需要知道太多的细节。、在这里提出一个“策略元”的概念,其实就是策略与账号、合约的一种绑定关系,不同平台不同全名,而我取名为“策略元”。

2021-11-08 06:05:03 309

原创 带界面的程序化交易软件-从今天开始

之前在B站上面也演示了一下以前做的界面程序,但总觉得有点别扭,所以就暂停了一段时间。https://www.bilibili.com/video/BV1WB4y1w71g?spm_id_from=333.999.0.0原来做的时候也没有什么思路,想到哪就做到哪,现在的想法是,如果自己没有好的设计,则参考目前流行的软件的思路进行模仿。那么目前在国内做程序化平台较为流行的也就MC,TB,文华,首先,排除文华的,因为他的界面偏向于行情分析,而不是注重交易。TB的界面也是偏重于行情分析和策略开发,交易部分倒

2021-11-01 11:56:04 370

原创 C/C++ 动态库嵌套调用

直入正题,DLL的使用广泛,但有时候(经常)自己需要做个动态库的时候,会遇到需要调用别人做的动态库,所以今天来简单的讲讲这样嵌套调用DLL的事。首先,弄2个简单的DLL出来设置为空项目,再添加一个头文件,一个源文件,这两个项目独立编译生成DLL应该是没问题的,那么,我们再来弄个DLL,这个DLL就要调用前面这两个DLL了。还是选择空项目,然后添加一个头文件和源文件:再把项目的目录设置一下,由于几个项目都是在一个解决方案里面,所以生成的DLL文件默认都是在Debug目录下面,设置好目录之后,生

2021-10-28 11:35:37 884

原创 MT5直接调用C++ Dll库

一、 MT5简介MT5本身应该不需要过多介绍了,就是强大。二、获取MT5安装程序https://www.metatrader5.com/,直接下载并安装打开MT5界面,看到导航窗口,右击服务,创建一个新服务填上相关信息,点击完成即可。现在一行代码没有写,点击MetaEditor菜单上的编写,编译这个服务,然后在MT5l中导航窗口刷新一下,就看到新建的服务程序了。也可以看到MT5的安装目录下,MQL5下面的Services目录下已经生成可执行程序。然后我们回到VS2015上面来,新建一

2021-10-24 16:32:57 1026 1

原创 一个奇思妙想

最近有时候要搞一下开发,但时间长了,就想休息一下,反正无聊,所以就看看电影或…最近看到有个开源的平台,BackTrader,然后抱着看看人家写的交易平台可能会学点什么的心态,在网上找了些资料来看了看,有一些是文字的,官方英文版的资料就没兴趣看了,虽然以我英语专业的水平,看这文档应该不成问题,但现在人老了,也懒了,so …反正大概的框架看一个图应该就差不多了,所以在网上拿了个图出来看看。这样一看,似乎跟VNPY的框架图又很相似,你懂的。反正,怎么说,都是由几个大的模块组成,相互协作完成任务的。首先

2021-08-03 21:47:40 117

原创 推倒再推倒 不断尝试才能不断进步

细数一下,自己尝试写基于CTP的程序化交易软件有以下:1、第一次,是基于控制台的,就是网上找回来的别人写的demo,再修修改改而成的。2、第二次,基于前面的版本,做了个有界面的,当然,这界面只是为了输出一些数据更容易查看,控制台的输出是怎样的,大学应该都知道的。3、第三次,基于第一次的版本,做成Linux平台版本4、第四次,基于第二次版本,做成了一个只记录行情数据的DataRecorder,尝试把行情分离出来5、第五次,基于第四次和第二次,做成了有界面的,但行情数据没有分离的一个集合,而且添加了画

2021-04-02 17:03:41 126

原创 TinyXML2的简单使用

配置文件的读取方面,以前是用最笨的方法,使用C语言按字符来读取,所以配置文件也很简单,就是一个文本文件,现在TinyXML2出来的,使得读取XML文件很轻松,所以也应该向这边去转变。在使用TinyXML2之前,首先看一下XML文件的格式<?xml version="1.0" encoding="UTF-8"?> //声明 //根节点 //第二层子节点 //第三层子节点,包含多个属性,以空格隔开This is … //第二层子节

2021-02-06 12:53:31 747

原创 再一次推倒重来

无奈中的无奈,原本是想做个交易软件拿来自己用的,所以功能实现了就基本OK了。但是..........很偶然的一天(前几天),因为我现在实盘交易是使用TB来的,所以有时候也会上官网上去看看(无聊的时候),但就在前几天,我发现了一个问题,不知道跟我一样使用TB来实盘的朋友有没有发现:TB官网上的软件下载居然没有了之前吹得火的极速版了,而在论坛中还是能搜得到关于极速版的一个信息:关于极速版为什么下架,我不知道原因,我只知道它被下架了。但是由此引出一系列问题,旗舰版也会被下架吗?TB还做下去吗?之前使用极速

2020-12-30 01:37:20 217

原创 发送消息和数据到主窗口----测试

基本框架已经完成了一半,现在就是测试一下,从子窗口中把消息和数据都传回主窗口,既然要传数据,那么,随便定义一个数据结构,然后,在具体的行情类中,使用其中保存的子窗口的句柄来把消息和数据传给主窗口void CCTPMdSpi::StartMd(){ BarData* bar = new BarData; bar->BarTime = 210205; strcpy_s(bar->InstrumentID,sizeof("ABCD"), "ABCD"); LPARAM a = WM_AB

2020-12-18 00:33:51 177

原创 基本框架

上篇中提到的程序框架是这样的:那么,现在来实现一下,首先,窗口包含一个行情响应对象,一个创建行情响应对象的抽象工厂,行情响应对象从抽象工厂中创建,在主窗口中给出特定的工厂方法,所以后续要改变的话,在主窗口中修改即可,子窗口中的代码就不需要改变了,这样也算是比较大程序的解耦了(在自己能力范围内考虑)具体代码就不附上了,给出个链接请各自下载好了。源码:链接:https://pan.baidu.com/s/1en4zgBMz65_nLACM0KoU7A提取码:fd6g...

2020-12-13 11:48:15 652

原创 利用MFC尝试事件驱动

首先是建立一个MFC程序,基于对话框的(最简单的,About对话框也不要了,只留下一个窗口)。把原来的窗口上的控件全部删除,然后添加一个按钮,在按键上添加事件处理响应函数用于测试。新建一个对话框资源,在对话框中添加一个类,类名随便起,在主窗口中的按钮事件处理响应函数中,以非模态方式创建子窗口,因为不需要显示,所以代码如下:void CSendMsgDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 if (ChildDialog == NULL)

2020-12-11 14:15:24 268

原创 基于事件驱动编程

前文已经提过,要模仿VNPY的设计来做,那么其中最重要的莫过于他的核心,也就是基于事件的消息传递。我从CppVnpy项目中找到事件的定义:#define EVENT_LOG "eLog" //# 日志事件,通常使用某个监听函数直接显示#define EVENT_TDLOGIN "eTdLogin" //# 交易服务器登录成功事件#define EVENT_TIMER "eTimer" //# 计时器事件,每隔1

2020-12-11 10:38:41 594

原创 重新设计量化交易软件的思考

任何工程,可能都需要从需求出发,所以我在这里先把自己对量化交易软件的想法先理清晰。其实,我觉得TB是挺好用的,就是有些思想受限制,不能自由发挥,而且行情数据比较慢(其实做中低频的策略也够用了),再一个就是策略的安全性(这个不好说),最后,就是收费的问题(加收25%,相对MC和文华来说,算是便宜的了。)第一、...

2020-12-05 16:54:42 204

原创 推倒重来

随着学习编程时间长了,越来越越发现自己写的程序的问题

2020-11-28 17:17:06 204

原创 CTP交易软件开发----第一章(三)

开始简化流程大家从Demo中可以看得出来,不管是行情登录或交易登录,都需要账号、密码、服务器IP等相应信息才能完成,而这些信息当然是不应该写到代码里面,所以通常的方法是从配置文件中读出来。配置文件也是可以多种多样的,有些人会做成Json格式的,有些人会做成XML格式,身为不是码农的我,当然是希望越是简单越好,所以我直接是纯文本的。有时候,如果在Windows下面,文件要有后缀名,操作系统才会知道应该使用什么软件来打开文件,但为了不让一些人看到自己的账号信息,可以简单的用一个随机字符串来做后缀名,这样一来

2020-05-17 22:32:25 524

原创 CTP交易软件开发----第一章(二)

从上期技术提供的Demo开始讲起(二)本文开始说交易Demo,其实,如果前面行情的Demo已经理解得差不多的话,那么,这个交易Demo也基本上也理解了。当然,交易首先需要登录,登录流程与行情也差不多,有几点要注意的,一、现在证监会要求穿透,所以在请求登录前,首先请求认证,这是Demo中没有的,其实也没什么的,就是多调用一个函数而已:二、交易初始化必须确认结算单(一天内至少要确认一次),如果没有确认结算单,则不能下单交易,所以不管结算单是如何,你都要确认它(结算单应该是不会错的了)。交易登录初始化

2020-05-17 16:41:05 503

原创 CTP交易软件开发----第一章(一)

从上期技术提供的Demo开始讲起(一)既然咱们使用的CTP的API接口,当然最好的教程就看看官方的说明文档了,但是,不知道为什么,本人很多时候上他的官网的时候,有时候能上,有时候不能上,如果你不能上的话,我直接把官方文档共享出来好了:链接:https://pan.baidu.com/s/1GnotRqLV9_oyAgl3E_PcrA提取码:gw9t另外,上期官方提供的Demo也共享出来:链接:https://pan.baidu.com/s/1LzFBTY050yv1TeiInN6W2Q提取码:0

2020-05-17 16:27:10 1717 2

原创 小谈 《日内交易策略--谷物期货交易实战指南》中提到的策略

昨天有空上网看到很多网友都说日内策略很好,而且都比较推荐一本书:《日内交易策略--谷物期货交易实战指南》,所以就下载了电子版的来看了一下,书中讲到他的策略是日内交易的,具体的策略: 从作者所描述的策略入场条件来说,与我们平时看到的日内突破交易策略有很大的相似之外,唯一不同的就是,作者的策略是在第一次突破后,等待有效回调,再次同向突破才进场。这样看来,是不是跟《专业投机原理》中的2B法则很相似呢?其实现在市场上最广泛被人们使用的策略基本都是基于趋势而来的,上面的策略一样,作者也讲了,从当天第一根K.

2020-05-16 11:02:04 2353

原创 CTP交易软件开发----上车前准备

上车前准备第一、工具1、开发工具: 上期技术CTP接口使用的是C++语言开发的,所以我在Windows下面开发使用的工具是VS2013+Visual Assistant,而在Linux平台下,我是直接写个MakeFile来直接编辑生成(因为我是从Windows版本转成Linux版本的)。2、虚拟机: 很多人推荐用VirtualBox,因为免费简洁,而我用的是VMWare,在中国非商用的还是能干活的,你懂的。3、Linux虚拟机: Ubuntu是个人用Linux系统最多的,但我是习惯了Ce

2020-05-16 10:10:33 1031

原创 CTP交易软件开发----栏目总序

@[TOP]栏目总序之前写过几篇关于CTP交易软件 从Windows平台迁移到Linux平台下的注意事项,经过几个月的实盘运行跑策略之后发现,其实这些注意事项都不是重点,因为在实际生产过程中,能让你意想不到的事情总是层出不穷的,下面举几个例子:1、CTP的服务器绝对不可能不会出现问题,这个问题对咱们散户来说,可以算得上是系统性的风险,因为…CTP的服务器真的出现问题的话,咱们几乎不可能收集到有力证据来证明,所以,如果造成较大的亏损,咱们也只好认命了。2、网络总会有不稳定的时候,包括交易所、期货公司服

2020-05-16 09:17:37 448

原创 CTP交易软件-从Windows迁移到Linux平台(3)

本篇讲多线程、同步、互斥第一,多线程在windows下面,多线程的实现是很简单的,当然,在Linux下面也不难。HANDLE PositonMonitorThread = CreateThread(NULL, 0, PositonMonitor, strategy, 0, NULL); //用于策略定时获取账号持仓信息,与自身的理论持仓作对比,达到仓位监控功能。CloseHandle(...

2019-05-28 13:58:33 781

原创 CTP交易软件-从Windows迁移到Linux平台(2)

本篇讲讲Windows下面的C函数库与Linux下面的C函数库有哪些区别1、_access与access在项目中,少不免的需要读写文件,但读写文件之前,总得要判断一下文件是否已经存在,在Windows下面,判断文件是否存在的函数是_access,使用方法可以百度一下;在Linux下,使用access函数来判断。代码分别如下:头文件:io.hif (_access(DirFile, 0) =...

2019-05-28 13:28:12 971

原创 CTP交易软件-从Windows迁移到Linux平台(1)

本篇讲的是概述首先,先讲讲Windows平台和Linux的开发环境的区别。首先说明,开发的编程语言是C++,与CTP的接口开发语言一致,不需要另外封装接口,拿来便可以用。在Windows平台下进行C++项目开发,可能使用VS的人更多一点,而且自己本身也是使用VS2013来做的。再安装个Assist X 就非常的方便了。那么在Linux平台下开发,本人偏向于使用Qt,但由于Qt对中文支持不太...

2019-05-28 13:05:05 840

原创 我的交易系统-第一章 从认识K线开始

我的交易系统第一章 从认识K线开始第一章 从认识K线开始第一章 从认识K线开始一根K线代表一个单位时间内,市场价格波动的轨迹,包含这单位时间内最重要的四个价格。有关K线的含义和类型等内容都可以在网上查到,而在这里,大家只需要大概地了解K线是长什么样子的就足够了,而重点是要求大家清楚K线是怎样动态形成的。这当然需要大家从实际的走势上去亲自体验,只要打开行情软件,就可以看得一清二楚。但要提醒...

2019-05-28 11:03:30 1635

C/C++ 动态库嵌套调用源代码文件

C/C++ 动态库嵌套调用

2021-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除