今天要整合先前所學,使用colab盤中即時計算技術指標,當技術指標達到我們要的條件時,發送訊息到line!
盤中計算技術指標,通常是每隔一段時間計算一次,例如每五分鐘計算一次一分K的5MA,發送line通知顯示現在的收盤價在一分K的5MA之上或之下,寫法如下,
使用
date.today()
自動取得今天的日期,
from datetime import date
date.today()
today=str(date.today())
使用while迴圈與
datetime.now().minute %5==0
達成每五分鐘計算一次技術指標的目的。
每五分鐘取得一分K,用
talib.SMA(df['Close'],5)
計算一分K的5MA,判斷目前收盤價在5MA之上或是之下並發送line訊息,因為本範例是每五分鐘計算一次訊號,所以每次計算完可以用
time.sleep(60)
休息個60秒(可自由選擇)
import time
from datetime import datetime
while True:
if (datetime.now().minute %5 == 0) : #每五分鐘計算一次
kbars = api.kbars(api.Contracts.Futures.TXF['TXFJ1'], start=today, end=today)
df = pd.DataFrame({**kbars})
df.ts = pd.to_datetime(df.ts)
df.set_index('ts',inplace=True) ##將時間設為index
SMA_5 = talib.SMA(df['Close'],5)
if df['Close'].iloc[-1] < SMA_5.iloc[-1]:
msg = '台指目前在一分K的5MA之下'
lineTool.lineNotify(lineC,msg)
time.sleep(60) #每次計算完休息60秒
elif df['Close'].iloc[-1] > SMA_5.iloc[-1]:
msg = '台指目前在一分K的5MA之上'
lineTool.lineNotify(lineC,msg)
time.sleep(60) #每次計算完休息60秒
透過以上的範例程式碼,簡單介紹如何用一分K每五分鐘計算一次技術指標並發送line訊息,可以搭配先前幾篇系列文,試試看如何每隔一段時間計算5分K的技術指標並發送line訊息。