Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

简介

期货 / DEX 永续合约核心概念:sell_open、buy_open、sell_close、buy_close

  1. 先记住一句话

交易里面有两个维度:

方向:
Buy = 买
Sell = 卖
动作:
Open = 开仓
Close = 平仓

组合起来:

操作 含义 建立仓位
buy_open 买入开仓 建立多头(Long)
sell_open 卖出开仓 建立空头(Short)
sell_close 卖出平仓 关闭多头
buy_close 买入平仓 关闭空头

  1. 用石油理解做空

假设:

现在石油价格:

1桶石油 = 120美元

你认为:

未来石油价格会下跌

你的想法:

现在卖掉,未来低价买回来。

  1. sell_open = 开空

你执行:

sell_open 1桶石油

注意:

期货里面不是真的把石油交给别人。

它表示:

创建一个空头仓位

你的仓位:

Short 1桶

也可以理解:

你押注:
石油价格下跌

价格变化:

时间1:
石油价格
120美元
你:
sell_open
建立空仓

  1. 石油价格真的下跌

后来:

石油价格:
120美元

60美元

你的判断正确。

现在你需要退出仓位。

  1. buy_close = 平空

你执行:

buy_close 1桶石油

意思:

买入一个反向仓位
抵消之前的空头

仓位变化:

开空:
-1
平空:
+1
最终:
0

利润:

卖出价格 - 买入价格
120 - 60
= 60美元

所以:

sell_open

价格下跌

buy_close
赚钱

  1. 为什么不是 sell_close?

很多人第一次会疑惑:

“我卖空,为什么最后不是卖出平仓?”

原因:

你的仓位是什么?

开空以后:

Short
也就是:
欠别人一个买入动作

你需要:

买回来

所以:

buy_close

  1. 做多反过来

假设:

石油价格:

60美元

你认为会上涨。

执行:

buy_open

建立:

Long 1桶

价格上涨:

60美元

120美元

赚钱。

退出:

sell_close

利润:

120 - 60
= 60美元

  1. 四个操作完整记忆表

以石油为例:

你的判断 操作 仓位 未来动作
看涨石油 buy_open 多仓 涨了卖掉
看跌石油 sell_open 空仓 跌了买回来
多仓赚钱退出 sell_close 关闭多仓 卖出
空仓赚钱退出 buy_close 关闭空仓 买回

  1. 用仓位变化理解(最重要)

开多

0

buy_open

+1 多仓

关闭:

+1

sell_close

0

开空

0

sell_open

-1 空仓

关闭:

-1

buy_close

0

  1. DEX 永续合约里面也是一样

例如:

GMX、dYdX、Hyperliquid、Drift 等。

用户开 BTC 空单:

sell_open BTC

系统记录:

Position:
symbol:
BTC
side:
SHORT
size:
1 BTC
entryPrice:
120000

用户平仓:

buy_close BTC

系统:

Position:
size:
0
仓位删除

  1. 对开发交易系统最重要的理解

订单(Order):

表示用户想做什么。

例如:

sell_open BTC

仓位(Position):

表示用户现在有什么。

例如:

SHORT BTC 1个

盈亏(PnL):

根据价格变化计算:

空单:

开仓价格 - 当前价格

多单:

当前价格 - 开仓价格

  1. 最终记忆口诀

开仓:
buy_open = 买入开多
sell_open = 卖出开空
平仓:
sell_close = 卖出平多
buy_close = 买入平空

石油例子:

120美元
看跌:
sell_open
卖出建立空仓
60美元
buy_close
买回来关闭空仓
赚:
120 - 60 = 60美元

以后做 DEX 永续合约,核心就是:

订单

仓位

价格变化

PnL计算

结算

理解 sell_open 和 buy_close,就理解了永续合约最基础的一半。

简介

下面这份文档适合作为技术博客文章,覆盖了 jq 从入门到实战的大部分常用场景,并且尽量结合 DevOps、区块链节点运维、日志分析等实际工作场景。

jq 完全教程:JSON 处理神器从入门到实战

什么是 jq

jq 是 Linux/macOS 下最强大的 JSON 命令行处理工具。

阅读全文 »

**CPU“偶尔飙高”**这种,最怕的就是:你不在现场,它已经恢复了,然后啥线索都没留下。

你有 root 权限,这就很爽了,能把事情一次性“抓现行”。我按 从快到准 给你一套实战路线,你可以直接照着来。

一、先搞清楚:CPU 是“谁”在高?

1️⃣ 实时看(马上用)

top

重点看这几列:
• %CPU:谁在吃
• us / sy / wa
• us 高:用户态程序(你的服务、Java、Go、Node)
• sy 高:内核 / 系统调用
• wa 高:I/O 卡住(磁盘 / 网络)

👉 如果你看到的是 Java 300% / postgres 200%,事情就简单多了。

更推荐:

htop

(可视化 + 能看到线程)

二、问题在于:你不在的时候它才高

所以我们要 “持续采样 + 留证据”

三、必装工具(root 权限必备)

apt install -y sysstat dstat htop

