golang实时加密货币价格监控终端应用插件库cryptgo的使用
Golang实时加密货币价格监控终端应用插件库cryptgo的使用
cryptgo简介
Cryptgo是一个基于TUI(终端用户界面)的应用程序,完全用Go编写,用于实时监控和观察加密货币价格!
安装方法
使用Go安装
go get -u github.com/Gituser143/cryptgo
使用Docker安装
运行镜像
设置VERSION
为特定版本以获得稳定构建。省略VERSION
将使用最新稳定版本,或将版本设置为main
将提供最新的(开发中)版本。
# 拉取镜像
make docker-pull
# 拉取特定版本的镜像
VERSION=v1.1.1 make docker-pull
# 运行镜像
make docker-run
# 运行特定版本的镜像
VERSION=v1.1.1 make docker-run
# 使用portfolio命令运行镜像
ARG=portfolio make docker-run
# 使用help命令运行镜像
ARG=help make docker-run
可选地,可以创建一个别名以便于使用:
alias cryptgo='docker run -u $(id -u):$(id -g) -v "$HOME:/home/appuser/" --rm -it bhargavsnv/cryptgo'
然后使用:
cryptgo [flags]
# 或
cryptgo [command]
本地构建镜像
# 克隆仓库
git clone https://github.com/Gituser143/cryptgo
# 进入仓库目录
cd cryptgo
# 构建镜像
make docker-build
# 运行镜像
make docker-run
从源码安装
构建需要安装Go。
# 克隆仓库
git clone https://github.com/Gituser143/cryptgo
# 进入仓库目录
cd cryptgo
# 构建可执行文件
make build
Make命令
# 查看所有make目标
make help
cryptgo功能
Cryptgo帮助您从终端查看加密货币价值、详细信息并跟踪您的加密投资组合!
它利用CoinCap.io和CoinGecko提供的API来提供所需详细信息。
主页面
- 顶部显示市值排名前3的货币及其图表
- 提供包含其他货币相关信息的表格
- 允许您通过将货币添加到收藏表来跟踪您喜欢的货币
- 可以详细检查从货币表或收藏中选择的货币
键盘快捷键
按?
可查看键盘快捷键。这将显示帮助提示。
- 退出:
q
或<C-c>
- 表格导航
k
和<Up>
: 上移j
和<Down>
: 下移<C-u>
: 半页上移<C-d>
: 半页下移<C-b>
: 整页上移<C-f>
: 整页下移gg
和<Home>
: 跳转到顶部G
和<End>
: 跳转到底部f
: 聚焦收藏表F
: 聚焦间隔表
- 搜索/过滤
/
: 打开搜索框Esc
: 清除过滤文本
- 排序
- 使用列号升序排序
- 使用
<F-列号>
降序排序 - 例如:
1
在第一列升序排序,F1
降序
- 操作(间隔表)
<c>
: 从热门列表选择货币<C>
: 从完整列表选择货币e
: 添加/编辑投资组合中的货币P
: 查看投资组合<s>
: 收藏,保存到收藏夹<S>
: 取消收藏,从收藏夹移除<Enter>
: 查看货币信息%
: 选择百分比变化持续时间
货币页面
- 货币页面提供特定货币的更深入详细信息
- 可以从收藏或货币表导航到
- 价格历史显示在顶部,可以通过底部左侧的图表间隔表查看不同间隔
- 价格框中流式传输实时价格,详细信息表中描述了其他详细信息
键盘快捷键
按?
可查看键盘快捷键。这将显示帮助提示。
- 退出:
q
或<C-c>
- 表格导航
k
和<Up>
: 上移j
和<Down>
: 下移<C-u>
: 半页上移<C-d>
: 半页下移<C-b>
: 整页上移<C-f>
: 整页下移gg
和<Home>
: 跳转到顶部G
和<End>
: 跳转到底部f
: 聚焦收藏表F
: 聚焦间隔表
- 排序
- 使用列号升序排序
- 使用
<F-列号>
降序排序 - 例如:
1
在第一列升序排序,F1
降序
- 操作(间隔表)
<Enter>
: 设置间隔<c>
: 从热门列表选择货币<C>
: 从完整列表选择货币
投资组合页面
- Cryptgo允许您通过单独定义的页面跟踪您的加密投资组合
- 可以使用命令
cryptgo portfolio
访问此页面
键盘快捷键
- 退出:
q
或<C-c>
- 表格导航
k
和<Up>
: 上移j
和<Down>
: 下移<C-u>
: 半页上移<C-d>
: 半页下移<C-b>
: 整页上移<C-f>
: 整页下移gg
和<Home>
: 跳转到顶部G
和<End>
: 跳转到底部
- 排序
- 使用列号升序排序
- 使用
<F-列号>
降序排序 - 例如:
1
在第一列升序排序,F1
降序
- 操作
c
: 从热门列表选择货币C
: 从完整列表选择货币e
: 添加/编辑投资组合中的货币<Enter>
: 查看货币信息
迷你投资组合
- Cryptgo还允许您通过迷你投资组合从其他页面查看您的持仓
- 可以通过在主页面按
e
添加/修改/删除货币(将持仓量设置为0以删除) - 可以通过主页面或投资组合本身修改持仓。下图显示修改持仓时的编辑框
实用工具
货币
货币不必固定为美元$,可以从热门货币表(按c
)或完整货币表(按C
)选择其他货币。
热门货币表
完整货币表
搜索/过滤
可以根据输入子字符串过滤/搜索货币。可以在主页面(按/
)调出搜索/过滤框。
更改百分比间隔
主页面上的变化百分比也可以修改。可以通过按%
查看和选择持续时间列表,这将调出下表。
更改图表持续时间
货币页面上历史图表的持续时间是可修改的。要列出可能的持续时间并选择一个,请在货币页面按d
。这将调出下表。
贡献
欢迎提交Pull Requests和Issues!
请查看issues页面以查看可处理的问题,或者创建一些新问题!
致谢
许多设计理念、实用工具、函数和实践都来自:
一定要看看它们!
更多关于golang实时加密货币价格监控终端应用插件库cryptgo的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang实时加密货币价格监控终端应用插件库cryptgo的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用cryptgo构建Golang实时加密货币价格监控终端应用
cryptgo是一个用于构建加密货币监控终端应用的Go语言库,它提供了简洁的API来获取实时加密货币价格数据。下面我将介绍如何使用cryptgo创建一个功能完善的加密货币价格监控工具。
安装cryptgo
首先需要安装cryptgo库:
go get github.com/pdepip/go-cryptgo
基本使用示例
package main
import (
"fmt"
"time"
"github.com/pdepip/go-cryptgo/cryptgo"
)
func main() {
// 创建新的Cryptgo客户端
client := cryptgo.New()
// 设置要监控的加密货币对
pairs := []string{"BTC-USD", "ETH-USD", "XRP-USD"}
// 设置刷新间隔(秒)
refreshInterval := 5
// 启动实时价格监控
for {
// 清屏(Unix-like系统)
fmt.Print("\033[H\033[2J")
// 获取并显示价格
for _, pair := range pairs {
ticker, err := client.GetTicker(pair)
if err != nil {
fmt.Printf("Error fetching %s: %v\n", pair, err)
continue
}
fmt.Printf("%-8s: $%-10.2f 24h Change: %-6.2f%%\n",
pair,
ticker.Price,
ticker.PercentChange24h)
}
// 添加分隔线
fmt.Println("\n" + time.Now().Format("2006-01-02 15:04:05"))
fmt.Println("----------------------------")
// 等待下一次刷新
time.Sleep(time.Duration(refreshInterval) * time.Second)
}
}
高级功能实现
1. 添加价格警报功能
func setupPriceAlerts(client *cryptgo.Cryptgo) {
alerts := map[string]float64{
"BTC-USD": 50000.0,
"ETH-USD": 3000.0,
}
go func() {
for {
for pair, threshold := range alerts {
ticker, err := client.GetTicker(pair)
if err != nil {
continue
}
if ticker.Price >= threshold {
fmt.Printf("\nALERT: %s reached $%.2f!\n", pair, ticker.Price)
// 这里可以添加声音提醒或其他通知方式
}
}
time.Sleep(30 * time.Second)
}
}()
}
2. 多交易所价格比较
func compareExchanges(client *cryptgo.Cryptgo, pair string) {
exchanges := []string{"binance", "coinbase", "kraken"}
fmt.Printf("\nExchange comparison for %s:\n", pair)
for _, exchange := range exchanges {
ticker, err := client.GetExchangeTicker(pair, exchange)
if err != nil {
fmt.Printf("%-10s: error\n", exchange)
continue
}
fmt.Printf("%-10s: $%-10.2f Volume: $%-15.2f\n",
exchange,
ticker.Price,
ticker.Volume24h)
}
}
3. 历史价格图表(ASCII)
func showPriceHistory(client *cryptgo.Cryptgo, pair string, hours int) {
history, err := client.GetHistory(pair, hours)
if err != nil {
fmt.Printf("Error getting history for %s: %v\n", pair, err)
return
}
fmt.Printf("\nPrice history for %s (last %d hours):\n", pair, hours)
min, max := getMinMax(history.Prices)
scale := 10.0 // 图表高度
for i := len(history.Prices) - 1; i >= 0; i-- {
price := history.Prices[i]
height := int((price - min) / (max - min) * scale)
fmt.Printf("%-8.2f |", price)
for j := 0; j < height; j++ {
fmt.Print("#")
}
fmt.Println()
}
}
func getMinMax(prices []float64) (min, max float64) {
min, max = prices[0], prices[0]
for _, p := range prices {
if p < min {
min = p
}
if p > max {
max = p
}
}
return min, max
}
完整应用示例
package main
import (
"fmt"
"time"
"github.com/pdepip/go-cryptgo/cryptgo"
)
func main() {
client := cryptgo.New()
pairs := []string{"BTC-USD", "ETH-USD", "SOL-USD"}
refreshInterval := 5
// 设置价格警报
setupPriceAlerts(client)
for {
fmt.Print("\033[H\033[2J") // 清屏
// 显示实时价格
for _, pair := range pairs {
ticker, err := client.GetTicker(pair)
if err != nil {
fmt.Printf("Error fetching %s: %v\n", pair, err)
continue
}
fmt.Printf("%-8s: $%-10.2f 24h Change: %-6.2f%%\n",
pair,
ticker.Price,
ticker.PercentChange24h)
}
// 显示时间戳
fmt.Println("\n" + time.Now().Format("2006-01-02 15:04:05"))
fmt.Println("----------------------------")
// 每30秒显示一次交易所比较
if time.Now().Second()%30 < 5 {
compareExchanges(client, "BTC-USD")
}
// 每分钟显示一次价格历史
if time.Now().Second() < 5 {
showPriceHistory(client, "BTC-USD", 24)
}
time.Sleep(time.Duration(refreshInterval) * time.Second)
}
}
注意事项
- cryptgo可能需要API密钥才能访问某些交易所的数据
- 频繁请求可能导致API限制,建议合理设置刷新间隔
- 生产环境中应考虑添加错误处理和重试机制
- 对于更复杂的可视化,可以考虑集成termui或tview等终端UI库
这个示例展示了cryptgo库的基本用法和一些高级功能实现。你可以根据需要扩展更多功能,如添加更多加密货币对、实现更复杂的警报逻辑或集成到更大的应用中。