量化交易系統任務框架的演化之路(2)狀態管理

2021-08-20 06:23:38 字數 1501 閱讀 3850

通過這個流程圖就可以很明顯的看出,重入的問題一下子就解決了。道理明白了,那麼實現起來就很簡單了。直接把框架**放這裡,供參考。

通過註解來表示是否為要管理的任務,在這裡指定了乙個屬性name,管理容器可以很方便通過這個名字找到對應任務例項,完成一系列的操作。

@target()

@retention(retentionpolicy.runtime)

@component

public @inte***ce

quantmanagedtask

下面這個類是所有任務的基類,裡面包含了任務的框架方法,start方法用來啟動任務,啟動時會檢查當前任務的狀態,如果沒有在執行則啟動,否則直接跳過;stop方法用來停止任務。

public

abstract

class

quanttask

// 實際的任務內容

public

abstract

void

dotask();

/*** 停止當前任務,改變狀態

*/public

void

stop()

/*** 獲取任務是否在執行中

*/public

boolean

isrunning()

}

下面就是任務的管理容器,容器負責任務的啟動和結束。在系統啟動時,會將所有通過註解標註和繼承了quanttask的任務類預先載入進來,建立任務名稱和任務例項對應的map,那麼就可以很容易的通過名字找到相應的任務例項。

@component

public

class

quanttaskmanager

implements

beanpostprocessor

@override

public object postprocessafterinitialization(object bean, string s) throws bean***ception catch (exception e)

}return bean;

}public

void

execute(string taskname)

}

下面這個就是乙個示例任務類,可以直接通過其名字sample_task啟動它。

@quantmanagedtask(name="sample_task")

public

void samplequanttask extends quanttask()

}

增加了管理容器,我們就可以很容易的實現在頁面上對任務進行管理的功能。當然了,這裡只是通過乙個isrunning欄位解決了最簡單的狀態,可是有很多時候,狀態可能更加複雜,尤其是在通過頁面管理時,可能還要什麼時候執行過、現在是什麼狀態等等。

現在還有乙個任務依賴的問題還沒有解決,那麼如果基於上面的設計,應該如何去解決呢?

量化交易系統(一)資金管理

所謂資金管理,就是指控制風險的程度,確保交易者能安然度過每乙個交易者都必然會碰到的不利時期。交易者既要讓贏利潛力最大化,又要把破產的風險控制在可以接受的水平,資金管理就是這樣的一門藝術。資金管理也是對風險難以 的一種無奈的選擇。資金管理的目的是在於得出交易金額佔我們所擁有資金總額的最佳比例。人們傾向...

量化交易系統 行情模擬回放系統設計 16

系統介紹 主要用於為策略引擎提供模擬 功能,測試策略函式邏輯是否正確,包括如下的需求 2.體系結構 2.1邏輯架構 2.2 功能模組設計 模擬 子系統由兩個模組組成 3 模擬 管理模組 3.1 功能說明 3.2 結構圖 3.3流程設計無 3.4 介面設計 說明重要的介面。格式如下 1 介面名稱 ge...

開源分布式量化交易系統 初識ZeroMQ

由於下面章節會涉及到程式間通訊,會用到zeromq通訊中介軟體,所以先介紹下zeromq的幾種通訊模式,並且通過幾個小demo來初步了解它的應用。發布和訂閱模式,該模式主要用於 中心在收到交易所 並封裝好訊息後通過pub方式發布給客戶端,客戶端通過sub方式訂閱需要接收 的合約。推拉模式,該模式主要...