跳到主要內容

Gekko 交易機器人 - 用 Commandline 介面 (CLI) 開啟 Gekko 教學,讓電腦負載大大降低且達到多線交易



基本上 Gekko 交易機器人本身就推薦使用 Commandline 介面 (CLI),一來它對電腦設備要求較低 (其實本來就不高),二來它能直接開啟複數個機器人 (沒有 UI Port 問題),加上能自訂的細節也較多,有些功能是沒有做出來到網頁 UI 介面的,像是 Telegram bot 功能、Email 通知功能...等,而且如果你跟我一樣是把 Gekko 開在雲端主機上,使用 CLI 多少也能降低使用量,避免它超出限額。

Gekko 原作者也有提到 childprocess has died. 的情況可以用 CLI 的方式來開啟 Gekko,它對策略的執行比較不會出現錯誤。


再來就是多線交易的問題了,由於為了避免不同機器人互相「搶資金」而造成錯誤所以在 UI 介面直接限制了單一交易所多個機器人這點,但在 CLI 並不存在這個問題,所以可以直接多開 Gekko。舉例來說,即使你有 XVG/BTC、XRP/BTC 兩個機器人在運作,兩者並不會互相衝突任,因為誰先達成策略的條件就會先執行該貨幣的買賣,然後根據買賣後的結果再繼續跑原本的策略。

用 CLI 開啟 Gekko

以下的操作是基於 Gekko 已經完整安裝的情況,如果還沒在本機或雲端上裝好 Gekko 請參考前篇提到的安裝教學安裝到雲端
首先要建立一個 config.js 在 Gekko 資料夾中,它裡面本身就有附一個 sample-config.js 能直接讓你拿來改。

基本上我把 config.js 的內容分為六層 :

  •  - config.watch - 指定觀測的市場,也就是要交易的貨幣
  •  - config.tradingAdvisor - 設定 Candlestick 的時間長短與選擇策略 
  •  - config.strategy - 個別策略的參數
  • -  config.paperTrader - 模擬交易機器人
  • -  config.trader - 實際交易機器人
  • -  config.plugins - 外附的插件 (非必要),像 mailer、telegrambot...等
其中 paperTrader 和 trader 只能擇一,plugins 也可以都不要啟用。



config.watch = {

   exchange: 'binance',  
   currency: 'USDT',    
   asset: 'BTC',   
   tickrate: 20     //更新速度,預設 20 秒更新一次
          
}
config.watch 的部分只能針對一個交易所、一組貨幣 (e.g. BTC/USDT),如果你想達到多線交易就必須複製多個 config.js 然後去改每個 config.watch,最後用指令批次執行多個 Gekko。



config.tradingAdvisor = {

  enabled: true, 
  method: 'RSI_BULL_BEAR',   //選用的策略
  candleSize: 15,  //K棒時間 (分鐘)
  historySize: 10, 
  adapter: 'sqlite'

}
config.tradingAdvisor 是一定要開的,不然你就只是單純的看盤功能而已,在這邊也一樣可以指定你的自訂策略,但後面的 config.strategy 要把參數手動加進去,在 CLI 模式 .toml 檔似乎是沒有用的。



config.RSI_BULL_BEAR = {

  SMA_long : 800,
  SMA_short : 40,

    BULL_RSI : 10,
    BULL_RSI_high : 80,
    BULL_RSI_low : 50,

    BEAR_RSI : 15,
    BEAR_RSI_high : 50,
    BEAR_RSI_low : 25

}
這邊直接拿之前介紹的 RSI 自訂策略來當範例,內建策略它都已經幫你建好了 config.strategy,只要修改裡面的數字微調就可以了,但如果你是要使用自己的策略則要把 .toml 檔轉成像我上面這種形式它才能正確讀取



config.paperTrader = {

  enabled: true,  //開啟模擬交易
  reportInCurrency: true, 
  simulationBalance: {
    asset: 1,
    currency: 100,
  },

  feeMaker: 0.15,
  feeTaker: 0.25,
  feeUsing: 'maker',
  slippage: 0.05,

}
config.paperTrader 就是模擬交易,功能和 UI 介面的完全一樣,可以自訂起始資產、手續費等,但若開啟了 paperTrader 就不能再使用真實資金的交易機器人了,所以兩者請擇一或再開一個 Gekko。



