技术:VS2015 Update3 + QT 5.11.2 + BOOST 1.68 + QT VS Tools + C++11
 

概述

模仿外汇MT4的界面

详细

本Demo讲述的范畴:

K线的展示(小键盘方向操作,鼠标操作),QT的使用,客户端大致的框架展示。

开发环境:

win10 64 位+VS2015 Update3 + QT 5.11.2 + BOOST 1.68 + QT VS Tools + C++11

概述

涉及业务:

模仿MT4界面,包括MDI窗口,K线图,鼠标操控的放大,缩小,十字线移动。

涉及技术:

一个高性能行情客户终端架构,大致技术包括如下(本DEMO覆盖了部分):

1.定义业务层

2.网络数据接入与路由层

3.数据序列化与反序列化

4.Reactor事件驱动

5.订阅与取消订阅工具

6.广播器与消息系统

代码目录结构:

VS2015里面的目录:

框架代码在MainFrame目录里面

K线业务在Kline里面

详细说明

一。K线图业务

k线主图一般用蜡烛图,原理图如下:

蜡烛图显示的信息包括开盘,高点,低点和收盘价。

蜡烛图包括两部分 — 真实和阴影图(也称为影线。)

阴影是高位和低位线,高位的顶点是当时的最高价。低位的下方代表当时的最低价格。

红色代表收盘价低于开盘价。上方是开盘价,下方是收盘价。

绿色是收盘价高于开盘价,上方是收盘价,下方是开盘价。(国外的标准,国内正好相反)

MT4就是如下这个效果:

这里的图标demo只为展示,没有什么复杂架构,直接从github下了份代码,进行了修改,添加了消息事件。

二.框架

1.这里用的是典型的三层架构:

界面层是界面框架,菜单,图表等要素,在代码里面主要以main_frame里面实现;

逻辑层以数据管理层为主,在代码trade_manager里面实现, 单例模式被上级使用;

IO层以网络IO为主,在代码net_manager里面实现,单例模式被上级使用;

2.流程

2.1业务流程至上而下:

main_frame到trade_manager: 代码 g_TraderCpMgr.Subscribe(E_REFRESHFUND, this);

trade_manager到net_manager: 代码net_manager::Instance()->Subscribe(this);

2.2业务流程从下至上:

2.2.1 net_manager到trade_manager:net_manager::OnFrontConnected()等网络事件回报里面往上层回调,注意下定义(class trade_manager:public packet_receiver)

2.2.2 trade_manager到main_frame:(见广播器定义)

typedef QMap<int, CBroadcaster> QMapBDR;

QMapBDR m_mapBdr;

CBroadcaster::Broadcast通过QT的消息发送到UI层,main_frame通过QT的cuatomEvent来处理。

3.K线

auto_grid是基类

kline_grid是绘制K线类

data_file是数据类

4.运行目录

运行程序: x64\Release\BLClient.exe

模拟序列数据: dataKLine.txt

三 。总结

以上着重描述了数据在框架的传递,代码很清晰的列在一个目录,没有网络数据回报,但是在架构上是个很精简的工程,定义了分类消息的广播器,可以自定义路由,进行分类处理网络数据。

程序在release模式下运行,可调试。

基本可以结合前面CTP的例子,自己处理解包,可以做一个行情系统出来。

参考:

上海期货交易所CTP行情和交易接入

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

