把寫入資料、製作訊號燈的功能模組化了,接著要整合整個程式,所以製作了run_get_data.py
作為把所有訊號燈呈現出來的模組。
本日程式碼使用:run_get_data.py
在做出訊號燈之前,當然要先有資料囉~因此先把資料匯入資料庫,這邊用daily_transaction
進行處理。
這邊就很簡單,直接把先前做好的三個模組時做出來,並且呼叫他們的get_and_save()
,把資料匯入MySQL中。中間多加個判斷,來通知資料沒有新增成功。
legal_daily = legal_daily_future_option()
market_data = daily_market_info()
stock_trans_data = stock_transaction()
r = legal_daily.get_and_save()
if r is False:
print(f"error:{legal_daily.__str__}")
r = market_data.get_and_save()
if r is False:
print(f"error:{market_data.__str__}")
r = stock_trans_data.get_and_save()
if r is False:
print(f"error:{stock_trans_data.__str__}")
接著建立的module是signal
,這是要從資料庫取得資料,並且把訊號印出來 。這邊僅進行出印出的格式處理,至於要印什麼訊號,則是在前日的module-fin_signal
來決定的。
最主要的實作是包在中:
def _show_singnal(self, signal_list) -> None:
"""Do showing the signal function"""
print(f"時間:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("==訊號燈==")
for title, signal in signal_list:
print(f"* {title}: {signal}")
執行匯入資料以及印出訊號燈。
# 匯入資料
worker = daily_transaction()
worker.save_to_db()
# 訊號燈印出
signal = signal()
signal.show_signal()
最後結果如下:
時間:2021-09-30 23:47:41
==訊號燈==
* 最近交易日是近期六天最大的交易金額: False
* 最近的一個交易日比前五日平均金額更大: False
* 外資期貨留倉是多單: False
* 自營商期貨留倉是多單: True
* 投信商期貨留倉是多單: False
* 外資期貨留倉數量是否增加: True
* 自營商期貨留倉數量是否增加: True
* 投信期貨留倉數量是否增加: True
* 外資期貨留倉數量變化量: 6908
* 自營商期貨留倉數量變化量: 1832
* 投信期貨留倉變化量: 534
* 外資期貨留倉數變動率: 0.02532202370915596
* 自營商期貨留倉數量變化率: 0.05245676325735884
* 投信期貨留倉數變動率: 0.1395713538944067
* 台積電是否5MA > 20MA: True
這樣,這些訊號燈就可以簡單地印出來,是不是很間單呢?
這訊號燈其實僅僅「堪用」而已,因為裡面的資料還能更清楚的整理,並且做出趨勢。現在只有顯示這幾天的狀況,過去短期的變化趨勢沒有明顯的顯示出來,因此這些的訊號燈仍須持續優化。從眾多的資訊中找出一些線索讓我們可以比較清楚的了解市場,這就是訊號燈遙遠的路囉~
希望最終,可以看到100/100個綠燈就all in,0/100個綠燈就all in放空 (=V=~