高仿MT4行情終端(K線圖+操控+簡單架構)

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

概述

模仿外匯MT4的界面

詳細

 

本Demo講述的範疇:html

K線的展現(小鍵盤方向操做,鼠標操做),QT的使用,客戶端大體的框架展現。git

 

開發環境:github

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

 

概述架構

涉及業務:框架

模仿MT4界面,包括MDI窗口,K線圖,鼠標操控的放大,縮小,十字線移動。工具

 

涉及技術:性能

一個高性能行情客戶終端架構,大體技術包括以下(本DEMO覆蓋了部分):this

1.定義業務層atom

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大師發表,拒絕轉載,轉載須要做者受權

相關文章
相關標籤/搜索