技术: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. Shiro笔记(一)Shiro整体介绍

    介绍:是一个java的安全(权限)框架 可以完成的功能:认证登录(Authentication).授权(Authorization).加密(cryptography).会话管理(session man ...

  2. forward 和redirect

    http://www.cnblogs.com/davidwang456/p/3998013.html

  3. Service插件化解决方案

    --摘自<android插件化开发指南> 1.ActivityThread最终是通过Instrumentation启动一个Activity的.而ActivityThread启动Servic ...

  4. Philosopher’s Walk(递归)

    In Programming Land, there are several pathways called Philosopher’s Walks for philosophers to have ...

  5. ISP PIPLINE(零) 知识综述预热

    本文为camera isp pipline概述 ISP,即image signal processing.为图像成型做的处理工作.适应不同光学环境下图像的还原. pipline流程如下: 光通过LEN ...

  6. iOS中 H5的input输入框focus()无法自动拉起键盘(解决方法)

    ios的hybird APP 无法使用focus()获取焦点和键盘的问题. 解决方案 原来,在App的配置文件(config.xml),里面默认会有一句 1 <preference name=& ...

  7. 2111 ACM 贪心 水题

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2111 题意:知道背包容量和物品单价.体积.问能买到的最大价值? 注意:单价指的是单位体积的价格 思路:先把 ...

  8. 后台执行Bitmap加载

    如果加载图片时,使用的图片数据源不是来自于内存,而是来自硬盘或网络时,一般不会再UI线程执行图片加载操作. 图片的加载速度取决于很多方面(往往具有不可预测性),比如:硬盘或者网络的读写速度.图片大小. ...

  9. Android JNI 增强应用程序性能

    JNI全称Java Native Interface. 它为托管代码(使用Java编程语言编写)与本地代码(使用C/C++编写)提供了一种交互方式.它是与厂商无关的(vendor-neutral),支 ...

  10. DWM1000 长距离模块讨论

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 作为超宽室内带测距/定位的代表,官方给出的模块标准距离30-50m,而目前X宝上有很多 ...