小鬼前兩天都沒進場,今天 10:05 時進場搶了反彈,13:29:40 因為期指結算停利出場,獲利 61 點。
2021年4月21日 星期三
2021年4月17日 星期六
深度學習 + 台指期自動當沖交易 - 第一章 廢話
從 2016 年開始接觸程式交易以來,斷斷續續、閉門造車也寫了三代的台指期自動當沖交易系統,第一代使用的 API 是宏遠證券的,使用的程式語言是 C#,宏遠證券最大的問題是網路連線非常不穩定,三天兩頭在斷線,不知道這個問題現在是否已改善;第二代開始使用群益證券提供的 API 到現在,使用的程式語言是 Python,群益證券的網路偶爾也是會斷線,通常發生在當天交易量爆衝的時候,不過整體來講群益證券的穩定度已經算很好了。
綜合前三代的心得,台指期自動當沖交易系統的表現雖然偶有佳作,但實戰勝率不到 50%,回測時的勝率雖然可以接近 100%,但是是透過不斷增加進出場策略、參考指標及不斷地做策略的參數調校來達到的,現在系統裡已有上百個參考指標、兩百多條的進出場策略,而且以後還會不斷持續的增加 ... 這真是一件可怕的噩夢 ! 我想差不多是時候放棄程式交易的大夢了。
我期望中的程式交易系統應該只需要少量的參考指標及進出場策略,而且能夠隨著時間的改變不斷自我學習、成長。
2019 年底開始接觸「深度學習」,讓我對程式交易的大夢又露出了一線署光,一開始先玩 LSTM 做股價走勢預測,但是很快發現這不是我要的,對做「當沖交易」來說我要的是進出場點,也就是「突破」跟「轉折」的時間點,再後來的想法是讓深度學習幫我做台指期五分K線型態的分類,也試過用 sklearn KMeans 的 Cluster 做分類 ... 但是都沒有成功,我想我需要時間慢慢思考如何把「深度學習」應用到程式交易中。
2021 年初買了「強化式學習 - 打造最強 AlphaZero 通用演算法」這本書來研究,想試試看是否可以把「強化式學習」應用到台指期自動當沖交易上,書看了一半老毛病就又犯了(沒有耐心看完整本書,我習慣只看我有興趣、比較簡單的部分),迫不及待地開始動工打造我的第四代台指期自動當沖交易系統,這一代的系統並沒有使用強化式學習的方法,還是使用監督式學習,不過有加上了一點點強化式學習的概念。
我的作法是使用強化式學習中的「經驗重播(Experience Replay)」方式來做監督式的學習訓練,先把「每一組四根五分K的特徵值、Action(= Label , 即 K 線型態分類)、Reward(價值 / 回饋值)、下一組四根五分K的特徵值」資料存到「經驗池(deque , 我稱它為「記憶(Memory)」 )」中,等累積到一定程度的記憶後(例如:兩年),再用這些記憶來訓練神經網路。
神經網路訓練,記憶資料期間從 2019/1/2 ~ 2021/1/4,總共有 27,104 筆記憶,共訓練了 1,039 次,loss:2.6580e-04,accuracy:0.9981。
2021年4月16日 星期五
2021年4月15日 星期四
台指期自動當沖交易日誌 2021-04-15
小鬼今天 9:05 根據第一組四個五分K線型態進場做多,9:45 因為符合「人工智慧決策錯誤回補賣出」出場策略的條件停損出場,今天的操作真是可惜,不過從 9:05 到 9:45 這段期間的走勢還真是顛頗,「人工智慧決策錯誤回補賣出」這個出場策略是一個保險機制,可確保做錯方向時不會大賠,這個策略的參數還有調校空間,等累積到夠多的次數後再來做調校。
2021年4月14日 星期三
第四代台指期自動當沖交易系統架構
這一代的台指期自動當沖交易系統是以「深度學習K線型態分類系統」作為整個程式交易的決策核心。
以連續四根五分K(二十分鐘)為一組K線型態,將這四根五分K的特徵資料丟給「深度學習K線型態分類系統」做分類(盤整、上漲、下跌、突破上漲、突破下跌、轉折上漲、轉折下跌),最後將分類結果再丟給「進 / 出場策略」做判斷是否符合進 / 出場條件。
例如 : 「深度學習K線型態分類系統」做出的分類結果是「轉折上漲」,「進 / 出場策略」會根據這個結果來判斷其他參數條件是否符合,若條件符合就會進行後續的下單交易,若條件不符合則會忽略分類結果不做下單交易動作。
台指期自動當沖交易日誌 2021-04-14
總算趕在 4/11 以前貼完 2019-01-02 ~ 2021-04-09 的深度學習標籤、完成深度學習訓練,並且調校好進 / 出場策略的參數。
4/12 開始以「模擬交易」操作模式進行即時自動當沖交易,4/12 跟 4/13 兩天小鬼都沒有進場,今天 11:15 以前台股被殺的血流成河時,小鬼竟然進場了,而且還抓到一筆大的,讓原本往下降的信心稍微回升了一點。
2021年3月29日 星期一
更新群益證券 API-2.13.27 後, Login 時出現錯誤訊息 "SK_WARNING_REGISTER_REPLYLIB_ONREPLYMESSAGE_FIRST"
原因可以參考: https://easontseng.blogspot.com/2019/07/api-21317-login-skwarningregisterreplyl.html
我的作法:
在 class SKReplyLibEvent: 裡面加這段程式碼
def OnReplyMessage(self, bstrUserID, bstrMessage, sConfirmCode=0xFFFF):
#根據API 手冊,login 前會先檢查這個 callback,
#要返回 VARIANT_TRUE 給 server, 表示看過公告了,我預設返回值是 0xFFFF
print('OnReplyMessage', bstrUserID, bstrMessage)
return sConfirmCode
2021年2月24日 星期三
TensorFlow2.4.1 CUBLAS_STATUS_ALLOC_FAILED 問題解決方法
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
# Currently, memory growth needs to be the same across GPUs
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
# Memory growth must be set before GPUs have been initialized
print(e)
2021年2月7日 星期日
Install Windows 10 + python 3.8.5 + CUDA 11.1 + cuDNN 8.1.0 + TensorFlow 2.4.1
1. Create python 3.8.5 Environment
2. Update Nvidia graphic driver version to 461.40
https://www.nvidia.com/download/index.aspx?lang=en-us
3. Download and Install CUDA 11.1 for Windows 10
https://developer.nvidia.com/cuda-toolkit-archive
4. Download and unzip cuDNN 8.1.0
https://developer.nvidia.com/rdp/cudnn-download#a-collapse805-110
Copy bin, include, lib three folders under cuda unzip folder to
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1
Copy bin folder under cuda unzip folder to
<anaconda_install_path>\Anaconda3\envs\<env_name>\Library
Add :
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64
to [Path] System Environment variable
5. Install cudatoolkit 11.0.221print(device_lib.list_local_devices())
2020年3月22日 星期日
[已解決] [SSMS] No EditorOptionDefinition export found for the given option name: Adornments/HighlightCurrentLine/Enable
上網 Google 找解決方法 , 但幾乎都是針對 Visaul Studio 的 , 後來找到這一篇才解決我的問題 : https://www.suajin.com/detail/878
重點是路徑要對 , 我的路徑是 : C:\Users\chian\AppData\Local\Microsoft\SQL Server Management Studio\14.0\

















