關於 BBGO — Q & A

c9s
10 min readApr 8, 2021

--

由於陸續一直有許多人詢問,決定應該要整理一下一些關於 BBGO 的問答在這邊。

Q: 為什麼會想要設計 BBGO?

A: 其實一開始我是不相信自動交易的,尤其是交給自動交易去進場或出場,更是不可能的事。

從 2018 年開始進入加密貨幣市場,由於這個市場是 24H 交易,全天候行情都在劇烈變動,加上我一直都是手動下單,常常因為沒注意到市場波動,就突然被停損洗出場,不然就是常常錯過交易機會。 因此,大概從 2019 年我開始寫自己的交易機器人,很簡單的就是把自己平常操盤的邏輯和技術指標參考,寫成機器人,代替我找出交易的機會進場與出場,或是一些簡單的剝頭皮交易 (Scalping)。

當時這隻程式並沒有開源, 主要原因在於我的參數與邏輯都直接寫在機器人裏,也不適合開源。

後來由於策略的績效很不錯,所以就持續開發下去。

隨著我開發的策略越來越複雜,參考的資料也越來越多,我發現這個架構需要調整。 而市面上開源的交易機器人專案,像是 blackbird, gekko 等等看過之後都覺得不好客製化、維護、營運、彈性也不足,更沒有文件可以參考使用。

為了追隨區塊鏈去中心化的精神,因此我決定要開發一套交易程式框架,這個交易框架必須有足夠的透明度,透過開放原始碼你知道你執行的策略會做什麼事,支援多交易所連線、支援同時多連線+多種策略等等,讓想要寫私有策略的朋友可以很容易的嵌入自己的策略 (不用開源),寫很直覺的 YAML 設定檔就可以立刻把策略掛到新的市場.. 等等

最重要的是,讓所有對加密貨幣有興趣的朋友都可以使用、參與、貢獻,以及更遠的目標 — 建構一個圍繞在這個框架的生態系統。

長期來看,我期許 BBGO 是一個社群專案,而不是我一個人的私人專案。

— — — — — — — — — — — — — — — — — —

Q: 你有用過派網嗎?為什麼不用派網或是 BitUniverse?

A: 派網的產品做得很不錯,很多細節也處理得很好。

但我個人是對安全性比較要求的人,畢竟自動交易需要使用到你放在交易所的資金,把自己交易所帳號的 API Key 流出給第三者我自己是比較不放心的,雖然你可以設定提領權限,但是如果真的有心要把你的錢洗出去的話還是有辦法的。

第二個原因是,我喜歡自己去想交易策略,交易策略需要一些創意或靈感,在市場裡面找低風險或中低風險的機會。 派網的話主打是網格策略,但實際上網格策略績效多半是靠著幣價升值創造出來的,再加上程式是不透明的,也就是說他裡面的策略邏輯你不知道,我個人比較偏向打造屬於自己的變種網格或其他更有資金效率的策略。

第三個原因是,派網是中資背景的公司,現在中美貿易戰時機敏感,中國境內也很動盪,中國政府對自己國家的公司下手絲毫不手軟,像馬雲差點就被毒死,還有很多知名中國企業家「被自殺」,資金放在中資背景公司說實在我不太放心。

— — — — — — — — — — — — — — — — — —

Q: 你剛剛提到 BBGO 支援多連線+ 多策略,這是如何辦到的?

A: 大多數的加密貨幣交易機器人框架都沒有辦法做到多連線同時掛多策略,原因是這技術面需要克服交易資料相關的很多問題。

但是這對量化交易策略開發者卻是非常重要的,譬如你只想要啟動一隻 BBGO 程式,但是想在 BTC/USDT 跑一種策略,LTC/USDT 跑另外一種策略,或是想要跨交易所跑策略,在其他的框架下很難做到,但是在 BBGO 可以。

首先,連線方面,BBGO 的架構裡面有一個 ExchangeSession,這個 ExchangeSession 是利用 Go 程式語言本身的 Goroutine 特性去創造的,他可以並行建立到不同或相同交易所的連線,他可能是你在 MAX 的帳號 A 與帳號 B,或是幣安上的帳號 C。

