尝试增加arbr指标

This commit is contained in:
lzybetter
2026-07-22 19:48:32 +08:00
parent 8d6f7430bd
commit c81110214a
2 changed files with 66 additions and 9 deletions
+26 -7
View File
@@ -1,7 +1,7 @@
import numpy as np
import pandas as pd
import talib
from util import calculate_brar
# =====================================================================
# 1. 指标引擎:未来所有新发掘的指标,全写在这里
@@ -57,8 +57,14 @@ class FeatureEngine:
up, mid, low = talib.BBANDS(
self.close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0
)
self.df["bb_up"], self.df["bb_mid"], self.df["bb_low"] = up, mid, low
df_tmp = calculate_brar(self.df)
self.df["ar"] = df_tmp["ar"]
self.df['br'] = df_tmp["br"]
self.df["percent_b"] = (self.df["close"] - low) / (up - low)
self.df["bandwidth"] = (up - low) / mid
self.df["amount_avg_20d"] = (
@@ -90,6 +96,11 @@ class FeatureEngine:
)
features["is_not_new_low_10d"] = latest["close"] > latest["low_min_10d"]
features["ar"] = latest["ar"]
features["prev_ar"] = prev["ar"]
features["br"] = latest["br"]
features["prev_br"] = prev["br"]
history_bw = self.df["bandwidth"].iloc[-250:]
features["bw_quantile"] = (history_bw < latest["bandwidth"]).mean()
@@ -113,13 +124,21 @@ class StateRuleBook:
# 【判断是否从主升浪跌破】
if (
current_state == "STATE_3_MAIN_WAVE"
and f["close"] < f["ma10"]
and f["prev_close"] > f["prev_ma10"]
and ((f["close"] < f["ma10"]
and f["prev_close"] > f["prev_ma10"])
or ((f["prev_ar"] >= 150 and f["ar"] < 150)
and (f["prev_br"] >= 300 and f["br"] < 300)))
):
return (
"STATE_4_WAVE_END",
"⚠️ 主升浪确认结束!清空做T仓,准备重新激活做T。",
)
if (f["close"] < f["ma10"] and f["prev_close"] > f["prev_ma10"]):
return (
"STATE_4_WAVE_END",
"⚠️ 主升浪确认结束!清空做T仓,准备重新激活做T。(股价跌破10日均线)",
)
elif ((f["prev_ar"] >= 150 and f["ar"] < 150) and (f["prev_br"] >= 300 and f["br"] < 300)):
return (
"STATE_4_WAVE_END",
"⚠️ 主升浪确认结束!清空做T仓,准备重新激活做T。(ARBR跌破警戒线)",
)
# 【判断是否爆发主升浪】
if (