iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
永豐金融APIs

永豐證API X Python系列 第 21

【D21】修改食譜#2:根據市價,模擬小台改價

  • 分享至 

  • xImage
  •  

前言

昨天已經模擬出改價了,現在更進階,使用小台的現價來改價。

參考網站:Futures

本日程式碼使用:d21_change_MXF_by_tick.py


調整主程式

根據昨天的程式進行修改,做成我們今日的程式碼。最主要的變動是在trader中修改了改價的邏輯。

不過首先要看主程式碼,因為這邊訂閱了兩個商品的行情:

timer = threading.Thread(target=sleeper)  # 建立執行緒

t = trader()
t.login()

t.subscribe(t.api.Contracts.Futures.TXF["TXF202110"])  # 訂閱台指期-2021/10
t.subscribe(t.api.Contracts.Futures.MXF["MXF202110"])  # 訂閱小台指期-2021/10

t.api.quote.set_quote_callback(t.quote_callback)  # 設定處理回報的功能

timer.start()  # 執行thread
timer.join()  # 等待結束thread

t.unsubscribe(t.api.Contracts.Futures.TXF["TXF202110"])  # 取消訂閱台指期-2021/10
t.unsubscribe(t.api.Contracts.Futures.MXF["MXF202110"])  # 取消訂閱小台指期-2021/10

這邊訂閱了TXF和MXF,分別是大台和小台。而這邊用t.quote_callback來處理這兩個訂閱的內容。

修改trader

昨天的quote_callback()功用只是印出行情資料,不過這邊要改成紀錄大小台的目前價格,以及根據大小台進行小台的價格處理。

def quote_callback(self, topic: str, quote: dict):
    """Get the quote info and change the oder price.
    The quote's format is v0: quote is a dict and the value is a list.
    """

    print(
        f"{topic}-Price:[{quote['Close']}]Diff:[{quote['DiffPrice']}]volumn:[{quote['Volume']}]"
    )

    if topic.find("/TXF") > 0:
        self.txf_point = quote["Close"]  # 設定大台目前的價格
        self.change_price(quote["Close"], True, 10)
    elif topic.find("/MXF") > 0:
        self.mxf_point = quote["Close"]  # 設定小台目前的價格

def change_price(self, price, diff, points):
    """Simulate to change the price of the order."""

    self.mxf_price = price[0] - points if diff else price[0] + points
    print(f"小台:current price:{self.mxf_point}-new price:{self.mxf_price}")

quote_callback()中,使用字串.find("/TXF")功能,找出這個行情topic是屬於誰的,如果是大台進入修改目前大台的價格,並且進入修改價格-也就是change_price()-的地方。如果是小台的話,只是修改價格。

而在change_price()則把昨天的簡單化,修改成用大台的點數-10的方式,當作小台的價格進行掛單作業。

雙訂閱的用意

到這邊有沒有發現,其實小台的價格跟昨天一樣,並不重要,因為在計算中沒有使用到小台的價格。其實運用可以很多種,這個是只用大台的點數價格當作小台的價格,我們也可以這樣運用,就是判斷大台和小台哪個比較小,然後用小的價格再減去一個數值,最後的數字就是我們委託單價格。諸如此類的運用。

不過這樣點數差距很大,除非穿價很厲害,不然很難打到我們這樣的算法XD

這只是一種訂閱的方式,以及運用的實例展示,真正的交易不會這麼隨便的!


上一篇
【D20】修改食譜#1:根據市價,模擬改價
下一篇
【D22】修改食譜#2:根據市價,模擬選擇權下單
系列文
永豐證API X Python31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言