当只有一个指标可以看时,显然无法通过 sigmoid 函数预处理显式特征,此时蜡烛图就有意义,比如只有一个吞吐率散点图,需要分析链路带宽走势时。
移动平均线会随时间依次平滑掉所有细节,因此它是滞后的,而蜡烛图(即 K 线图)同时保留峰谷起始,更多细节被保留,而按阶段绘制四点包络线又同时会显示移动平均的趋势。
以下是一个 BBR 模拟场景:
- t < 100:单流正常;
- 100 < t < 200:随机突发;
- t = 250:新流侵入;
- 300 < t < 350:随机突发;
- t = 500:新流侵入;
- 600 < t < 650:持续拥塞;
- 750 < t < 900:逐渐拥塞;
- t = 1050:带宽加倍;
- 1050 < t < 1250:带宽随机波动;
- 1300 < t < 1450:突发波动;
- 1450 < t < 1550:突发波动;
- …
下面给出图表:
其中图三为蜡烛图,图四分别给出移指平均和蜡烛图统计周期内 max,min 算术平均。以下是一个对应区间细节图:
对移指平均而言,不同 alpha 的平滑细节不同,即便和算术平均放一起也看不出任何趋势,几乎无法分析。而蜡烛图分析 BBR 带宽变化的原因则可看出很多细节,比如通过实体长度,上影线,下影线长度识别随机波动,随机噪声,微突发,持续拥塞,逐渐拥塞,新流侵入,退出,探测比例,公平比例。
总之,通过大阳线,大阴线,锤头,十字星,吊颈线等固有模式及其组合分析,可以刻画很多细节并得到很多结论。
简单介绍一下蜡烛图:かい 音译(只有中国在内少数国家叫 ‘kei-sen’,其余叫 ‘蜡烛’ 图,kei-sen 发音也包括 ‘线’ 的发音,疑似源于粤语音读),始于日本,一看就是日式风格,类似日本工业产品说明书,早期为了统计米价走势,如今普遍用于金融领域。
下面介绍一下如何用 python 绘制蜡烛图。
首先,要装库,建议在 virtualenv 中安装:
pip3 install virtualenv
virtualenv py3env
source py3env/bin/activate
pip3 install mplfinance
以下是个最简单的 demo:
#!/Users/zhaoya/myenv/bin/python3
import mplfinance as mpf
import numpy as np
import pandas as pddata_list = []
data_list.append((100, 104, 98, 102))
data_list.append((102, 108, 88, 96))
data_list.append((96, 100, 85, 93))
data_list.append((93, 115, 93, 105))data = np.array(data_list).reshape(-1, 4)
df = pd.DataFrame(data, columns=['Open', 'High', 'Low', 'Close'])dates = pd.date_range(start='2023-01-01', periods=len(df), freq='D')
df.index = datesmarket_colors = mpf.make_marketcolors(up='g', down='r')
style = mpf.make_mpf_style(marketcolors=market_colors)mpf.plot(df, type='candle')
结局如下:
简单介绍一下 sigmoid 函数:普遍运用于 AI 大模型,将值域映射到固定区间(一般 0 到 1),通过设定激发阈值来获得输出或不输出。
浙江温州皮鞋湿,下雨进水不会胖