每個 ExchangeSession 會依據定義的交易所來決定用哪個通訊協定,像 MAX 或 Binance 就是用 WebSocket,雖然不同交易所使用的訊息格式不同,但是 BBGO 的內部實作都幫你搞定了,型別都會轉換成 Global Type,因此你的策略只需要處理一種型別就可以了,不需要分不同交易所處理不同的資料型別。

BBGO 提供了兩種策略介面,Single Exchange Strategy 與 Cross Exchange Strategy,只要策略實作有支援,就可以透過 YAML 定義策略與連線的關係,譬如:

strategies:
- on: binance
grid:
upperPrice: ...
lowerPrice: ...
symbol: BTCUSDT
- on: [binance, max]
arbitrage: ...
crossExchangeStrategies:- strategyA:
- strategyB:

— — — — — — — — — — — — — — — — — —

Q: BBGO 會支援 XXX 交易所嗎?

A: 如果有熱心網友願意幫忙實作,就可以喔。

— — — — — — — — — — — — — — — — — —

Q: 為什麼要用 Golang ,而不是 Python 或 JavaScript?

A: 其實在決定使用的程式語言時,我思考了很久,因為我懂 Python, Ruby, Node Js, TypeScript, C, Go, PHP 等等,也因此有衡量過不同程式語言的特性與性能。

最後決定是 Go (golang) 的原因,是因為 Go 是強型別的程式語言,所以你的程式寫完之後,透過編譯就可以幫你驗證程式語法、型別、引用有沒有寫錯,不會丟到 Production 上才發現明顯的錯誤。

開發團隊方面,由於背後支援的公司是 Google,版本推陳出新的步調也相當快,譬如 Apple M1 推出後沒多久,Go 1.16 就支援了。

語法方面,他和 Python 一樣語法簡單。

再來,最重要的是編譯出來的程式執行速度比 Python 快幾百倍,所以要用在套利這種市場中性策略是非常合適的。

部署方面,由於 Go 寫的程式可以像 C 一樣編譯成 Binary,因此你可以在 OS X 上 Cross Compile 成 Linux 上可以執行的 Binary,把 Binary 丟到任何一台新開的 Linux 機器就可以直接執行,不用裝任何程式語言的肥大 Tool Kit,或在 Production 上苦苦的裝完 dependency。

— — — — — — — — — — — — — — — — — —

Q: 不會寫程式的人也可以用 BBGO 嗎?

A: 可以的,如果不會寫程式,那麼可以用 BBGO 內建的策略,只要你有一台 Macbook 或是 Linux 機器就可以執行。 我請過幾個不懂程式設計的朋友照著設定教學玩玩看,都有成功把內建的網格掛起來。

— — — — — — — — — — — — — — — — — —

Q: 可以介紹一下 BBGO 網格的特色嗎?

A: 當初設計 BBGO 網格策略的時候,參考了很多資料,也有發現網格策略常常是一路漲一路賣或是一路跌一路買,所以 BBGO 網格策略加了很多種參數,可以隨使用者自己客製化。 如果你看多,可以只掛單邊,如果價格漲了,在你設定的範圍內也可以幫你自動追價。 如果想要依照不同價位設定不同的量,BBGO 的網格也可以讓你使用自然對數 Exponential Scale、線性 Linear Scale 、Quadratic Scale 來決定不同價位所需要掛的量等等。

有興趣的朋友可以參考下面的 Gist:

https://gist.github.com/c9s/a3e60415fe31db0a0f31749a37f843b7

— — — — — — — — — — — — — — — — — —

Q: 用 BBGO 真的可以賺錢嗎?

A: 哈哈哈… 這是我最常被問到的問題。

首先,我覺得沒有所謂的策略是可以讓你絕對、永遠賺錢的。

你要在某個市場上跑交易策略,你必須對你要買賣的貨品有足夠的了解,基本面、規模、價值、時間點這些都要考慮進去,交易策略只是輔助你在更好的時機進場、出場、控制風險,譬如說保證金交易要控制好被迫平倉價 (Liquidation Price) 等等。

分享一下我認為交易的正確觀念: 過去賺錢的聖杯策略在不同的市場執行是可能會失敗的,過去曾經創造的績效也不代表未來會有一樣的績效,利用過去資料實驗沒辦法賺錢的策略,未來可能也沒辦法賺錢。

市場一直在變化,過去的資料只能代表千萬種變化中的某些部分,就像你在 2018 年使用的策略,在 2020 年機構進場,你可能很快就拋光手上所有的籌碼。

