看盘在五个环节里的位置
看盘不是为了猜明天涨还是跌,而是为了说清楚"现在是什么行情":在涨、在跌,还是来回晃。这决定了该用网格还是趋势策略。
D9 讲过量化系统的五个环节:数据 → 回测 → 策略 → 模拟盘 → 实盘。看盘横跨前后两头:K 线和成交量属于"数据",指标和画线是很多"策略"的原材料。回测和模拟盘里跑的,常常就是本页这些指标算出来的规则,比如 D9 的双均线。
看盘 和 技术分析 chart reading / technical analysis
指标 indicator
price + volume (the only raw data)
|
+--> TREND : EMA, MA crossover, trend line --> up / down / sideways?
+--> POSITION : support, resistance, Bollinger --> near a key level?
+--> MOMENTUM : RSI, MACD --> speeding up / slowing?
+--> VOLATILITY: ATR, band width --> how far is "normal"?
+--> FUTURES : open interest, funding, liquidation --> who is crowded?
price + volume = 价格和成交量(唯一的原始数据);TREND = 趋势类:EMA、双均线、趋势线;POSITION = 位置类:支撑位、阻力位、布林带;MOMENTUM = 动能类:RSI、MACD;VOLATILITY = 波动类:ATR、带宽;FUTURES = 合约专属数据:持仓量、资金费率、爆仓数据。右边一列是每类指标回答的问题:在涨在跌还是横着走?离关键价位近不近?在加速还是减速?多大的波动算正常?哪一边挤得太满?本页就按这张图的顺序讲。
为什么写量化程序也要会看盘
图表软件 charting tool
- 打开任意一家交易所的 BTCUSDT 永续合约交易页(测试网、模拟盘或只看行情都行,不用下单)。
- 在 K 线图的上边或左边找到三样东西:切换时间的按钮(写着 1m、15m、1H、4H、1D 之类)、加指标的按钮(常写"指标"或
fx)、画线工具(一排小图标,常在左侧)。 - 应该看到:切到 1D 时每根柱子代表一天。找不到画线工具的话,看看图上方有没有"TradingView 版 / 专业版"之类的切换,各家不同。
- 看盘的结论写成"现在是什么行情",不写"明天会怎样"。
- 先看日线,再看小周期;刚开始只加两三个指标,第 12 节会讲为什么多了没用。
- 只看行情不需要登录,更不需要 API Key。任何让你在图表网站里填 API Key 的页面都别填。
K 线图:一根柱子怎么读,看几分钟的
D3 讲过,一根 K 线把一段时间压成开、高、低、收四个价格加成交量。这一节讲怎么一眼读出它。
阳线、阴线、实体、影线 bullish / bearish candle, body, wick
怎么玩:默认就是上面算过的那根。把"收"改成 59,600,它变成阴线;填开 60,000、高 60,150、低 58,800、收 60,100,就是一根长下影;把"开"和"收"都填 60,020、高 60,400、低 59,600,就是十字星。故意把"高"填得比"收"还低,看它怎么报错:一根合法的 K 线,最高必须 ≥ 开和收,最低必须 ≤ 开和收。
三个常见形态:只说它描述了什么
时间周期 和 多周期 timeframe / multi-timeframe
怎么玩:滚到这里会自动播放,每一步多出 10 根 1 分钟 K 线(左边),右边那根 1 小时 K 线同步"长"出来。盯住右边:开盘价从头到尾不变;最高、最低只会往外扩,不会往回缩;收盘价一直在跳,直到第 60 分钟才定下来。这就是为什么"还没走完的那根 K 线"不能拿来当信号:它的收盘价还会变。系统开了"减少动态效果"时不自动播放,点"播放"即可。
import java.math.BigDecimal;
import java.util.List;
// D9 第 3 节的 Kline(没有成交量字段;要合成成交量就再加一个 volume)
record Kline(long openTime, BigDecimal open, BigDecimal high, BigDecimal low, BigDecimal close) {}
class Resample {
// 60 根 1 分钟 K 线 → 1 根 1 小时 K 线(调用方保证 minutes 按时间排好、没有缺口)
static Kline merge(List<Kline> minutes) {
Kline first = minutes.get(0), last = minutes.get(minutes.size() - 1);
BigDecimal hi = first.high(), lo = first.low();
for (Kline k : minutes) {
hi = hi.max(k.high()); // 最高只会往上扩
lo = lo.min(k.low()); // 最低只会往下扩
}
return new Kline(first.openTime(), first.open(), hi, lo, last.close());
}
}
Resample 类把一串 1 分钟 K 线合成一根大周期 K 线。注释里说的"没有缺口"很重要:D9 第 3 节讲过,缺了一根 1 分钟 K 线,合成出来的高低点可能就错了。
- 还没走完的 K 线会一直变。策略只能用"已经收盘"的 K 线做判断,否则就是 D9 的未来函数的变种。
- 看到一个形态先问两个问题:它在什么位置出现?后面有没有确认?
- 和别人聊行情时先说周期:"4 小时级别在涨",比"在涨"有用得多。
- 在交易所 K 线图上,依次切到 15m、4H、1D,每个周期记一句"最近 20 根在涨、在跌还是横着走"。
- 在 1D 图上找一根明显的长下影线,记下它的开高低收,照上面的算法算实体和两条影线。
- 再往后数 3 根,记下是涨是跌。只记这一次的结果,别急着下结论:要记满 20 次才算一个小统计(D9 讲过,看一次就下结论是人肉过拟合)。
- 应该看到:三个周期的结论经常不一样。能说出"日线在涨,15 分钟在回调"就算过关。
支撑、阻力、趋势线:图上最常画的几条线
支撑和阻力不是一条精确的线,而是一段"很多人在这里下过单"的价格区域。
支撑位 和 阻力位 support / resistance
突破、假突破、回踩、角色互换 breakout / fakeout / retest / role reversal
怎么玩:滚到这里自动播放,每一步多出几根 K 线。横着的虚线框是支撑区 57,950–58,050;被圈出来的是这一步要看的那根。注意第 4 步:三次反弹的高点一次比一次低(59,380 → 59,180 → 58,980),支撑还没破,但买的人在变少。第 6 步回踩碰到原支撑区下沿就掉头,这时虚线框的说明从"支撑"变成"阻力"。
趋势线 和 通道 trend line / channel
- 止损别正好放在支撑线上或整数关口上,那里正是被扫的地方。放到区域外面一点,再按距离算仓位(D12 以损定仓)。
- 网格的区间上下沿,常常就定在明显的支撑位和阻力位附近(D1)。价格跌破支撑,就是 D9 回测器里"跌破下沿满仓被套"的开始。
- 画线用收盘价还是影线,自己定一个规矩并一直用它。
- 切到 BTCUSDT 4 小时图,看最近两三周,找一个被碰过至少两次的低点区域。
- 用画线工具里的"水平线"(有的叫水平射线)画在这个区域中间。再用"趋势线"工具连接两个越来越高(或越来越低)的点。
- 数一数:这条水平线被碰了几次?每次碰完是弹回去了,还是穿过去了?把次数和结果写在笔记里。
- 应该看到:线附近的 K 线经常有长影线。画完两天后回来看,价格碰到线时发生了什么,再判断这条线有没有用。
成交量:同样的上涨,有没有人跟
价格告诉你"走到了哪",成交量告诉你"有多少人在推"。
放量 和 缩量 volume spike / low volume
量价配合 和 量价背离 volume confirmation / divergence
- 一根巨量长阴线常常出现在恐慌和连环强平的时候(第 10 节),它可能是一段下跌的末尾,也可能是开始。只看量分不出来。
- 策略里用成交量过滤突破(比如"量 > 均量 × 1.5 才算"),加之前先用 D9 回测器那一套检验一下,别凭感觉加。
- K 线图下方的成交量柱多数默认开着;没开的话在指标里搜"成交量 / Volume"加上。很多图会顺带画一条均量线。
- 在 4 小时图上找最近一次明显的大涨,把那一根的成交量和它前面 20 根大概的平均量比一比,算出是几倍。
- 再看它后面 5 根:是继续涨了,还是回到了原位?记下来。
- 应该看到:成交量单位在图上某处标着(BTC 或 USDT)。倍数算出来是个具体数字,比如"约 2.5 倍",而不是"好像挺大"。
均线家族:SMA、EMA,以及为什么它们都慢半拍
均线就是"过去一段时间的平均价"。区别只在于:最近的价格占多大分量。
SMA:简单平均 simple moving average
EMA:越近的越重要 exponential moving average
ema 按这个规则写。第 3 根:起点 = 前 3 根的 SMA = 102。
第 4 根:0.5 × 103 + 0.5 × 102 = 102.5。
第 5 根:0.5 × 106 + 0.5 × 102.5 = 104.25。
第 6 根:0.5 × 108 + 0.5 × 104.25 = 106.125。
同一根上 SMA 是 105.67:价格在往上走时,EMA 跟得更紧。
ArrayDeque 滑动窗口)。怎么玩:细折线是价格,从 100 一下跳到 110 后不动;粗实线是 EMA,虚线是 SMA。拖动 N 看两件事:N 越大,两条线都越慢;EMA 起步更快,SMA 要等 N 根以后才完全跟上。这个"慢半拍"就是:均线永远跟在价格后面。
均线怎么用,什么时候失灵
- 在 4 小时图上打开"指标",搜 EMA,加一条,设置里把长度改成 20;再加一条,长度 60。改一下两条线的样式,让你分得清谁是谁。
- 数一数最近 3 个月它们交叉了几次(每次交叉就是 D9 双均线的一个信号),每次交叉后价格走了多远。
- 把光标移到最新一根上,读出 EMA20 的数值。回到总页用
ema编程题的函数,把你抄下来的最近几十根收盘价算一遍:抄得越多,和图上的数越接近(第 8 节讲为什么)。 - 应该看到:趋势段里交叉很少、走得很远;横盘段里交叉很密、每次都走不远。
- 均线长度没有"最准的":20 / 60、12 / 26 都只是习惯。把长度调到历史上最好看,就是 D9 的过拟合。
- 同样长度的 EMA 和 SMA 读数不一样。和同事对数之前,先说清是哪一种、什么周期。
- 横盘时均线交叉几乎都是假信号。先用第 3 节的支撑阻力判断是不是在横盘,再决定要不要看交叉。
MACD:两条 EMA 的差,再平滑一次
MACD 不神秘:它就是"快 EMA 减慢 EMA",看两条均线是在拉开还是在靠拢。
MACD 的三样东西 MACD line / signal line / histogram
四种常见读法
什么时候会失灵
- 在图上加 MACD(默认参数 12、26、9),同时在主图加 EMA12 和 EMA26 两条线。
- 找最近一次 DIF(MACD 线)从下方穿过零轴的那一根,看主图上 EMA12 是不是正好在同一根上穿 EMA26。
- 应该看到:是同一根。这说明 MACD 没有带来新信息,只是把均线交叉换了个画法。以后看到新指标,先问一句"它是用什么算出来的"。
- 国内很多软件的 MACD 柱子乘了 2,TradingView 不乘。两边数值正好差一倍时,先查这个。
- 12 / 26 / 9 是习惯参数,换周期不用跟着改;但拿两张图比较时,参数要一样。
- MACD 和双均线说的是同一件事,别把它们当成两个独立的"确认"。
RSI:最近涨的力气大,还是跌的力气大
RSI 是一个 0 到 100 之间的数:最近上涨的力气占"涨跌总力气"的多少。
RSI 怎么算 relative strength index
14 次变化:+100、+100、−50、+100、−50、+100、−100、+100、+50、−50、+100、+50、−50、0。
涨的加起来 6 × 100 + 2 × 50 = 700,平均涨幅 = 700 ÷ 14 = 50。
跌的加起来 50 + 50 + 100 + 50 + 50 = 300,平均跌幅 = 300 ÷ 14 ≈ 21.43。
RS = 50 ÷ 21.43 ≈ 2.333;RSI = 100 − 100 ÷ 3.333 = 70.00。
rsi 要处理这种情况。超买、超卖,以及为什么别拿它反着做
怎么玩:上半张是收盘价,下半张是 RSI,两条细虚线是 70 和 30。滚到这里自动播放。重点看第 4、5 步:价格第二次冲高到 62,100,比第一次的 61,980 更高;RSI 却只有 73.50,比第一次的 87.61 低。价格还在涨,但每一步涨得越来越"费劲"。最后一步它确实跌了,但要记住:真实行情里,背离之后继续涨的情况同样很多。
- 在日线图上加 RSI,长度 14(多数软件默认就是 14,并画好了 70 / 30 两条线)。
- 往回翻 6 个月,找出 RSI 冲过 70 的每一次,记下那天的收盘价,和 5 天后的收盘价。
- 数一数:5 天后更高的有几次,更低的有几次。
- 应该看到:两种情况都有,而且不会是"超买后几乎都跌"。这就是用数据检验一个说法,而不是凭印象。
- 70 / 30 只是习惯线,强趋势里有人改用 80 / 20。改了线,回测要重新跑。
- 个别软件的 RSI 用简单平均代替 Wilder 平滑,读数会差几点。对不上时先查设置里的算法。
- RSI 在 50 上下来回穿,比冲到 70 / 30 更常见,说明没有明显方向。
布林带:多大的波动算"正常"
布林带在均线上下各画一条线,线离均线多远,由最近波动有多大决定。
布林带 怎么算 Bollinger Bands
怎么用,什么时候失灵
怎么玩:默认填的是 25 根收盘价。点"填入本页 RSI 算例",最后一根 RSI 应该显示 70.00,和第 7 节手算一致。实战用法:在图上把光标依次移到最近的 K 线上,把收盘价抄下来(或者从 D9 第 3 节讲的公开 K 线接口拉),贴进来,和图上的指标读数比。你会发现布林带能完全对上(它只用最近 20 根),EMA 和 RSI 对不上一点:它们是递推算的,图表软件从很早以前的数据开始算,你只从第 1 根开始算,起点不同。抄的根数越多,差距越小。
- 在 4 小时图上加布林带(Bollinger Bands),长度 20、倍数 2,都是默认值。
- 往回翻,找一段上下轨挤得最近的地方,量一下当时的带宽(上轨 − 下轨,再除以中轨)。
- 看它后面 10 根 K 线涨跌了多少,是往上还是往下。
- 应该看到:收口之后多半有一段明显的波动,方向两边都有。再用上面的计算器,抄最近 20 根收盘价,核对图上的上中下轨数值。
- 碰上轨不等于卖点,碰下轨也不等于买点。强趋势里价格能贴着上轨走很久。
- 布林带的标准差除以 n。Excel 默认的 STDEV 除以 n − 1,要用 STDEV.P 才能和图上对上。
- 比较两个币谁更安静,要用带宽(相对数),不能比上下轨之间差多少 U。
ATR:用"平常晃多少"来定止损
止损放得太近会被正常的晃动扫掉,放得太远又亏太多。ATR 告诉你"正常晃动"有多大。
ATR average true range
波动率止损 和 以损定仓 volatility stop
- 在日线图上加 ATR(常叫 Average True Range),长度 14,读出最新值。再切到 1 小时图读一次,对比两个数差多少。
- 假设现在按当前价买入,止损放 2 倍日线 ATR,账户 10,000 U、最多亏 1%:算出止损价和数量,写下来。
- 应该看到:日线 ATR 是 1 小时 ATR 的好几倍。用 1 小时 ATR 定止损,很容易被一天里的正常波动扫掉,所以止损用的周期要和你打算拿多久对得上。
- ATR 只说明晃得多大,不说明方向。ATR 变大不代表要涨,也不代表要跌。
- 2 倍 ATR 只是一个常见的起点。还要看附近的支撑阻力,止损放在区域外面。
- 按最多能亏多少来定仓位,ATR 大的时候自动少买,小的时候多买:这就是以损定仓的好处。
合约专属数据:持仓量、多空比、爆仓
现货只有价格和成交量;合约还多出几份数据,告诉你"场上谁挤得太满"。它们是参考,不是信号。
持仓量 open interest, OI
| 价格 | 持仓量 | 常见解读 | 要小心的 |
|---|---|---|---|
| 涨 | 涨 | 新开的多单在推:有新钱进来做多 | 资金费率同时很高 → 多头拥挤 |
| 涨 | 跌 | 空头在平仓(买回),叫空头回补;被强平的空头也算 | 推动力是"空头认输",平完就没了,后劲可能弱 |
| 跌 | 涨 | 新开的空单在推 | 资金费率很负 → 空头拥挤,容易被反向挤 |
| 跌 | 跌 | 多头在平仓、被强平;多头互相踩踏叫多杀多 | 常伴随爆仓数据暴增和插针 |
"常见解读"是教科书式的倾向,不是规律。套利仓(D9 的资金费率套利:现货多 + 永续空)也会让持仓量上涨,但它根本不看涨跌。
多空比、爆仓、清算地图
算一遍:把四个数放在一起读
怎么玩:先把四个下拉框设成上面"算一遍"的情况(涨、涨、明显为正、没什么),读一下解读;再试"涨、跌、为负、空单爆仓很多",这是一次典型的空头回补。每次读完解读,都看最后一句"还要看什么":单独一组数据从来不够下结论。
- 在交易所合约页找"合约数据 / 交易数据 / 数据中心"之类的入口(各家叫法不同),找到 BTCUSDT 的持仓量、多空人数比、大户持仓比。资金费率在交易页顶部就有(D10)。
- 也可以用公开接口拉,比如币安合约的
/fapi/v1/openInterest(当前持仓量)和/futures/data/openInterestHist(持仓量历史),路径和参数以官方文档为准(D10 讲过怎么调公开接口)。 - 把价格、持仓量、资金费率、多空人数比记下来,用上面的解读器写一句判断;24 小时后再记一次,看判断和实际走势是否一致。
- 应该看到:有时对、有时错。能把"为什么错"说出来(比如被一条消息打断了)就算做到了。
- 这些数据各家不同。只看一家交易所,代表不了全市场;第三方网站会汇总多家,但口径也不一样。
- 多空人数比数的是人头,大户持仓比看的是金额,两者方向相反很常见,不矛盾。
- 清算地图是第三方估算的,不是交易所真实的挂单,别把它读成"价格一定会去那里"。
在图表软件上走一遍:从画线到回测报告
这一节把前面十节在一个真实工具里串起来:切周期、加指标、画线、设提醒,最后写 15 行代码拿到一份回测报告。
用哪个工具
怎么玩:滚到这里自动播放,每一步上面那排按钮里被框住的就是要点的那个,图上同步出现这一步的结果,下面的深色框是弹出的设置或代码。看完一遍后,打开真的图表软件,照下面的清单逐步做。第 9 步的报告数字是本页按同一条规则在这段模拟数据上算的,和真实行情的结果无关。
- 打开图:在 TradingView 搜索框输入 BTCUSDT,选一个交易所的永续合约(名字后面常带 .P 或写着 Perpetual)。
- 切周期:顶部周期选 4 小时。
- 加均线:点"指标",搜 EMA,加两次,一条长度 20、一条 60。
- 加 RSI:搜 RSI,长度 14,它会出现在主图下方的小窗里。
- 加布林带:搜 Bollinger Bands,默认 20、2。主图太乱就先把它隐藏。
- 画支撑线:左侧画线工具选水平线,画在第 3 节找到的支撑区。
- 画趋势线:选趋势线工具,连两个越来越高的低点。
- 设提醒:在支撑线上右键(或点顶部的闹钟图标)添加价格提醒,条件选"向下穿过"。
- 回测:打开 Pine 编辑器,把下面的代码整段粘进去,点"添加到图表",再打开策略测试器看报告。
应该看到:图上出现两条 EMA 和一串买卖箭头,报告里有净利润、最大回撤、胜率、盈亏因子、交易次数这几项。
//@version=5
strategy("EMA 20/60 cross", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
fastLen = input.int(20, "fast EMA")
slowLen = input.int(60, "slow EMA")
fast = ta.ema(close, fastLen)
slow = ta.ema(close, slowLen)
plot(fast, "fast", color=color.orange, linewidth=2)
plot(slow, "slow", color=color.gray, linewidth=2)
if ta.crossover(fast, slow) // golden cross: open long
strategy.entry("L", strategy.long)
if ta.crossunder(fast, slow) // death cross: close long
strategy.close("L")
逐行说明:第 1 行声明脚本版本(v5 写法,新版编辑器也能运行;如果提示升级,按提示转换即可);strategy(...) 设初始资金 10,000、每次用全部资金、每边手续费 0.1%(和 D9 回测器一致);input.int 让你能在设置里改长度;ta.ema 算 EMA;plot 把线画到图上;ta.crossover / ta.crossunder 就是金叉 / 死叉;strategy.entry 开多,strategy.close 平掉。信号在一根 K 线收盘时算出,默认在下一根开盘成交,和 D9 规定的"第 t 根出信号、第 t+1 根成交"一样,没有未来函数。
报告里看什么,和 D9 怎么对上
metrics 不同,数字对不上是正常的,以它的帮助文档为准。比较同一个工具里两组参数的相对高低就行。- 策略测试器默认只用你当前图上加载的那段历史,周期越短,覆盖的时间越短。
- 先确认手续费设了。没设手续费的回测报告,D9 已经演示过有多好看、多不可信。
- 价格提醒只是提醒,不会替你下单。要自动下单得像 D4、D10 那样自己接交易所接口。
指标组合:少而分工明确,外加一张看盘检查单
一个管趋势、一个管位置、一个管动能,再加一个管波动,够了。
为什么别堆指标:信息重复
看盘检查单 chart checklist
1)价格 61,200,在 EMA20(61,000)和 EMA60(59,800)上方,两条都往上 → 偏涨。
2)上方阻力 62,000,距离 (62,000 − 61,200) ÷ 61,200 ≈ 1.3%;下方支撑 59,800 附近。
3)RSI 66,没有背离。
4)4 小时 ATR 900,离阻力还不到一根 ATR。
5)资金费率 0.03%、持仓量在涨 → 多头略挤。
结论:方向偏涨,但离阻力太近、多头偏挤,现在追高不划算;等回踩 EMA20 附近,或放量站上 62,000 再说。止损按第 9 节放在 2 倍 ATR 外。
四个常见误区
- 用第 11 节搭好的那张 4 小时图,按上面五个问题,给 BTCUSDT 写五行,外加一句结论(打算怎么做、止损放哪)。
- 写上日期和时间,存下来(记事本或表格都行,D12 会给一份交易日志模板)。
- 一周后回来看:结论对了吗?错了的话,是哪一行判断错了?
- 应该看到:五行里每一行都能指着图上的某条线或某个数说出来,而不是"感觉会涨"。
词典和自测
本页的新词,以及前几天学过、这里又用到的词,都能在这里查到。
自测 9 题
回到 七日冲刺 D11,按这个顺序做:
- 指标实验台:勾上 EMA、布林带,下方副图在 RSI / MACD / 成交量之间切换,拖"看到第几根"或点"逐根回放",看它们在上涨段、横盘段、破位段各自"说"什么、什么时候说错(那段模拟行情里:上涨段 RSI 连续四十多根在 70 以上,横盘段价格反复穿 EMA20 十来次)。
- 两道编程题:
ema和rsi,口径和第 5、7 节完全一样。写完测试后,再把第 5 节那 6 个数(N = 3)喂给你的 ema,应该得到 102 → 102.5 → 104.25 → 106.125;把第 7 节那 16 个收盘价(N = 14)喂给 rsi,最后两个值应该是 70.00 和 57.59。 - 今日实操清单:把本页每节末尾的"实操"框在真实图表上做一遍,至少完成第 2、3、5、10、11 节那五个。
- 最后打卡。