在不久前(qian)的“2024,我想和 TDengine 談(tan)談(tan)”征文活動中,我們收到了(le)許多(duo)精彩(cai)的投稿,反(fan)映(ying)了(le)用(yong)戶與 TDengine 之間(jian)的真實故事和獨特見解(jie)。今天,我們很高興地(di)分(fen)享此次活動的第一名作品。這篇文章詳細(xi)闡述(shu)了(le)廣西(xi)多(duo)元量(liang)化(hua)(hua)科(ke)技有限公司如(ru)(ru)何(he)利用(yong) TDengine 構建(jian)高效的量(liang)化(hua)(hua)交易系(xi)統(tong),提升交易效率和決策質量(liang)。通過深入分(fen)析數據庫選型和數據架構設計(ji),作者展示了(le) TDengine 在金融(rong)領域的強大優(you)勢和廣泛應用(yong)前(qian)景。接下(xia)來(lai)讓我們一同閱讀,探索這一前(qian)沿技術如(ru)(ru)何(he)推動現(xian)代(dai)金融(rong)交易的智能化(hua)(hua)與高效化(hua)(hua)。
我們的核心產(chan)品是多元量化 App,旨(zhi)在以客戶(hu)的舒心與安心為本(ben),共同創造智能交易(yi)的新體驗(yan),讓每個人都能輕(qing)松玩轉 AI 量化。該 App 面向(xiang)各層(ceng)次(ci)用(yong)戶(hu),支持手機和(he)電腦端(duan)使用(yong),確保隨(sui)時隨(sui)地享(xiang)受便捷、高效的量化交易(yi)體驗(yan)。核心優勢在于強大的交易(yi)策略(lve)構建(jian)能力(li),提供(gong)零代碼(ma) AI 策略(lve)、DO 語言(yan)策略(lve)以及 Python 語言(yan)策略(lve),滿足不同用(yong)戶(hu)的需求。
此外,該(gai)系統還支持實時行(xing)情、AI 智(zhi)選、一鍵配置、拆單(dan)算法、深度回測及信(xin)息實時推(tui)送服務(wu),確(que)保用戶(hu)不(bu)錯過任何重(zhong)要市場(chang)動(dong)態。多元量(liang)化(hua) App 致(zhi)力(li)于(yu)為投研(yan)者和(he)金融機構提供全面的量(liang)化(hua)解(jie)決(jue)方案,通過先進的技(ji)術手段提升(sheng)交易效率和(he)決(jue)策質量(liang),實現資(zi)產的穩健增長。
數據庫選型
多(duo)元(yuan)量化 App 本身是一套(tao)大數(shu)(shu)據(ju)(ju)(ju) AI 處理系(xi)(xi)統(tong)(tong),涉(she)及各交(jiao)易平臺的(de)(de)海(hai)量交(jiao)易數(shu)(shu)據(ju)(ju)(ju),對數(shu)(shu)據(ju)(ju)(ju)存儲、處理、響應(ying)及安全等方(fang)面(mian)有極高的(de)(de)要(yao)求。數(shu)(shu)據(ju)(ju)(ju)庫選(xuan)型(xing)直接影響系(xi)(xi)統(tong)(tong)的(de)(de)性(xing)能、可(ke)擴(kuo)展(zhan)性(xing)、數(shu)(shu)據(ju)(ju)(ju)一致性(xing)和可(ke)靠性(xing),對交(jiao)易行情(qing)系(xi)(xi)統(tong)(tong)的(de)(de)開發至關重要(yao)。理想的(de)(de)數(shu)(shu)據(ju)(ju)(ju)庫需(xu)要(yao)確保(bao)交(jiao)易數(shu)(shu)據(ju)(ju)(ju)的(de)(de)快速讀寫,支持(chi)高并發訪問(wen),并提(ti)供(gong)必要(yao)的(de)(de)數(shu)(shu)據(ju)(ju)(ju)備(bei)份和恢復機(ji)制(zhi),保(bao)障(zhang)數(shu)(shu)據(ju)(ju)(ju)安全。此外,考(kao)慮(lv)到(dao)交(jiao)易行情(qing)系(xi)(xi)統(tong)(tong)的(de)(de)實時性(xing)要(yao)求,數(shu)(shu)據(ju)(ju)(ju)庫還需(xu)具備(bei)高效的(de)(de)事(shi)務處理能力和低延遲的(de)(de)數(shu)(shu)據(ju)(ju)(ju)訪問(wen)特性(xing)。
多元量(liang)化 App 在初始開(kai)發階段及(ji)功能升(sheng)級過程中,每(mei)次系(xi)統迭代到(dao)一(yi)定(ding)體量(liang),數據庫的(de)性能都會成為系(xi)統的(de)瓶頸,因此設計一(yi)個(ge)合(he)適的(de)數據庫方案顯得尤為重要(yao)。
在數據庫選型方面,我(wo)們重(zhong)點考慮以下幾點:
1. 選擇一個高效、穩定且可擴展的數據庫系統,以確保大數據處理的實時性和準確性。
2. 數據模型的適應性也是選型時需要考慮的因素。多元量化 AI 策略交易系統需要實時從各交易平臺提取交易行情,因此數據庫應具備足夠的靈活性,以適配不同類型的金融數據。選擇與大數據系統需求相匹配的數據模型,可以提高數據存儲和查詢的效率。考慮到金融行業的特殊性和監管要求,數據的可訪問性也非常重要,用戶及合作方可以方便快捷地訪問和查詢所需數據。
3. 數據庫的可擴展性對于大數據系統來說也很重要。隨著系統功能的迭代,數據量的不斷增長,數據庫需要支持水平或垂直擴展,以適應數據量的增加,避免性能瓶頸。
4. 數據庫的安全性非常關鍵。由于交易數據涉及敏感信息,選擇具備高級安全特性的數據庫可以有效保護數據不被未授權訪問或泄露。
5. 成本效益分析也是數據庫選型時需要考慮的。除了(le)初始投資成本外,還(huan)需考慮維(wei)護成本、運營成本及長期可支持性。
在多元量化交易系統研發初期,我們使用的是基于 PostgreSQL 的時序數據庫——TimescaleDB,它結合了傳統關系型數據庫(ku)的(de)功能(neng)與(yu)時(shi)序數據存儲和查詢的(de)優化。然(ran)而(er),隨著系統和數據逐步擴展,TimescaleDB 的(de)問題(ti)逐漸顯現:
寫入性能
由于(yu)量(liang)化系統數據寫入存在高并發,TimescaleDB 在高吞吐量(liang)寫入時出現瓶頸(jing),同時增大(da)了(le)硬件系統的工作負載(zai)。
讀取延時
盡管 TimescaleDB 使用了多種索(suo)引和機制來加速查詢(xun),但在(zai)需要(yao)掃描大量歷史數(shu)據(ju)的回測功能(neng)中,仍然存在(zai)延遲。
空間占用
由于 TimescaleDB 是基于 PostgreSQL 實(shi)現,并且為了(le)支持高(gao)效的時(shi)序數(shu)據(ju)(ju)管理(li)增加了(le)額外的數(shu)據(ju)(ju)結構,因此在(zai)存儲相同數(shu)量(liang)的數(shu)據(ju)(ju)時(shi)占用更多的磁盤空間,這對每日(ri)處理(li)海量(liang)行(xing)情(qing)數(shu)據(ju)(ju)的量(liang)化系(xi)統(tong)非常不利。
根據(ju)行(xing)情模塊技術開發(fa)和(he)拓展需求(qiu),以及后期運營拓展的考(kao)量,我們需要(yao)對整個時序(xu)數據(ju)庫(ku)(Time Series Database)進(jin)行(xing)迭代,通(tong)過(guo)對目(mu)前常用的數據(ju)庫(ku)類型進(jin)行(xing)評判(pan)和(he)分(fen)析:
1. ClickHouse:面臨的問題包括高昂的運維成本、復雜的擴展過程以及對資源的大量需求。
2. InfluxDB:擅長高效查詢和存儲時序數據,廣泛用于監控數據和物聯網行業的實時數據處理,但其集群功能尚未開源。
3. TDengine:在性(xing)能(neng)、成本(ben)和運維簡易(yi)性(xing)方面(mian)表現良好,支持水平擴(kuo)展,并具備高可用性(xing)。
針(zhen)對(dui)行情數據的時效性需求,時序數據庫是最合(he)適的存(cun)儲解決方案。通過對(dui)比,我們發現,在相同的數據集(ji)和硬件條件下,TDengine 的寫入速度遠(yuan)超(chao) InfluxDB。此外(wai),TDengine 還提供豐富的數據接口支持,包(bao)括 C/C++、Java、Python、Go 和 RESTful 等,滿足各(ge)種開發需求。

