|
本帖最後由 issac 於 2024-6-18 14:45 編輯
使用環境:python 3.10.10
永豐期貨開戶教學
1.更新到最新
2.服務條款線上簽署
3.Token登入金鑰申請
4.一定要先引用套件
5.使用套件,決定是否要開啟模擬環境(意思是可以獲取即時資料,但是你下虛擬單)
- api = sj.Shioaji(simulation=True)
複製代碼
6.必備的5樣東西
- api_key="透過申請Token獲得"
- secret_key="透過申請Token獲得"
- ca_path="Sinopac.pfx" #憑證位置,我放在跟程式同一個目錄下所以直接這樣寫,這個憑證我是用電腦版eleader登入後下載的,下載後會再某一個資料夾下,把檔案複製過來或者指向目錄位置就可以了
- ca_passwd="身分證號" #憑證密碼,預設是身分證號,看你下載時有沒有改
- person_id="身分證號"
複製代碼
7.登入function
- api.login(
- api_key=api_key,
- secret_key=secret_key,
- )
複製代碼
8.訂閱標的-會一直自動回傳tick資料(要配合第9項)
- api.quote.subscribe(
- api.Contracts.Futures.MXF.MXFR1,
- quote_type = sj.constant.QuoteType.Tick,
- version = sj.constant.QuoteVersion.v1,
- )
複製代碼- api.quote.subscribe(api.Contracts.Futures.MXF.MXFR1,quote_type = sj.constant.QuoteType.Tick,version = sj.constant.QuoteVersion.v1)
複製代碼
9.改寫quote_callback功能,可以在這個地方加上要用來判斷的附加程式,
- def quote_callback(exchange:Exchange, tick:TickFOPv1):
- global 價格
- print(f"Exchange: {exchange}, Tick: {tick.close}") #這個函式會回傳 {exchange}, {tick.close}兩個值,我是只有拿tick.close來用
- 價格=tick.close
- clear_output(wait=True) #我自己加的,因為用notebook會一直洗出tick資料,清空用
複製代碼
10.獲得Kbar資料-但是都是1分K(已經轉DataFrame)
- kbars = api.kbars(
- contract=api.Contracts.Stocks["2330"],
- start="2023-01-15",
- end="2023-01-16",
- )
- kbars
複製代碼
11.把1分K轉成日資料,延續上面的程式碼,就可以轉成日K來看,只是會包含假日欄位- df.set_index('ts',inplace=True)
- daily_df = df.resample('D').agg({
- 'Open':'first',
- 'High':'max',
- 'Low':'min',
- 'Close':'last',
- 'Volume':'sum',
- 'Amount':'sum',
- })
- daily_df
複製代碼
12.商品檔代號
- api.Contracts.Indexs.TSE["001"] #指數不可下單
- api.Contracts.Stocks["2330"] #股票
- api.Contracts.Futures["TXFA3"] #期貨
- api.Contracts.Options["TXO18000R3"] #選擇權
- api.Contracts.Futures.MXF.MXFR1 #小台指近
- api.Contracts.Futures.TXF.TXFR1 #大台指近
複製代碼
差不多到這邊,應該就可以寫出自己的策略了
|
|