高仿MT4行情终端(K线图+操控+简单架构)的更多相关文章

  1. android 股票K线图

    现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的资料,所以我特地写了一个demo在此处给大家分享一下. 下面是做出来的效果图: 这个 界面 ...

  2. canvas绘图,html5 k线图,股票行情图

    canvas绘图,html5 k线图,股票行情图 canvas跟其他标签一样,也可以通过css来定义样式.但这里需要注意的是:canvas的默认宽高为300px * 150px,在css中为canva ...

  3. K线图学习

    本博文(适合入门的股民朋友)内容来自网络,股市有风险,入市需谨慎 一.起源 K线图(Candlestick Charts)又称蜡烛图.日本线.阴阳线.棒线等,常用说法是“K线”,起源于日本十八世纪德川 ...

  4. 如何看K线图基础知识

    在日K线图中一般白线.黄线.紫线.绿线依次分别表示:5.10.20.60日移动平均线,但这并不是固定的,会根据设置的不同而不同,比如你也可以在系统里把它们设为5.15.30.60均线. 你看K线图的上 ...

  5. 怎样看K线图(实图详解)

    K线图由开盘价.收盘价.最高价和最低价组成.       上面两种图叫作实体红K线和实体黑K线,实体红K线意味买力强劲,市场有强烈的做多欲望,此时可持股待涨.实体黑K线则代表市场完全进入恐惧状态,如果 ...

  6. Highcharts candlestick(K线图)案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. C#下如何用NPlot绘制期货股票K线图(2):读取数据文件让K线图自动更新

    [内容介绍]上一篇介绍了K线图的基本绘制方法,但很不完善,本篇增加了它直接读取数据的功能,这对于金融市场的数据量大且又需要动态刷新功能的实现很重要. [实现方法] 1.需要一个数据文件,这里用的是直接 ...

  8. 利用JFreeChart绘制股票K线图完整解决方案

    http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...

  9. 如何从零绘制k线图 -- 原生js canvas图表绘制

    样式如下图 源码地址: https://github.com/sutianbinde/charts 编写这个需要具备canvas基础,如果没有canvas基础可以学习我前面的cnavas基础博客. 具 ...

随机推荐

  1. C++中全排列算法函数next_permutation的使用方法

    首先,先看对next_permutation函数的解释: http://www.cplusplus.com/reference/algorithm/next_permutation/?kw=next_ ...

  2. POJ 1284 Primitive Roots (欧拉函数+原根)

    <题目链接> 题目大意: 满足{ ( $x^{i}$ mod p) | 1 <=$i$ <= p-1 } == { 1, …, p-1 }的x称为模p的原根.给出p,求原根个数 ...

  3. UVa11988 Broken Keyboard 损坏的键盘【list】

    题目链接:https://vjudge.net/problem/UVA-11988 题目大意: 键盘的home键和end键出现了问题. 在输入一段文本时,home键或end键可能会自动被按下,home ...

  4. 关于GitHub中文乱码的问题

    其实跟Git里中文乱码相比,这个问题好解决得多. GitHub中的乱码是由于其使用的编码与Windows记事本的默认编码不同.只要在本地将编码改成UTF-8,再重新push就可以了. 修改编码的方法是 ...

  5. BZOJ.5289.[AHOI/HNOI2018]排列(贪心 heap)

    BZOJ LOJ 洛谷 \(Kelin\)写的挺清楚的... 要求如果\(a_{p_j}=p_k\),\(k\lt j\),可以理解为\(k\)要在\(j\)之前选. 那么对于给定的\(a_j=k\) ...

  6. Django项目——CRM

    一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后面陆续加上一些操作, ...

  7. 备份LeetCode OJ自己编写的代码

    常泡LC的朋友知道LC是不提供代码打包下载的,不像一般的OJ,可是我不备份代码就感觉不舒服- 其实我想说的是- 我自己写了抓取个人提交代码的小工具,放在GitCafe上了- 不知道大家有没有兴趣 ht ...

  8. BZOJ1889 : Maximal

    二分答案,判断是否存在合法方案使得每个数都不超过$mid$. 考虑网络流建图: $i$点的流量下限为$\max(a_i-mid,0)$,费用为$1$,故拆点进行限制. $i$向$i+1$.$S$向$i ...

  9. [P2850][USACO06DEC]虫洞Wormholes (最短路)

    死活调不出来 后来是发现这题建边的原因…… 吐血.jpg 所谓的虫洞传说也就是负边了 然后这里打的spfa和原来的不一样 感觉hzwer大佬的spfa好强啊…… 也更易写一点 贴代码 #include ...

  10. BZOJ2243[SDOI2011]染色——树链剖分+线段树

    题目描述 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221 ...