config.trader = {

  enabled: false,
  key: '',           //API key
  secret: '',        //secret API key
  username: '',   //交易所沒有需要用戶名就免填
  passphrase: '',  //交易所沒有需要  passphrase 就免填
  orderUpdateDelay: 1,  //未成交的單要在幾分鐘後調整

}
config.trader 會需要用到交易所提供的 API Key 且在交易所方面開啟 API 交易功能,用戶名跟 passphrase 如果沒有的話就不需要填。

plugins 的部分可以適自己需要開啟,對於交易功能沒有影響。


config['I understand that Gekko only automates MY OWN trading strategies'] = true;
還有在整個 config.js 的最下方有一行類似同意書的概念,要改成 true 才能正確啟用。

node gekko --config config.js
修改完整個 config.js 並儲存後就可以用 CMD 開啟 Gekko 了,如果你有多個 config 設定想要多開 Gekko 只要改指令後方的檔名就可以了。

用 CLI 的方式執行 Gekko 對於想要多線操作的人方便不少,不用改 UI 顯示的 Port 或得為網頁介面多付出電腦效能,同樣的,在雲端也可以用這個辦法多開 Commandline 介面的 Gekko,就不用被一堆 CMD 佔滿畫面了。



留言



這個網誌中的熱門文章

Linux (Ubuntu) 查詢硬碟容量、剩餘大小指令

在 Ubuntu Desktop 版本或有安裝 GUI 像 Xfce 的 Server 版本當然可以直接從圖形介面查看硬碟容量和已經使用的大小, 但如果是在純 CLI 版本或使用 SSH 連線時呢?那就需要用到指令了。 顯示硬碟容量、已使用、可用大小。 df -h 查詢資料夾所占硬碟的大小。 du -h 查詢檔案大小 ls -l

吃光硬碟讀寫的大怪獸 - Superfetch 是什麼?可以關嗎?

Superfetch 是 Windows 內建的硬碟快取功能,它會預先將檔案讀取起來到 Ram 裡方便稍後做使用,所以常常在工作管理員內都可以看到 Superfetch 往往占掉了不少的硬碟使用量,那這樣的情形是好的嗎?其實理論上並不會有太大影響,畢竟 Superfetch 只是將等會要讀取的內容先預置在 Ram 中,如果不趁硬碟負載小的時候優先讀取,之後反而可能忙不過來呢。當然如果你是使用 SSD 的話可能會為使用壽命擔心, 高頻率的讀取可能加速固態硬碟老化,那在讀取速度原本就很快的 SSD 當然就相對的沒有必要開啟 Superfetch 了。 Superfetch 在電腦待機時吃掉大部分硬碟使用量是很常有的事。 要關閉也很簡單, Win+R > services.msc 打開「服務」,找到 Superfetch。 右鍵 > 內容,將它更改為「 已停用 」後確定即可。

TLS / SSL 金鑰轉檔,「.crt / .key」如何轉成「.pem」?( OpenSSL 教學)

不管是哪個 Certificate Authority (CA) 發的憑證多半金鑰檔都是給「.crt / .key」格式的檔案,像是「ca_bundle.crt」、「 certificate.crt」和「.private.key」這種檔案, 但是在實際使用 (Nginx、Apache...等伺服器) 卻會需要的是「.pem」檔 ,那要怎麼轉換呢?其實可以直接使用 OpenSSL 這個軟體和幾行指令來達成。 OpenSSL 官方網站 :  https://www.openssl.org 下載頁面 :  https://www.openssl.org/source sudo apt-get install openssl 以 Linux (Ubuntu / Debian ...等) 為例,可以直接使用 apt-get 指令下載安裝 OpenSSL,如果是其他系統可以參考官方網站的說明。 openssl rsa -in private.key -text > private.pem openssl x509 -inform PEM -in certificate.crt > certificate.pem openssl x509 -inform PEM -in ca_bundle.crt > ca_bundle.pem 以前述所提到的「ca_bundle.crt」、「 certificate.crt」和「.private.key」三個檔案為例,就可以用上方的指令完成轉檔,其實同副檔名的轉檔指令都相同,所以兩個「.crt」的指令其實是重複的,也要記得套換成自己的檔案名稱。 如果需要申請免費的 SSL 憑證也可以參考之前介紹過的 SSL For Free ,它是使用「Let's Encrypt」核發的憑證,以及如果覺得申請憑證和定期更新太麻煩,也可以考慮自動化的 Caddy Server 能自動幫網站升級 HTTPS。