iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0

不論是擷取成交明細,亦或是聚合資料等,每個數值的背後,都會有一個時間點,夾帶在行情的訊息中。

時間格式處理

  • 拿回來的資料像是下列這樣,其中在 data 中的 time 有值 1727433578458000
data: {
    'event': 'data',
    'data': {
        'symbol': 'MXFJ4', 
        'type': 'FUTURE_AH', 
        'exchange': 'TAIFEX', 
        'trades': [
            {
                'price': 22864, 
                'size': 1, 
                'bid': 22864, 
                'ask': 22866
            }
        ], 
        'total': {
            'tradeVolume': 63567, 
            'totalBidMatch': 47142, 
            'totalAskMatch': 46315
        }, 
        'time': 1727433578458000, 
        'serial': 77643
    }, 
    'id': 'xxx', 
    'channel': 'trades'
}
  • 這十六個數字,代表了從 1970-01-01 00:00:00 到現在,過了多少個微秒
  • 為了將其轉換成人類好讀懂的內容,所以進行下列處理。

透過 datetime 進行助理

  • 首先看一下 python datetime 提供的 timestamp 長得怎樣
import datetime as dt

now = dt.datetime.now()
print(now)
print(now.timestamp())
  • 輸出為 2024-09-27 23:01:56.559911
  • 以及 1727449316.559911

可以看出,整數的部分有十位數、小數點以下有六位數,總共十六位數

處理方式

  • 在十六個數字中,加入小數點後,即可將之當成參數,轉換成 datetime 格式
  • ts = datetime.timestamp(參數)
  • 所以對於範例中的 1727433578458000
  • 這邊需要的用到「正規表示法」來識別字串的形式,並且分割。
  • 推薦使用網站: https://regex101.com/ 輔助校對語法。
  • (\d{10})(\d{6}) 即可滿足將十六位數,切分成第一組十位、第二組六位。
  • 結果如下圖
    https://ithelp.ithome.com.tw/upload/images/20240927/20130149LNlRpUePJW.png

結論

  • 在股匯期權市場中,時間就是金錢。
  • 正規表示法,對於任何一種程式語言來說,語法概念大多相同,是讓機器抓出字串是否含有特定規則的

今日盈虧

  • 昨晚寫完之後果然期貨往下行,從正四百下行了兩百點,今早開盤也是從再度從 23190 走到 22884
  • 採取相對保守的方式進帳一些錢回來,下週將開始開選擇權的監控程式。

上一篇
【Day 12】 安裝 Redis 作為本機程式訊息佇列 / 讀寫程式 / 本日盈虧
下一篇
【Day 14】 設計一個 Writer 從 Redis 讀資料並篩選時間
系列文
從一萬元開始交易:收割韭菜三十天,量化交易工具製作31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言