高仿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.廣播器與消息系統

 

代碼目錄結構:

image.png

VS2015里面的目錄:

image.png

框架代碼在MainFrame目錄里面

K線業務在Kline里面

 

詳細說明

一。K線圖業務

k線主圖一般用蠟燭圖,原理圖如下:

 

圖片1.png

 

 

蠟燭圖顯示的信息包括開盤,高點,低點和收盤價。

蠟燭圖包括兩部分 — 真實和陰影圖(也稱為影線。)

陰影是高位和低位線,高位的頂點是當時的最高價。低位的下方代表當時的最低價格。

紅色代表收盤價低於開盤價。上方是開盤價,下方是收盤價。

綠色是收盤價高於開盤價,上方是收盤價,下方是開盤價。(國外的標准,國內正好相反)

MT4就是如下這個效果:

 

image.png

 

這里的圖標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線

image.png

auto_grid是基類

kline_grid是繪制K線類

data_file是數據類

 

4.運行目錄

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

模擬序列數據: dataKLine.txt

 

三 。總結

以上着重描述了數據在框架的傳遞,代碼很清晰的列在一個目錄,沒有網絡數據回報,但是在架構上是個很精簡的工程,定義了分類消息的廣播器,可以自定義路由,進行分類處理網絡數據。

程序在release模式下運行,可調試。

基本可以結合前面CTP的例子,自己處理解包,可以做一個行情系統出來。

 

參考:

 

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

 

 

注:本文著作權歸作者,由demo大師發表,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM