我繼續(xù)用和 TIR、DBI 完全一致的直白風(fēng)格,把價(jià)格動(dòng)量(Price Momentum) 講透,精準(zhǔn)對(duì)應(yīng)你異步策略里的計(jì)算邏輯,包括公式、代碼、實(shí)戰(zhàn)含義。
一、價(jià)格動(dòng)量核心公式(你代碼里的真實(shí)計(jì)算)
價(jià)格動(dòng)量 = 計(jì)算窗口內(nèi)最后一筆成交價(jià)格 ? 窗口內(nèi)第一筆成交價(jià)格
也就是:
plaintext
動(dòng)量 = df_trade["price"].iloc[-1] - df_trade["price"].iloc[0]
二、每一項(xiàng)是什么?(高頻專(zhuān)屬)
計(jì)算窗口:你策略里是 1 秒(CALC_WINDOW=1),也就是 “最近 1 秒內(nèi)的成交價(jià)格變化”;
df_trade["price"].iloc[-1]:窗口內(nèi)最后一筆成交的價(jià)格(最新價(jià));
df_trade["price"].iloc[0]:窗口內(nèi)第一筆成交的價(jià)格(窗口起始價(jià));
結(jié)果含義:正數(shù) = 價(jià)格上漲(多頭動(dòng)量),負(fù)數(shù) = 價(jià)格下跌(空頭動(dòng)量),0 = 價(jià)格沒(méi)動(dòng)。
補(bǔ)充:你策略里的動(dòng)量是「絕對(duì)動(dòng)量」(直接算價(jià)格差),而非「相對(duì)動(dòng)量」(漲跌幅),因?yàn)楦哳l 1 秒內(nèi)漲跌幅極小,絕對(duì)差更直觀。
三、一步一步計(jì)算(你異步代碼里的邏輯)
python
運(yùn)行
1. 判斷窗口內(nèi)有成交數(shù)據(jù)(至少2筆才計(jì)算動(dòng)量)
if len(df_trade) > 1:
# 2. 最后一筆價(jià)格 - 第一筆價(jià)格 = 價(jià)格動(dòng)量
momentum = df_trade["price"].iloc[-1] - df_trade["price"].iloc[0]
else:
# 無(wú)足夠數(shù)據(jù)時(shí)動(dòng)量為0
momentum = 0.0
最終存入因子字典
factors["momentum"] = momentum
四、價(jià)格動(dòng)量的數(shù)值含義(實(shí)戰(zhàn)核心)
和 TIR、DBI 不同,動(dòng)量是絕對(duì)數(shù)值(不是 0~1 的比例),數(shù)值大小直接反映 1 秒內(nèi)的價(jià)格波動(dòng)幅度:
表格
動(dòng)量值(BTCUSDT) 含義 實(shí)戰(zhàn)解讀
50 1 秒內(nèi)漲超 50 USDT 極強(qiáng)多頭動(dòng)量,趨勢(shì)啟動(dòng)
10 ~ 50 1 秒內(nèi)漲 10~50 USDT 中等多頭動(dòng)量,趨勢(shì)延續(xù)
0 ~ 10 1 秒內(nèi)微漲 / 幾乎沒(méi)動(dòng) 動(dòng)量微弱,無(wú)明確趨勢(shì)
-10 ~ 0 1 秒內(nèi)微跌 / 幾乎沒(méi)動(dòng) 動(dòng)量微弱,無(wú)明確趨勢(shì)
-50 ~ -10 1 秒內(nèi)跌 10~50 USDT 中等空頭動(dòng)量,趨勢(shì)延續(xù)
< -50 1 秒內(nèi)跌超 50 USDT 極強(qiáng)空頭動(dòng)量,趨勢(shì)啟動(dòng)
你策略里的閾值(核心條件)
動(dòng)量 > 0 → 多單信號(hào)條件(只要漲就符合,配合 TIR/DBI 過(guò)濾假漲);
動(dòng)量 < 0 → 空單信號(hào)條件(只要跌就符合,配合 TIR/DBI 過(guò)濾假跌)。
關(guān)鍵:價(jià)格動(dòng)量是「趨勢(shì)的直接體現(xiàn)」,但單獨(dú)用容易被 “假突破” 騙,必須和 TIR(主動(dòng)資金)、DBI(盤(pán)口支撐)配合 —— 比如動(dòng)量漲了但 TIR 為負(fù),就是 “被動(dòng)拉漲”,大概率是假突破。
五、舉個(gè)例子(立刻懂)
假設(shè) 1 秒窗口內(nèi)的成交價(jià)格序列:
50000 → 50010 → 50025 → 50030
計(jì)算:
最后一筆價(jià)格:50030
第一筆價(jià)格:50000
價(jià)格動(dòng)量 = 50030 - 50000 = 30
→ 中等多頭動(dòng)量,配合 TIR=0.2、DBI=0.15,就是完美多單信號(hào)。
再比如:
窗口內(nèi)價(jià)格:50000 → 49980 → 49970 → 49960
動(dòng)量 = 49960 - 50000 = -40
→ 中等空頭動(dòng)量,配合 TIR=-0.2、DBI=-0.15,就是完美空單信號(hào)。
六、你策略里的 “標(biāo)準(zhǔn)化動(dòng)量” 補(bǔ)充(進(jìn)階)
你代碼里還計(jì)算了「標(biāo)準(zhǔn)化動(dòng)量」,是對(duì)基礎(chǔ)動(dòng)量的優(yōu)化:
plaintext
標(biāo)準(zhǔn)化動(dòng)量 = 價(jià)格動(dòng)量 / 窗口內(nèi)價(jià)格標(biāo)準(zhǔn)差
作用:把動(dòng)量 “歸一化”,消除不同波動(dòng)環(huán)境的影響 —— 比如牛市 1 秒漲 50 是正常,熊市 1 秒漲 20 就是強(qiáng)動(dòng)量,標(biāo)準(zhǔn)化后能統(tǒng)一判斷。
七、一句話(huà)記住
價(jià)格動(dòng)量是 “計(jì)算窗口內(nèi)的價(jià)格凈變化”,直接反映短時(shí)間內(nèi)價(jià)格的漲跌力度,是趨勢(shì)的最直觀指標(biāo)。