| 
 | 
 
 本帖最後由 issac 於 2025-6-29 01:20 編輯  
 
使用環境: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 #大台指近
 
  複製代碼 
 
 
差不多到這邊,應該就可以寫出自己的策略了 
 
 
 
 
 
 
 |   
 
 
 
 |