try to fix live RT updates on ANNOTATE

This commit is contained in:
Dobromir Popov
2025-11-22 00:55:37 +02:00
parent feb6cec275
commit a7def3b788
5 changed files with 328 additions and 57 deletions

View File

@@ -16,6 +16,8 @@ import time
from typing import Dict, List, Optional, Tuple
from datetime import datetime, timezone
from collections import deque
import numpy as np
import pandas as pd
logger = logging.getLogger(__name__)
@@ -146,20 +148,50 @@ class LivePivotTrainer:
if williams is None:
return
pivots = williams.calculate_pivots(candles)
# Prepare data for Williams Market Structure
# Convert DataFrame to numpy array format
df = candles.copy()
ohlcv_array = df[['open', 'high', 'low', 'close', 'volume']].copy()
if not pivots or 'L2' not in pivots:
# Handle timestamp conversion based on index type
if isinstance(df.index, pd.DatetimeIndex):
# Convert ns to ms
timestamps = df.index.astype(np.int64) // 10**6
else:
# Assume it's already timestamp or handle accordingly
timestamps = df.index
ohlcv_array.insert(0, 'timestamp', timestamps)
ohlcv_array = ohlcv_array.to_numpy()
# Calculate pivots
pivot_levels = williams.calculate_recursive_pivot_points(ohlcv_array)
if not pivot_levels or 2 not in pivot_levels:
return
l2_pivots = pivots['L2']
# Get Level 2 pivots
l2_trend_level = pivot_levels[2]
l2_pivots_objs = l2_trend_level.pivot_points
if not l2_pivots_objs:
return
# Check for new L2 pivots (not in history)
new_pivots = []
for pivot in l2_pivots:
pivot_id = f"{symbol}_{timeframe}_{pivot['timestamp']}_{pivot['type']}"
for p in l2_pivots_objs:
# Convert pivot object to dict for compatibility
pivot_dict = {
'timestamp': p.timestamp, # Keep as datetime object for compatibility
'price': p.price,
'type': p.pivot_type,
'strength': p.strength
}
pivot_id = f"{symbol}_{timeframe}_{pivot_dict['timestamp']}_{pivot_dict['type']}"
if pivot_id not in self.trained_pivots:
new_pivots.append(pivot)
new_pivots.append(pivot_dict)
self.trained_pivots.append(pivot_id)
if new_pivots: