CCXT:加密货币量化交易神器
CCXT框架 是一个Python/Javascript/PHP的一个交易API框架,对接超过130多个交易所。可用于世界各地的加密货币交易所的连接和交易,以及转账支付处理,可用于存储数据,分析,可视化,指标开发,算法交易,是一个非常容易集成的开箱即用的统一API。 CCXT框架Github地址: https://github.com/ccxt/ccxt 当前功能列表:支持许多交易市场,甚至即将推出的为所有交易提供完整的公共和私人API所有货币,山寨币和标记,价格,订单,交易,代码等…提供用于交叉交换或跨货币分析和套利的可选标准化数据开箱即用的统一的一体化API,非常易于集成适用于Node7.6+,Python2和3,PHP5.4+,Web浏览器认证交易所支持的加密货币交易所 ccxt库目前支持以下131个加密货币交易所和交易API,可以在github查看。上面的列表经常更新,新的加密市场,山寨币交换,错误修复,API端点定期引入和添加。有关详细信息,请参阅手册,如果你没有在上面的列表中找到加密货币交易市场和/或想要添加其他交易所,请通过GitHub或通过电子邮件在此处发布问题来发...
用基于 Python 的开发框架 Brownie 部署以太坊智能合约
在本文中,我们将使用Python部署智能合约。这篇文章可能是您走向智能合约和区块链开发的桥梁! 介绍 我希望可以在任何开发场景都尽量用Python。在区块链开发中,常用的是以太坊虚拟机智能合约语言Solidity,它具有许多不错的功能,并且仍然可以使用 Python 进行部署。刚开始使用Solidity时,我使用了Remix(https://remix.ethereum.org/),这是一个强大的Web IDE,可让您进行智能合约可视化。Remix很棒,我现在仍然使用它,但是在单个IDE之外可以实现很多其他功能。后来我开始学习Truffle(https://www.trufflesuite.com/)和HardHat(https://hardhat.org/guides/mainnet-forking.html),它们是用于部署智能合约的Node.js框架。 这些是到目前为止我所见过的主要框架,这些框架都不错,但是我更喜欢Python。所以当我发现Brownie 和web3.py:一个用于部署智能合约的Python框架和一个用于区块链开发的开源协议之后非常兴奋。我们将在本文中同时...
用 Python 和币安 API 构建数字货币交易机器人(一)
交易数字货币或任何其他资产的首要任务是要有目标和策略来实现。在这里,我们不是在谈论交易策略,而只是构建一个简单而功能强大的数字货币交易机器人来应用您的策略。本系列更像是一个数字货币自动交易机器人框架。 我们将使用python 3.9(3.9.2)首先创建项目文件结构。 /exchanges /strategies /models 在这里,“ exchanges”文件夹存储了Exchange API包装器,为您的策略制定策略并为我们将要使用的业务对象建模。 模型 我们将为此项目定义几个业务对象,例如价格,货币类型或订单。首先,让我们从价格开始,将其用于我们随后将要创建的策略。 在我们为业务对象编写通用抽象层之前: ./models/model.pyfrom datetime import datetime class AbstractModel: created: datetime def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value) 然后是我们的第一个Pr...
专注加密货币量化交易 , focus on crypto quant
CCXT:加密货币量化交易神器
CCXT框架 是一个Python/Javascript/PHP的一个交易API框架,对接超过130多个交易所。可用于世界各地的加密货币交易所的连接和交易,以及转账支付处理,可用于存储数据,分析,可视化,指标开发,算法交易,是一个非常容易集成的开箱即用的统一API。 CCXT框架Github地址: https://github.com/ccxt/ccxt 当前功能列表:支持许多交易市场,甚至即将推出的为所有交易提供完整的公共和私人API所有货币,山寨币和标记,价格,订单,交易,代码等…提供用于交叉交换或跨货币分析和套利的可选标准化数据开箱即用的统一的一体化API,非常易于集成适用于Node7.6+,Python2和3,PHP5.4+,Web浏览器认证交易所支持的加密货币交易所 ccxt库目前支持以下131个加密货币交易所和交易API,可以在github查看。上面的列表经常更新,新的加密市场,山寨币交换,错误修复,API端点定期引入和添加。有关详细信息,请参阅手册,如果你没有在上面的列表中找到加密货币交易市场和/或想要添加其他交易所,请通过GitHub或通过电子邮件在此处发布问题来发...
用基于 Python 的开发框架 Brownie 部署以太坊智能合约
在本文中,我们将使用Python部署智能合约。这篇文章可能是您走向智能合约和区块链开发的桥梁! 介绍 我希望可以在任何开发场景都尽量用Python。在区块链开发中,常用的是以太坊虚拟机智能合约语言Solidity,它具有许多不错的功能,并且仍然可以使用 Python 进行部署。刚开始使用Solidity时,我使用了Remix(https://remix.ethereum.org/),这是一个强大的Web IDE,可让您进行智能合约可视化。Remix很棒,我现在仍然使用它,但是在单个IDE之外可以实现很多其他功能。后来我开始学习Truffle(https://www.trufflesuite.com/)和HardHat(https://hardhat.org/guides/mainnet-forking.html),它们是用于部署智能合约的Node.js框架。 这些是到目前为止我所见过的主要框架,这些框架都不错,但是我更喜欢Python。所以当我发现Brownie 和web3.py:一个用于部署智能合约的Python框架和一个用于区块链开发的开源协议之后非常兴奋。我们将在本文中同时...
用 Python 和币安 API 构建数字货币交易机器人(一)
交易数字货币或任何其他资产的首要任务是要有目标和策略来实现。在这里,我们不是在谈论交易策略,而只是构建一个简单而功能强大的数字货币交易机器人来应用您的策略。本系列更像是一个数字货币自动交易机器人框架。 我们将使用python 3.9(3.9.2)首先创建项目文件结构。 /exchanges /strategies /models 在这里,“ exchanges”文件夹存储了Exchange API包装器,为您的策略制定策略并为我们将要使用的业务对象建模。 模型 我们将为此项目定义几个业务对象,例如价格,货币类型或订单。首先,让我们从价格开始,将其用于我们随后将要创建的策略。 在我们为业务对象编写通用抽象层之前: ./models/model.pyfrom datetime import datetime class AbstractModel: created: datetime def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value) 然后是我们的第一个Pr...
专注加密货币量化交易 , focus on crypto quant
Share Dialog
Share Dialog

