[Cryptocurrency] 不會寫程式的人也能程式交易-BitMEX (2)

介紹

今天要串接的是 BitMEX 交易平台,我們串接的市場會是 XBTUSD,由於是期貨市場,我們會依序串接幾個主要的 API:

  • Orderbook
  • Create Order
  • Get Order
  • Get Position
  • Close Position

很重要的一點就是我們一定要參考官網的 API 文件,由於正式環境要放真錢,我們只用測試環境示範

正式環境

測試環境

前置作業

  • 請將 BitLook 裡面這個程式下載,建議利用 git clone 的方式,但是非必要。
  • 需要安裝 nodejs (這部分應該上網查一下就可以了)。我使用的 nodejs 版本是 v10.17.0 建議一樣,減少出問題的機會。
  • 一顆想要透過程式交易的心。

以上都準備好了我們就要開始了~


正式開始

Step1: 申請帳號

請自行到以上網址申請帳號

Step2: 取得 API Key

這個用途是為了讓程式對平台做操作時,要讓平台知道我們到底是誰,所以藉由這個唯一的 Api Key 去達成這個目的。

記得這個資料不能隨便給其他人,等於帳號密碼的意思

BitMex_API_Key

我們可以看到 BitLook 有一個 setting.js 的檔案,照著上圖操作即可

Step 3: Command Line 到下載 BitLook 的檔案

我的長這樣,如果你的跟我的不一樣不用大驚小怪,每個人的本來就不一樣。

BitMex_step3


以下是串接 API 的部分

Step 4: 取得 Orderbook

我們先打開 index.js 檔案,接著把以下這行註解的程式碼打開。(記得存擋)

bitMex.getOrderBook({symbol: 'XBTUSD', depth: 1}).then(resp => console.log(resp));

其中:symbol 是決定要看哪一個市場;depth 是要看多少層的 orderbook。

可以自行換掉後面的參數試試 eg: {symbol: 'XBTUSD', depth: 10}

然後我們回到 Step 3 的地方輸入 node index.js,如下圖:

BitMex_step4

以上的圖其實就是網站的 Orderbook (與下圖數字不一樣的原因是因為截圖時 Orderbook 已經變動了)

BitMex_step4

Step 5: 建立訂單 Create Order

接下來就是下單了,我們準備利用程式幫我們下單。

一樣我們繼續編輯 index.js 檔案,接著把以下這行註解的程式碼打開。

bitMex.createOrder({symbol: 'XBTUSD', orderQty: 20}).then(resp => console.log(resp));

接著一樣回到 Step 3 的地方再執行一次 node index.js

這裡的意思是我們在 XBTUSD 這個市場下 20 美元的訂單,由於我們沒有設定額外參數,所以我們是下 market 單,會立即成交。緊接著我們就會看到下圖:

BitMex_step5

可自行將 bitMex.createOrder 裡面參數換成 {symbol: 'XBTUSD', orderQty: 20, ordType: 'Limit', price: 8000}
如果我們改成這個參數,看到的則會如下圖

BitMex_step5

到目前為止我們已經完成查看 orderbook 以及下單了。

Step 6: 查詢 Order

既然我們下單了,如果 Order 沒有成交,在 pending 狀態,我們也需要程式碼去查詢狀況。(也就是查詢上圖 Active Orders 的 Tab 中顯示的那張單)

那我們一樣在 index.js 中,打開以下這行的註解,然後執行 node index.js

bitMex.getOrder({symbol: 'XBTUSD', filter: JSON.stringify({open: true})}).then(resp => console.log(resp));

這裡我們發現 getOrder 裡面的參數多了 filter 這個字,這是因為 BitMEX 查詢 ORDER 的 API 中,如果沒有傳入只看 Open Order (也就是 Active Order:未成交的 Order),會將歷史成交的記錄也撈出來。目前我們只需要專注在未成交的 Order 就好了。

各位也可以自行將上面那行成是改成

bitMex.getOrder({symbol: 'XBTUSD'}).then(resp => console.log(resp));

試試看

執行完後我們會看到類似下圖的資料:

BitMex_step6

在這張圖我們就可以找到許多資訊。

Step 7: 查詢 Position

再來就是我們下的 Order 如果成交了,它就會跑到 Position 也就是變成我們開始持倉了。Position 就是用來查看我們持倉部位的資訊。

一樣在 index.js 中,打開以下這行的註解,然後執行 node index.js

bitMex.getPosition({symbol: 'XBTUSD'}).then(resp => console.log(resp));

接著我們會看到類似下圖的資料:

BitMex_step7

由於資料很多,無法完整截圖,但可以看到這邊提供的資料比網頁看到的資料更詳盡。我們可以看到我們平均下單的價格Liquidation price未實現損益等等。有了這些資料以後,交易員就可以利用自己的決策做策略了。

Step 8: Close Position

接下來就是 Close Position。
有幾種情況我們需要關閉我們的倉位:

  • 獲利了結
  • 止損
  • 手癢 (當然我們用程式交易就是要避免手癢的狀況? 有時好像還是會手癢偷改程式 XD)

我們在 index.js 中,打開以下這行的註解,然後執行 node index.js

bitMex.closePosition({symbol: 'XBTUSD'}).then(resp => console.log(resp));

然後我們沒意外大概就會看到我們的 Position 消失了。

BitMex_step8

--

以上我們 BitMEX 平台 API 的串接也算是告一段裸落。但事實上它們 API 之多,各位有興趣可以自己查閱或是詢問專業的 Trader

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *