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

本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.广播器与消息系统

代码目录结构:

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

VS2015里面的目录:

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

框架代码在MainFrame目录里面

K线业务在Kline里面

详细说明

一。K线图业务

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

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

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

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

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

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

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

MT4就是如下这个效果:

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

这里的图标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

QMapBDR m_mapBdr;

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

3.K线

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

auto_grid是基类

kline_grid是绘制K线类

data_file是数据类

4.运行目录

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

模拟序列数据: dataKLine.txt

三 。总结

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

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

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

参考:

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

Original: https://www.cnblogs.com/demodashi/p/10503427.html
Author: demo例子集
Title: 高仿MT4行情终端(K线图+操控+简单架构)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551593/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • bitbucket安装

    1,安装文件下载 官网bin文件下载地址:https://www.atlassian.com/software/stash/downloads/binary/atlassian-b…

    技术杂谈 2023年6月1日
    079
  • 燕千云YQCloud数智化业务服务管理平台发布1.11版本

    2022年3月25日,燕千云 YQCloud 数智化业务服务管理平台发布1.11版本。新增客户服务管理模块、优化IT服务管理功能、增强燕千云与其他平台的集成能力、支持更多的业务服务…

    技术杂谈 2023年7月23日
    091
  • 异步导入导出Excel方案

    一、异步导出Excel文件 1、设计思想 用户无需在当前页面等待导出结果,点击导出按钮后服务端即可返回前端提示用户导出处理中请到下载中心查看结果。 具体业务文件导出实现由后台异步处…

    技术杂谈 2023年7月11日
    0113
  • Python数据分析–Numpy常用函数介绍(4)–Numpy中的线性关系和数据修剪压缩

    摘要:总结股票均线计算原理–线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是专门用于线性代数计算的。作一个假设,就是一个价格可以根据N个之前的价…

    技术杂谈 2023年7月25日
    0137
  • 最小化安装debian11

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月25日
    0233
  • 子串次数——类似KMP

    老规矩 先来看问题 字符串a 在A中出现了多少次 求次数 。 当然有很多种算法 最简单的 一个一个找呗 不过这种太麻烦 我们不讲这种 我在写这个算法的时候 用到了KMP算法的部分内…

    技术杂谈 2023年7月23日
    088
  • Go sync.Map

    读写共享map 执行: fatal error: concurrent map writes 问题:内置的map不是并发安全的,要为map加锁来保证并发的安全性了 特点:开箱即用且…

    技术杂谈 2023年5月31日
    092
  • Nightingale 监控报警平台

    Nightingale 从官方的介绍是企业版的prometheus,从功能上的确是很不错的,我们基本上可以实现基于ui 灵活的管理prometheus 的报警处理 参考架构 Vic…

    技术杂谈 2023年5月30日
    0105
  • C7N 操作当前 table cell

    场景: 在 C7N table 组件中,实现 cell 中的内容,双击展开或收起 思路: 通过 onCell 方法实现 方案: Original: https://www.cnbl…

    技术杂谈 2023年5月30日
    0109
  • 安全通告 | 疑似PurpleFox多手段持续实施攻击活动

    安全通告 | 疑似PurpleFox多手段持续实施攻击活动 https://mp.weixin.qq.com/s/Fca_oOiL8oLiEUXGaErWjQ 搜索 复制 Orig…

    技术杂谈 2023年5月31日
    081
  • 根据坐标点画曲线

    https://github.com/YouXianMing 核心代码 控制点的简单计算 将绘制的曲线添加到UIScrollView上 posted @2017-09-01 14:…

    技术杂谈 2023年6月1日
    0133
  • react 代码优化

    1.减少setstate:setstate会增加render的次数,从而影响性能。如果涉及到与视图层无关的属性,直接当做class实例的属性,而不是state的状态。这样改变这个属…

    技术杂谈 2023年6月1日
    0108
  • Spring中毒太深,离开了Spring,我居然连最基本的接口都不会写了¯_(ツ)_/¯

    前言 众所周知,Java必学的框架其中就是SSM,Spring已经融入了每个开发人员的生活,成为了不可或缺的一份子。 随着 Spring 的崛起以及其功能的完善,现在可能绝大部分项…

    技术杂谈 2023年7月11日
    0108
  • SpringBoot异步调用

    在程序执行时候还有一个瓶颈,串行执行,可以通过使用不同线程类快速提升应用的速度。 要启用Spring的异步功能,必须要使用 @EnableAsync注解。这样将会透明地使用 jav…

    技术杂谈 2023年7月24日
    091
  • Mac安装homebrew问题

    使用官方的命令总是无法安装成功。 下面可以快速实现安装: 步骤如下: 1.终端: csharp;gutter:true;/bin/zsh -c “$(curl -fsSL http…

    技术杂谈 2023年5月31日
    0118
  • 安徽京准:北斗卫星同步时钟|北斗同步时钟|NTP网络时钟服务器

    安徽京准:北斗卫星同步时钟|北斗同步时钟|NTP网络时钟服务器 安徽京准:北斗卫星同步时钟|北斗同步时钟|NTP网络时钟服务器 京准电子科技官微——ahjzsz 安徽京准公司提供了…

    技术杂谈 2023年6月21日
    0129
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球