Subscribe to quantbang

Subscribe to quantbang
<100 subscribers
<100 subscribers

在市值排名前 10 的加密货币中,从纯粹的经济角度来看,你认为自 2017 年以来表现最好的加密货币是哪一种?\
不管你信不信,币安自己的 BNB 实际上远远超过了其他所有加密货币。我编写了一个脚本来帮助我了解几种加密货币的历史表现,当我决定只加入前 10 名加密货币并看看表现最好的货币是哪个。
在运行脚本之前,我很确定它可能将是 DOGE。所以我坐在这里,等待历史数据下载,以便我的脚本可以绘制一些加密图表。
脚本运行完毕,结果出来了,感谢中本聪,这不是 DOGE。哦,等等,这更有趣——它是 BNB。
自 2017 年以来,BNB 已上涨超过 20,000%。

程序能够为你下载历史数据,并分析任意数量的币种。如果您想对任意数量的加密货币的收益百分比进行快速比较分析,这很方便。您所需要的只是一些 Python 知识。
编写加密货币分析工具
该代码也可在 GitHub 上找到。
https://github.com/CyberPunkMetalHead/crypto-performance-tracker
首先创建一个文本文件并将其命名为coins.txt。在此文本文件中,放入一些您想要分析的币种名称。它们需要包含配对符号,并且每行必须是 1 个货币,不能有逗号:
创建一个 binancedata.py 文件。我们将使用此文件轮询 Binance API 以获取我们需要的金融数据。由于我们使用的是开放端口,因此不需要 API 密钥和密码。
让我们导入一些依赖项并定义一个空的 Binance 客户端:
# needed for the binance API and websockets
from binance.client import Client
import csv
import os
import time
from datetime import date, datetime
client = Client()
现在让我们编写一个函数来从我们的coins.txt文件中打开和读取货币:
def get_coins():
with open('coins.txt', 'r') as f:
coins = f.readlines()
coins = [coin.strip('\n') for coin in coins]
return coins
此文件中的最后一个函数将为我们获取历史数据并以 CSV 格式保存:
def get_historical_data(coin, since, kline_interval):
"""
Args example:
coin = 'BTCUSDT'
since = '1 Jan 2021'
kline_interval = Client.KLINE_INTERVAL_1MINUTE
"""
if os.path.isfile(f'data/{coin}_{since}.csv'):
print('Datafile already exists, loading file...')
else:
print(f'Fetching historical data for {coin}, this may take a few minutes...')
start_time = time.perf_counter()
data = client.get_historical_klines(coin, kline_interval, since)
data = [item[0:5] for item in data]
# field names
fields = ['timstamp', 'high', 'low', 'open', 'close']
# save the data
with open(f'data/{coin}_{since}.csv', 'w', newline='') as f:
# using csv.writer method from CSV package
write = csv.writer(f)
write.writerow(fields)
write.writerows(data)
end_time = time.perf_counter()
# calculate how long it took to produce the file
time_elapsed = round(end_time - start_time)
print(f'Historical data for {coin} saved as {coin}_{since}.csv. Time elapsed: {time_elapsed} seconds')
return f'{coin}_{since}.csv'
此函数还将检查文件是否已经存在,如果存在它不会再次下载。该函数接受 3 个参数:coin、since 和 kline_interval。检查函数下方的注释,了解我们将传递给这些参数的正确格式。
保存文件,现在是创建我们的主要执行文件的时候了,我们将把这个文件的内容导入到其中。
继续创建一个 main.py 文件并安装以下依赖项:
from binancedata import *
import threading
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import numpy as np
import pandas as pd
# needed for the binance API and websockets
from binance.client import Client
import csv
import os
import time
from datetime import datetime, date
让我们开始一些线程。该脚本是为了一次下载多个数据文件,所以为了避免等待一次下载每个历史数据文件,我们将使用线程并下载这些文件,如下所示:
threads = []
coins = get_coins()
for coin in coins:
t = threading.Thread(target=get_historical_data, args=(coin, '1 Jan 2017', Client.KLINE_INTERVAL_1DAY) ) #'get_historical_data('ETHUSDT', '1 Jan 2021', Client.KLINE_INTERVAL_1MINUTE)
t.start()
threads.append(t)
[thread.join() for thread in threads]
现在我们需要一个函数来返回我们下载的所有数据文件的文件名:
def get_all_filenames():
return [get_historical_data(coin, '1 Jan 2017', Client.KLINE_INTERVAL_1DAY) for coin in coins]
最后,我们将定义主要函数,我们将在其中绘制这些数据并运行脚本:
def main():
historical_data = get_all_filenames()
for file in historical_data:
data = pd.read_csv(f'data/{file}')
rolling_percentage = data['close']
rolling_percentage = [(item - rolling_percentage[0]) / rolling_percentage[0]*100 for item in rolling_percentage ]
timestamp = data['timstamp']
timestamp = [datetime.fromtimestamp(item/1000) for item in timestamp]
plt.legend()
plt.plot(timestamp, rolling_percentage, label=file)
plt.xlabel("Date")
plt.ylabel("% gain")
plt.show()
if __name__ == "__main__":
main()
现在剩下要做的就是在脚本目录中创建一个空文件夹并将其命名为 data。大功告成,您现在可以分析您想要的所有代币的历史收益。