因此,我們最終選擇了 TDengine。
建模及應用
多元量化 AI 策略交易系統需從多個(ge)交易所中提取大量行(xing)情數據。數據提取呈(cheng)現以下特點:
Tick 快照數據
1. 每日生成超過億條記錄;
2. 快照數據需(xu)長期保留,且頻繁調用。
Daily 數據
1. 多子表結構,每日新增約 20 萬張;
2. 數據量巨大,每秒約 6 萬條數據寫入;
3. 數(shu)據需長(chang)期(qi)保存。
通用特性
1. 數據格(ge)式固定,并附(fu)帶時(shi)間戳;
2. 數據幾乎(hu)無需更新或(huo)刪除;
3. 標簽列數量少(shao)且穩定;
4. 單條記(ji)錄的(de)(de)字段(duan)數(shu)(shu)(shu)量少、數(shu)(shu)(shu)據(ju)(ju)量小。基于 TDengine 推薦的(de)(de)數(shu)(shu)(shu)據(ju)(ju)架構(gou),我們將(jiang)(jiang)針對不(bu)同特性的(de)(de)數(shu)(shu)(shu)據(ju)(ju)分別構(gou)建獨立的(de)(de)數(shu)(shu)(shu)據(ju)(ju)庫,并根(gen)據(ju)(ju)各(ge)自特性進行參數(shu)(shu)(shu)優化(hua)。在每個數(shu)(shu)(shu)據(ju)(ju)庫中,根(gen)據(ju)(ju)數(shu)(shu)(shu)據(ju)(ju)品種(如期(qi)貨、期(qi)權等(deng))創建超(chao)級表,并將(jiang)(jiang)標(biao)的(de)(de)實體的(de)(de)標(biao)簽信息直接作(zuo)為(wei)超(chao)級表的(de)(de)標(biao)簽字段(duan),以此(ci)(ci)為(wei)不(bu)同品種的(de)(de)數(shu)(shu)(shu)據(ju)(ju)創建子表。此(ci)(ci)數(shu)(shu)(shu)據(ju)(ju)模型的(de)(de)構(gou)建方(fang)式高度契合了我們的(de)(de)數(shu)(shu)(shu)據(ju)(ju)特性和(he)應用場景。
當前(qian),我們的業務主要面向(xiang)國內(nei)的期貨(huo)和(he)期權市(shi)場,股票業務仍在研發階(jie)段。數(shu)(shu)據庫(ku)的應用分(fen)為離線業務(回測)和(he)實時業務兩部分(fen)。回測用于(yu)計算(suan)基本框架(jia)和(he)參數(shu)(shu)范圍,實時業務結合(he)最新數(shu)(shu)據對框架(jia)進(jin)行動態調整(zheng),二(er)者相輔(fu)相成(cheng),共同生成(cheng)交(jiao)易(yi)策略。
在(zai)數據寫(xie)入方(fang)面,TDengine 輕松滿(man)足了上述業務需(xu)求(qiu)。在(zai)數據查(cha)詢方(fang)面,針對離線(xian)和(he)在(zai)線(xian)業務,我們主要(yao)使用如下兩類高頻(pin) SQL 查(cha)詢。由于 TDengine 支持緩存最(zui)新數據,并(bing)(bing)采(cai)用順序(xu)讀取(qu)機(ji)制,即使在(zai)高并(bing)(bing)發查(cha)詢下也毫(hao)無壓力,均可實現毫(hao)秒級返回。這(zhe)為我們在(zai)離線(xian)與(yu)實時(shi)數據分析中提供了堅(jian)實的技術(shu)保(bao)障。
在線查詢:
SELECT last_row(*) FROM tick_CZCE_SA501;
離線查詢:
SELECT * FROM tick_CZCE_SA501 WHERE ts < '2024-10-09 15:00:00.000' ORDER BY ts DESC LIMIT 1000;
實施經驗分享
為確保數據的穩定高效獲取,實施過程中需要重點考慮查詢性能、線上數據更新和運維情況。在此過程中,我們參考了官方博客中。
最終,我們選擇了如下硬件配置來搭建數據庫:雙路 AMD 48 核 96 線程 CPU,128GB 內存,8TB 固態硬盤。當前系統每日負載情況如下:CPU 使用率平均約為 20%,內存使用率 20%,數據壓縮率控制在 10% 以內。
TDengine 的最大優勢在于處(chu)理大規模時(shi)序數(shu)據(ju),非常適合(he)金融行情數(shu)據(ju)(如期貨(huo)、期權價格及(ji)交易記(ji)錄)。這些數(shu)據(ju)的特點在于高頻寫入(ru)、固定(ding)查詢(xun)模式,且通常基(ji)于時(shi)間范圍進(jin)行聚合(he)或(huo)分析。然而,作(zuo)為一款金融應用系統,除了(le)時(shi)序數(shu)據(ju)外,還涉及(ji)大量其他類型的數(shu)據(ju)和復雜(za)的業務(wu)邏(luo)輯需(xu)求,因此我(wo)們仍(reng)然保(bao)留了(le) PostgreSQL 關系數(shu)據(ju)庫,以支(zhi)持多(duo)樣化的數(shu)據(ju)需(xu)求。
結語
TDengine 在成(cheng)(cheng)本控制、性(xing)能(neng)表現和用戶友好(hao)性(xing)方面表現出色,尤(you)(you)其在成(cheng)(cheng)本節約(yue)方面尤(you)(you)為突出。展(zhan)望未來,我(wo)們期待 TDengine 持續(xu)優(you)化其性(xing)能(neng)和穩(wen)定性(xing)。同時,我(wo)們將基(ji)于業務需求(qiu)開展(zhan)二次開發(fa),并積(ji)極向社區分(fen)享成(cheng)(cheng)果(guo),共同推(tui)動 TDengine 的進(jin)步與發(fa)展(zhan)。
關于多元量化
廣西多(duo)(duo)元(yuan)量化(hua)(hua)(hua)科技(ji)有(you)限公司成立于 2023 年(nian),是一(yi)家(jia)專注于人工智(zhi)能(neng)(neng)技(ji)術(shu)(shu)研發與(yu)(yu)應用(yong)的(de)領(ling)先企業。其(qi)致力于將(jiang)大(da)數據與(yu)(yu)人工智(zhi)能(neng)(neng)相結合(he),服(fu)務(wu)(wu)(wu)于金融資(zi)產管理系(xi)統。多(duo)(duo)元(yuan)量化(hua)(hua)(hua)提供(gong)程序化(hua)(hua)(hua)快速交易系(xi)統、量化(hua)(hua)(hua)策(ce)略開發及植入(ru)服(fu)務(wu)(wu)(wu),結合(he)先進的(de) IT 技(ji)術(shu)(shu)與(yu)(yu)豐富的(de)行業經驗(yan),為機構和(he)投資(zi)者量身定制高效(xiao)的(de)量化(hua)(hua)(hua)解決方案。多(duo)(duo)元(yuan)量化(hua)(hua)(hua)產品線涵蓋行情分析系(xi)統、程序化(hua)(hua)(hua)智(zhi)能(neng)(neng)交易系(xi)統、策(ce)略模(mo)型(xing)平(ping)臺和(he)量化(hua)(hua)(hua)資(zi)產管理平(ping)臺,并(bing)提供(gong)專屬定制服(fu)務(wu)(wu)(wu),滿足客(ke)戶的(de)多(duo)(duo)樣化(hua)(hua)(hua)需求(qiu)。


