yum install -y sysstat dstat

四、持续监控 CPU(核心)

1️⃣ 开启 sysstat(非常重要)

systemctl enable sysstat
systemctl start sysstat

它会每 10 分钟自动采样一次,数据保存在:

/var/log/sysstat/

2️⃣ 事后回看 CPU 历史(关键)

看某一天 CPU 是否异常:

sar -u -f /var/log/sysstat/sa05

重点关注:
• %usr
• %sys
• %iowait
• %idle

如果 %idle 掉到 0,那就是满负载了。

五、定位到“哪个进程”

1️⃣ 看历史中哪个进程吃 CPU(神器)

sar -q -f /var/log/sysstat/sa05

2️⃣ 按进程统计(更狠)

pidstat -u 1

持续输出:
• 哪个 PID
• 每秒吃多少 CPU

如果你怀疑是 Java / PostgreSQL:

pidstat -u -p $(pgrep java) 1
pidstat -u -p $(pgrep postgres) 1

六、CPU 高的时候自动抓现场(推荐你一定要做)

方案:超过 80% 自动记录 top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat << 'EOF' > /root/cpu_watch.sh
#!/bin/bash
while true; do
CPU=$(top -bn1 | awk '/Cpu/ {print 100 - $8}')
if (( $(echo "$CPU > 80" | bc -l) )); then
echo "==== $(date) CPU=$CPU ====" >> /var/log/cpu_spike.log
top -b -n 1 >> /var/log/cpu_spike.log
fi
sleep 10
done
EOF

chmod +x /root/cpu_watch.sh
nohup /root/cpu_watch.sh &

📌 你之后只需要看:

less /var/log/cpu_spike.log

就能知道:

是哪一个进程、哪个线程,把 CPU 干爆了

七、如果是 Java / Go / PostgreSQL(你很可能会遇到)

🔥 Java
• top 里看到 Java 高
• 用:

top -H -p

找线程 → 再用 jstack

🔥 PostgreSQL(你最近就老在搞这个 😄)

1
2
3
SELECT pid, query, state
FROM pg_stat_activity
WHERE state != 'idle';

配合系统:

pidstat -u -p $(pgrep postgres) 1

🔥 Go 程序
• 大概率是:
• 死循环
• goroutine 泄露
• GC 抖动
• 可以临时加:

curl http://localhost:6060/debug/pprof/profile?seconds=30 > cpu.pprof

八、我给你一个最省事组合

如果你只想 今天就落地:

✅ sysstat
✅ pidstat
✅ 自动 cpu_watch.sh

这三样,99% 的 CPU 问题都能破案

九、下一步我可以直接帮你“对症下药”

你可以直接告诉我其中一个👇
• CPU 高的时候 top 里看到的进程名
• 是 Java / PostgreSQL / Go / Node
• 是 us 高 / sy 高 / wa 高

概述

现在是ai时代。需要掌握一些ai工具否则会落后。

OpenCode 是一个开源的 AI Agent 编码工具。它可以通过终端界面、桌面应用程序或 IDE 扩展来使用。

  • 核心定位:它是一个开源、隐私优先且高度可定制的 AI 编码代理。
  • 支持多种使用场景:不仅支持 TUI(终端图形界面)模式,也支持通过 CLI、桌面应用和 VS Code 扩展插件运行。
  • 生态数据:目前 GitHub 上已有 50k+ Star,拥有 650k+ 月活开发者。

OpenCode 最大的吸引力在于它的开放性和多场景支持,不仅支持完全本地化的模型部署,还支持 75+ 种 LLM 提供商,如 Anthropic、Github Copilot、OpenAI、Google、智谱 AI 等。使用起来更加灵活。

阅读全文 »

概述

Mermaid 是一个基于 JavaScript 的图表绘制工具。它的核心理念是:用简单的文本和 Markdown 类似的语法,就能快速生成各种专业图表。 无论您是写技术文档、项目报告,还是仅仅想在 GitHub Readme 中展示流程,Mermaid 都是一个极佳的选择,因为它能直接集成到 Markdown 文件中。

阅读全文 »

概述

最近项目里面的按照时区来计算的时候存在少计算了8小时的问题;

timestamptz 是 PostgreSQL 中的一种时间/日期类型,完整名称是 timestamp with time zone。它和普通的 timestamp(即 timestamp without time zone)有一些区别:

timestamptz 带时区的时间戳(推荐)PostgreSQL 内部会存储为 UTC 时间;查询时会根据你的 会话时区(TimeZone 配置) 自动转换显示;

timestamp:不带时区;只存储一个绝对时间,不做时区转换;

阅读全文 »

简介


Tmux 新手入门指南

Tmux(Terminal Multiplexer)是一个强大的终端复用工具,可以让你在一个终端窗口中创建、管理和切换多个终端会话。它最大的好处是,即使你关闭了终端或者断开了 SSH 连接,后台的会话和程序仍然会继续运行。

这份文档将教会你如何开始使用 Tmux,以及掌握一些最核心的概念和命令。

阅读全文 »