首頁>科技>

全文共2194字,預計學習時長6分鐘

我最近編寫了第一個加密貨幣交易機器人。從每十分鐘收集一次比特幣的歷史價格開始——我把這些資料裝入Python Pandas的資料庫裡,執行一些程式模擬,進行低買高賣。

這看起來很不錯,程式碼也很簡單,用不了幾個小時就可以搞定一些robin_stock函式,然後用其大幹一場。但我錯了,這是我在這個失誤中學到的東西,可能會幫助你節省一點時間。

模擬交易比現實交易更加簡單

當進行模擬交易,操作人可能需要做一些假設。程式決定在哪個時刻以該價格買進或賣出,並且每次都成功的話,就意味著取得了利潤的最大值。

但現實並非這麼簡單。實際交易需要一點進行時間,價格也在不斷變化。當程式進行實時交易時,價格發生顯著變化之前只能完成一部分的訂單,甚至可能無法完成任何訂單。

我把這稱為“搖擺和錯過”。製作出的智慧交易機器人需要平滑的處理此類情況。對此,我選擇儲存交易的訂單號,經常對結果進行查詢。如果一個小時後這筆交易還沒有進行,機器人就會取消訂單然後再進行一次嘗試。

在模擬中所有的訂單都可以按預期完成——但在現實生活中,需要檢查訂單的完成與丟失情況。

限制買賣是好幫手

當進行實時交易時,需要以限價單或者市場單的形式釋出這個買賣。有了市場指令之後,交易將以任何現行匯率完成,這並不好。因為價格可能在幾秒鐘內波動。這就是使用機器人作為首選的原因。所以我透過限制交易的方式下單,如果價格劇烈波動的話,它就不會以超出預期的價格買入或賣出。

注意精確度

現在回想起來,這是顯而易見的,但是當代碼第一次運用時,它就給我帶來了一些麻煩,在模擬中釋出一個購買(cash_on_hand/coin_price)是可行的。當然,模擬可能會儲存購買的12.2342348998729384797 ETH,但在模擬中沒人會在乎。

但是如果在現實生活中嘗試這麼做是很可能失敗的。交易平臺對購買量和價格的精確度有限制,並且會根據幣種的不同有所變化。當你想到這一點的時候就會明白——DOGE目前的售價只有幾分之一美分,而BTC的售價目前超過1.9萬美元,不可能像買BTC一樣合理的購買極小部分的DOGE。

機器人為每個幣種的價格和購買量建立了最精確的查詢表,並使用它們計算購買訂單數量。如果發生了執行錯誤,伺服器會發送錯誤反饋。

不能假設伺服器總如期望的那樣響應

這只是一個程式設計實踐,但是如果不第一時間就寫出來的話,這個程式很快就會被理解。每次發出與伺服器對話的呼叫——獲取價格、發出訂單、檢查狀態——檢查異常,每一次執行中都是如此。

你的模擬如果沒有維護視窗,則不會出現伺服器故障與對未編寫錯誤庫的呼叫,現實生活中實際交易的要素如此多,並且……

假設網際網路連線失敗,電源關閉的內容

必須處理斷電、上網和程式崩潰的問題。如果正在計算移動平均線或RSI這類值,或是觀察燭臺模式,需要非常確定資料的連續性與不中斷。如果中斷可能導致程式出現錯誤的呼叫。需要對狀態進行儲存,檢查資料的日期戳。如果在計算指示符時發現數據中斷,則需要暫停執行直到得到需要計算的全部資料。

匹配幣種與正確的售價

出現以下錯誤是完全可能的,機器人試圖以另一個幣種的價格出售某個幣種。這會導致一些非常愚蠢的事情發生。由於一個糟糕的設計決定,某個早期版本的機器人試圖以當時BCH的成本出售一些BTC,這低了一個數量級。

這個資料沒有讓我非常難過的原因是,這個價格相差是如此之遠,以至於伺服器將其標記為錯誤,如果只是差了,例如,一個因數4的話,這個錯誤交易會讓我付出很多代價。

讓機器人給你發簡訊非常有用

大多數手機公司都有傳送電子郵件的方式,這些郵件會以簡訊的形式傳送到手機,這讓我們可以在做其他事情時實時瞭解機器人在做什麼。例如想知道的機器人取得的成功,或是一定需要知道的機器人做的傻事。

我將簡訊配置設定為告訴我何時買進買出,並且傳送每個交易訂單的結果。這樣我就知道機器人是否下達了成功的訂單。

確保用少於所有的錢進行交易

這個情況一般出現在想要進行小事務測試的更改時。從一開始就把這個功能構建到機器人中——沒有人希望使用賬戶中所有的錢進行實時測試。

靜態分析減少了開發時間

這也是很好的程式設計實踐。在Python中,一些錯誤會直到執行程式碼分支時才發現。如果該錯誤在一個不常執行的函式中,如buy()或sell()函式中,這類錯誤可能幾個小時都捕捉不到。

使用PyLint和PyFlakes這樣的工具,可以快速捕獲執行過程中的一些錯誤。我強烈推薦這類工具,可以大量節省時間。

請注意,上述所有內容都不應視為理財建議。投資中承擔的任何風險都是自己的,編寫一個花錢的程式比親手交易加密貨幣的風險還要更大,這已經很能說明問題了。

我們一起分享AI學習與發展的乾貨

13
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 蘋果矽之後:PC市場會走向何方?