蟒蛇

你會推薦哪個算法交易庫來交易比特幣?

  • May 30, 2021

我開始使用 Python 庫對加密貨幣進行算法交易。大多數交易所都有 RESTful API,可讓您輕鬆編寫自己的程式碼並開始使用。

但是,我想從已建立的庫(如 zipline 等)的分析功能中受益。然而,這些還不支持加密貨幣的交易(目前)。

我應該嘗試為我最喜歡的加密貨幣交易所編寫後端,還是有其他選擇?

幾個月前我開始做同樣的事情。

您幾乎可以在任何平台上測試您的策略:我嘗試過:

backtrader - www.backtrader.com - 基於 python 的開源,具有出色的文件和社區支持,有用的作者和一些出色的功能。如果你有基本的python,那麼這將是我的建議。

ninjatrader - 免費下載,易於使用的視覺效果適合初學者 - 你也可以通過 backtrader 獲得它,但你需要更多的 unix/python 知識。

Wealthlab - 類似於 ninjatrader,但帶有一個策略庫,因此您可以立即開始。

Gekko - 基於 Java nodejs。非常好的平台,可以快速啟動和執行,是迄今為止唯一一個可以設置實時機器人的平台,儘管 backtrader 使用者 bartosh 似乎已經使用 ccxt 開發了一個分支,但我還沒有對其進行測試。我離開了這個選項,因為我想沿著 python 路線走。

我認為對於大多數加密機器人愛好者來說最棘手的一點是獲取數據,所以這是我的 ccxt 腳本,它將從 poloniex 中提取數據(您可以更改它 - 請參閱:https ://github.com/ccxt/ccxt )

這個特殊的使用 ninjatrader 的輸入格式。

獲取數據:

獲得它的最佳地點是 ccxt - 每個交易所都有不同的屬性,但我發現 poloniex 為我提供了 5m、15m 和 1d 時間範圍內大多數硬幣的最長歷史持續時間。

這是一個可用於提取 poloniex 資訊的腳本:

import ccxt
import datetime
import time
import math
import pandas as pd


# DATA FEED FROM EXCHANGE
symbol = str('ETH/USDT')
timeframe = str('1d')
exchange = str('poloniex')
exchange_out = str(exchange)
start_date = str('2014-01-01 00:00:00')
get_data = True


def to_unix_time(timestamp):
   epoch = datetime.datetime.utcfromtimestamp(0)  # start of epoch time
   my_time = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")  # plugin your time object
   delta = my_time - epoch
   return delta.total_seconds() * 1000

# CSV File Name
symbol_out = symbol.replace("/", "")
filename = '{}-{}-{}.csv'.format(exchange_out, symbol_out, timeframe)
out_filename = '{}-{}-{}-out.csv'.format(exchange_out, symbol_out, timeframe)


# Get our Exchange
exchange = getattr(ccxt, exchange)()
exchange.load_markets()
hist_start_date = int(to_unix_time(start_date))

data = exchange.fetch_ohlcv(symbol, timeframe, since=hist_start_date)
header = ['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume']
df = pd.DataFrame(data, columns=header)
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df['Timestamp'] = df['Timestamp'].dt.strftime('%Y%m%d %H%M')

#Precision

df[['Volume']] = df[['Volume']].astype(int)


# Save it
df.to_csv(filename, index= False,header=False, sep=';')

Backtest rookies 是一個很好的入門網站——作者似乎也是一個非常好的人:https ://backtest-rookies.com 。

這是許多其他量化內容的好清單:

https://github.com/EliteQuant/EliteQuant/blob/master/README.md#cryptocurrency

祝你好運!

編輯:7/3/18:再添加一個 - Zorro - https://zorro-project.com/。使用 c-lite 程式,快速,良好的教程https://www.financial-hacker.com/ - 免費版本可用於低交易量,並能夠從多個來源下載歷史數據。

編輯:2019 年 12 月 4 日:這是一個很好的連結 量化建模、交易、投資組合管理的線上資源列表。

https://github.com/EliteQuant/EliteQuant

QuantConnect 已經讓使用者參與了 REST 比特幣經紀業務——它完全開源並且對貨幣有完整的建模支持。它還在 beta 中支持 python。

https://www.quantconnect.com/forum/discussion/958/bitfinex-brokerage

(我是QuantConnect的創始人)

編輯:現在完全支持 python 和加密貨幣。我們已將 GDAX 經紀業務投入生產!

編輯(12/2017):社區使用者貢獻了一個 Bitfinex 實現。現在處於 PR 階段。

編輯(7/2019):Bitfinex 已經投入生產大約 6 個月並且穩定。我們已經安裝了來自 GDAX 和 Bitfinex 的完整報價交易報價數據,可在網站上進行免費回測。

引用自:https://quant.stackexchange.com/questions/22596