高仿MT4行情终端(K线图+操控+简单架构)

Posted demodashi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高仿MT4行情终端(K线图+操控+简单架构)相关的知识,希望对你有一定的参考价值。

技术: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.运行目录

运行程序: x64ReleaseBLClient.exe

模拟序列数据: dataKLine.txt

 

三 。总结

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

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

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

 

参考:

 

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

 

 

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

以上是关于高仿MT4行情终端(K线图+操控+简单架构)的主要内容,如果未能解决你的问题,请参考以下文章

python股票交易接口实现股票分时图K线图及抓取level2行情的开发程序分析

MT4指标Free Analyzer — 彩虹式均线趋势外汇交易系统

用Python绘制专业的K线图含源代码

用Python绘制专业的K线图含源代码

股票K线图怎么分析的

C#下如何用NPlot绘制期货股票K线图?