Hello charlie1234,
如同小幫手上面所說的回覆,選股回測時會將除權息納入考量。
大立光在 2023/03/16 時有除息,是因此原因所造成兩者差異。
關於回測的進出場,主要觀念是 商品洗價 => 腳本運算 => 判斷成交。
選股的進場是每日洗一次價,腳本運算判斷是否有觸發,若有觸發的話則根據設定決定今日收盤進場還是隔日開盤進場。
選股出場若是設定持有期數的話,則在持有期數滿足時依據設定決定以今日收盤出場還是隔日開盤出場。
選股出場若是設定停損停利的話,腳本則會在進場後以每分鐘還原的高低來判斷是否停損停利,如果符合的話再判斷還原1分鐘Bar開盤是否符合,符合的話用1分鐘開盤價停損停利,不符合的話用1分鐘收盤價停損停利。
自動交易也是一樣的道理,商品洗價 => 腳本運算 => 判斷成交。
自動交易回測的洗價可以大略分成以下3種:
1. 1分鐘逐筆洗價 會以 1分鐘的OHLC4個價格來洗價。(1分鐘運算4次,會累積)
舉例來說,如果該跟Bar的順序是 O => H => L => C 的話,則4次洗價會是
OOOO
OHOH
OHLL
OHLC
2. 其他頻率逐筆洗價 會以 1分鐘Bar來洗價。(1分鐘Bar運算1次且會依使用頻率累積)
3. 非逐筆洗價 會以 執行頻率來洗價。(1根Bar洗1次)
系統在判斷委託是否成交時,則是使用以下資料:
1. 1分鐘逐筆洗價 會以 1分鐘的OHLC4個價格來判斷委託是否成交。
依照上面的例子,會依順序用 O => H => L => C 來判斷委託成交。
2. 其他頻率逐筆洗價 會以 1分鐘Bar來判斷委託是否成交。
3. 非逐筆洗價 會以 執行頻率Bar來判斷是否成交。
勾選觸發即成交的話,會以洗價運算當下的價格開始判斷是否成交。
沒有勾選觸發即成交的話,會以洗價運算後的下個價格來判斷是否有成交。
判斷成交的邏輯則是:
1.市價單,會成交在開始判斷當下的價格。
2.限價單,且優於開始判斷當下的價格,則成交在當下的價格。
3.限價單,劣於開始判斷當下的價格,且優於判斷資料Bar中的最低價時,則成交在委託價。
且委託成交的數量最多只能是該根判斷資料Bar的成交量,超過成交量的委託則要接著在下一根判斷資料Bar繼續判斷。
所以限價單並不一定是會成交在哪個價格,會隨價格和成交量變化而改變。
如果您希望用固定邏輯來判斷成交的話,請一律下市價單,這樣就會以 洗價當下 (勾選觸發即成交) 或 下一個價格 (沒有勾選觸發即成交) 來成交。
6 評論