在市值排名前 10 的加密货币中,从纯粹的经济角度来看,你认为自 2017 年以来表现最好的加密货币是哪一种?\
不管你信不信,币安自己的 BNB 实际上远远超过了其他所有加密货币。我编写了一个脚本来帮助我了解几种加密货币的历史表现,当我决定只加入前 10 名加密货币并看看表现最好的货币是哪个。
在运行脚本之前,我很确定它可能将是 DOGE。所以我坐在这里,等待历史数据下载,以便我的脚本可以绘制一些加密图表。
脚本运行完毕,结果出来了,感谢中本聪,这不是 DOGE。哦,等等,这更有趣——它是 BNB。
自 2017 年以来,BNB 已上涨超过 20,000%。

程序能够为你下载历史数据,并分析任意数量的币种。如果您想对任意数量的加密货币的收益百分比进行快速比较分析,这很方便。您所需要的只是一些 Python 知识。
编写加密货币分析工具
该代码也可在 GitHub 上找到。
https://github.com/CyberPunkMetalHead/crypto-performance-tracker
首先创建一个文本文件并将其命名为coins.txt。在此文本文件中,放入一些您想要分析的币种名称。它们需要包含配对符号,并且每行必须是 1 个货币,不能有逗号:
创建一个 binancedata.py 文件。我们将使用此文件轮询 Binance API 以获取我们需要的金融数据。由于我们使用的是开放端口,因此不需要 API 密钥和密码。
让我们导入一些依赖项并定义一个空的 Binance 客户端:
# needed for the binance API and websockets
from binance.client import Client
import csv
import os
import time
from datetime import date, datetime
client = Client()
现在让我们编写一个函数来从我们的coins.txt文件中打开和读取货币:
def get_coins():
with open('coins.txt', 'r') as f:
coins = f.readlines()
coins = [coin.strip('\n') for coin in coins]
return coins
此文件中的最后一个函数将为我们获取历史数据并以 CSV 格式保存:
def get_historical_data(coin, since, kline_interval):
"""
Args example:
coin = 'BTCUSDT'
since = '1 Jan 2021'
kline_interval = Client.KLINE_INTERVAL_1MINUTE
"""
if os.path.isfile(f'data/{coin}_{since}.csv'):
print('Datafile already exists, loading file...')
else:
print(f'Fetching historical data for {coin}, this may take a few minutes...')
start_time = time.perf_counter()
data = client.get_historical_klines(coin, kline_interval, since)
data = [item[0:5] for item in data]
# field names
fields = ['timstamp', 'high', 'low', 'open', 'close']
# save the data
with open(f'data/{coin}_{since}.csv', 'w', newline='') as f:
# using csv.writer method from CSV package
write = csv.writer(f)
write.writerow(fields)
write.writerows(data)
end_time = time.perf_counter()
# calculate how long it took to produce the file
time_elapsed = round(end_time - start_time)
print(f'Historical data for {coin} saved as {coin}_{since}.csv. Time elapsed: {time_elapsed} seconds')
return f'{coin}_{since}.csv'
此函数还将检查文件是否已经存在,如果存在它不会再次下载。该函数接受 3 个参数:coin、since 和 kline_interval。检查函数下方的注释,了解我们将传递给这些参数的正确格式。
保存文件,现在是创建我们的主要执行文件的时候了,我们将把这个文件的内容导入到其中。
继续创建一个 main.py 文件并安装以下依赖项:
from binancedata import *
import threading
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import numpy as np
import pandas as pd
# needed for the binance API and websockets
from binance.client import Client
import csv
import os
import time
from datetime import datetime, date
让我们开始一些线程。该脚本是为了一次下载多个数据文件,所以为了避免等待一次下载每个历史数据文件,我们将使用线程并下载这些文件,如下所示:
threads = []
coins = get_coins()
for coin in coins:
t = threading.Thread(target=get_historical_data, args=(coin, '1 Jan 2017', Client.KLINE_INTERVAL_1DAY) ) #'get_historical_data('ETHUSDT', '1 Jan 2021', Client.KLINE_INTERVAL_1MINUTE)
t.start()
threads.append(t)
[thread.join() for thread in threads]
现在我们需要一个函数来返回我们下载的所有数据文件的文件名:
def get_all_filenames():
return [get_historical_data(coin, '1 Jan 2017', Client.KLINE_INTERVAL_1DAY) for coin in coins]
最后,我们将定义主要函数,我们将在其中绘制这些数据并运行脚本:
def main():
historical_data = get_all_filenames()
for file in historical_data:
data = pd.read_csv(f'data/{file}')
rolling_percentage = data['close']
rolling_percentage = [(item - rolling_percentage[0]) / rolling_percentage[0]*100 for item in rolling_percentage ]
timestamp = data['timstamp']
timestamp = [datetime.fromtimestamp(item/1000) for item in timestamp]
plt.legend()
plt.plot(timestamp, rolling_percentage, label=file)
plt.xlabel("Date")
plt.ylabel("% gain")
plt.show()
if __name__ == "__main__":
main()
现在剩下要做的就是在脚本目录中创建一个空文件夹并将其命名为 data。大功告成,您现在可以分析您想要的所有代币的历史收益。
No activity yet