我給 BBGO 的定位是這樣,BBGO 是給「自己知道自己在做什麼」的人用的一個交易工具,不是「不知道自己在幹嘛的人跑了都會賺錢」的賺錢機器。

— — — — — — — — — — — — — — — — — —

Q: 發放的交易獎勵是 MAX 交易所提供的行銷費用嗎?

A: 當然不是,是我從 2018 年開始投入的部位所得的獲利,分享給大家來參與這個市場。 這個活動是從 2020 年底開始,我當時是很推薦大家進入市場,但是 2021 年中不確定性更高了,大家也要更小心。

很多人都以為我想做這個 BBGO 專案是在幫 MAX 行銷,但是其實不是,BBGO 不只支援 MAX 也支援幣安,此外,我客觀評估過,台灣的交易所選擇其實不多,但是 API 接起來只有 MAX 交易所的 API 最好接,功能也最多,WebSocket 的格式和幣安很像,非常好整合,此外 MAX Token 平台幣生態系也是最完整的。

— — — — — — — — — — — — — — — — — —

Q: 那麼為什麼會想提供交易獎金給註冊用戶?

A: 主要是我希望利用推薦碼的功能做成 BBGO 的現金流的一部分,未來可以推動一些 BBGO 的發展。

— — — — — — — — — — — — — — — — — —

Q: 推薦獎金很賺嗎? (對 還真的有人這樣問)

A: 其實獎金很少,MAX 交易所的手續費和幣託、幣安比起來都是最便宜的,推薦獎金是手續費裡面抽一小部分出來,自然就更少了。

如果你想要算的話,可以用我之前算過的公式:

推薦獎金 = 用戶交易量 * 0.050% (VIP 0 的手續費) * 0.8 (被推薦人折扣) * 0.5 (MAX Token 五折) * 0.5 (50% 推薦返佣)

基本上加推薦碼還是一般散戶多,所以如果 VIP 0 用戶,一天最理想交易量到 1 萬台幣換算的話:

推薦獎金 = NTD 10,000 * 0.05 * 0.01 * 0.8 * 0.5 * 0.5

推薦獎金 = 10,000 * 0.0001

推薦獎金 = 1 台幣

而且這還要每天都有交易才有,所以我把交易獎金 9 USDT 送給大家是真心想要讓大家嘗試看看的。

— — — — — — — — — — — — — — — — — —

Q: MAX 的深度這麼差,為什麼你看好 MAX 交易所?

A: 當然台灣的 MAX 交易所的深度絕對比不上境外交易所幣安,畢竟金融法規的限制,沒有辦法做到像幣安這麼多高風險的金融商品給用戶。

但是長遠來看,區塊鏈金融是一個必然的趨勢,2021 年開始看起來這個趨勢是更加確定。 如果台灣金融業開始採納、進場,必定需要經過一家台灣金管會認為合法合規的交易所來執行交易,而不是透過境外交易所做投資。

即使 2021 年註冊交易所的人數大幅增加,但是和台股股民的數量比較起來還是有數量級的差距,反過來說,這個成長空間還很大。

不過我也不想把話說得太滿,事情的發展總是會出乎自己意料之外,黑天鵝灰犀牛到處都有,一定都要考慮到風險,所以大家也不要聽我說的話就直接做決策,要自己判斷、評估。

— — — — — — — — — — — — — — — — — —

Q: BBGO 有 Telegram 嗎?在哪呢?

A: 在這喔~

(其他問題繼續整理上來)

筆者最近在推廣符合法規的台灣加密貨幣交易所 MAX,用最近在加密貨幣市場的獲利分享給讀者。我都用真實姓名,可以查證,不是詐騙。

如果你喜歡我的文章或是想要支持 BBGO 自動交易機器人,可以使用我的推薦碼 c7982718 或使用此連結 註冊 MAX 交易所帳號,並獲得 8 折的手續費折扣。

註冊後,只要完成 Google 表單中的小任務就可拿到總共 9 美元 (USDT),只限內轉

👉 https://bit.ly/max-9usdt

*為防止詐騙,請認明我的 Telegram @c123456789s ,我不會主動私訊你,絕不會中途增加其他條件或是請你轉錢!請你轉錢出去的都是詐騙集團*

--

--