|
|
@@ -12,9 +12,9 @@ from logger_config import logger
|
|
|
getcontext().prec = 28
|
|
|
|
|
|
# 假设我们有一个数据流,订单簿和成交数据
|
|
|
-order_book_snapshots = deque(maxlen=60) # 存储过去60个订单簿快照
|
|
|
-spread_delta_snapshots = deque(maxlen=60) # 存储过去60个价差数据(最小变动价格的倍数)
|
|
|
-trade_snapshots = deque(maxlen=600) # 存储过去600个成交数据
|
|
|
+order_book_snapshots = deque(maxlen=100) # 存储订单簿快照
|
|
|
+spread_delta_snapshots = deque(maxlen=100) # 存储价差数据(最小变动价格的倍数)
|
|
|
+trade_snapshots = deque(maxlen=1000) # 存储成交数据
|
|
|
|
|
|
stop_event = threading.Event()
|
|
|
|
|
|
@@ -29,6 +29,10 @@ bounds = [(10, 1000.0), # A 的范围
|
|
|
# 假设S0是初始的参考价格
|
|
|
S0 = -1
|
|
|
|
|
|
+# 记录最大挂单距离,并实时刷新
|
|
|
+max_delta_sum = 0
|
|
|
+
|
|
|
+
|
|
|
def get_tick_size_from_prices(ask_price, bid_price):
|
|
|
# 获取价格的小数位数
|
|
|
ask_decimal_places = len(str(ask_price).split('.')[1])
|
|
|
@@ -172,6 +176,7 @@ def calculate_sigma_squared(prices, timestamps):
|
|
|
def process_depth_data():
|
|
|
global order_book_snapshots, trade_snapshots, spread_delta_snapshots
|
|
|
global k_initial, A_initial, S0
|
|
|
+ global max_delta_sum
|
|
|
|
|
|
# 数据预热,至少3条深度数据以及10条成交数据才能用于计算
|
|
|
if len(order_book_snapshots) < 3 or len(trade_snapshots) < 10:
|
|
|
@@ -225,4 +230,6 @@ def process_depth_data():
|
|
|
gamma = 1.0
|
|
|
T_minus_t = 1.0
|
|
|
delta_sum = calculate_delta_sum(gamma, sigma_squared, T_minus_t, k_initial)
|
|
|
- logger.info(f"δ^a + δ^b: {delta_sum}, k: {k_initial}, dm: {delta_max}, λ(δ): {lambda_hat}, ∫ φ(k, ξ) dξ: {integral_phi_value}")
|
|
|
+ if delta_sum > max_delta_sum and len(trade_snapshots) > 70:
|
|
|
+ logger.info(f"δ^a + δ^b: {delta_sum}, k: {k_initial}, dm: {delta_max}, λ(δ): {lambda_hat}, ∫ φ(k, ξ) dξ: {integral_phi_value}")
|
|
|
+ max_delta_sum = delta_sum
|