2023-11-22|閱讀時間 ‧ 約 3 分鐘

古有草船借箭,今有AI借鏡 - 訊號撰寫

古有草船借箭,今有AI借鏡 寫到如何將CNN訓練好的模型訊號以一個新商品的方式匯入成歷史資料,藉此當為進場訊號的輔助,本文就簡單示範,當匯入訊號後,策略的程式如何撰寫。

首先描述這個模型的特性及策略的設計,CNN模型以「市場輪廓圖」為基礎訓練圖形,以「日」為單位,預測接下來的行情是否發生反轉,訊號的產生也是以日為單位產生,但日資料拿來當交易的週期太長,於是就另外再加入一條五分K的資料數列,當為進出場時間的依據。

進場訊號

本策略為示範說明用,因此只簡單定義了停損及移動出場二個參數,因為CNN的模型判斷是以「日」為單位,在程式中,就以判斷是否換日當條件,當換日的K棒時,就讀入CNN的模型訊號,以CurrentDirection來儲存目前CNN的訊號方向,當方向有發生變化時,就將NeedChange的值,設為CNN預做的方向,讓5分K在開盤時,可以依據NeedChange的值來觸發進場訊號,當CNN的訊號不變或預測為盤整時,就將NeedChange值設定為0,則不會觸發方向。

停損及移動出場

當MarketPosition不為零時,即代表目前有部位,則將停損及移動出場的參數傳入出場的函式中,在此特別說明:

If Date + 19000000 >= 20230408 And Time >= 1300 Then

這是因為CNN的最後日期只到 2023/04/08, 因此當大於這個日期時,若手中有部位,則在 13:00時就發出平倉的訊號,避免一直持有讓倉位。

在MC的日期起始日期是 1900年,因此我們可以將系統日期,加上19000000後,就可直接與目前的日期比較,不用再手動計算,目前日期與1900年的年份差距,增加程式的可讀性。

若不使用加 19000000的方式,則需表示為1230408,不常撰寫策略的開發者很容易搞錯年度,在此就運用了這個小技巧,讓日期可以直接以西元年的方式來表示。

本篇只是以一個簡單的範例說明如何結合AI的模型訊號,筆者可依此進行擴充,以結合更多的外部模型,充分發揮MC的強項。





分享至
成為作者繼續創作的動力吧!
由TradeStation、MultiCharts至完全自製交易程式的發展歷程,深入探討程式交易的交易觀念、策略寫法。
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

發表回應

成為會員 後即可發表留言