Przeglądaj źródła

Remove unused markLine code from dashboard charts

skyfffire 7 godzin temu
rodzic
commit
381d4eff3f

+ 1 - 1
run_dashboard.py → src/leadlag/run_dashboard.py

@@ -11,7 +11,7 @@ from pathlib import Path
 project_root = Path(__file__).parent
 sys.path.insert(0, str(project_root / "src"))
 
-from leadlag.web_dashboard import TradingDashboard
+from web_dashboard import TradingDashboard
 
 def main():
     """启动Web Dashboard"""

+ 1 - 65
src/leadlag/templates/dashboard.html

@@ -549,7 +549,6 @@
             const lighterAsks = data.map(d => [d.timestamp * 1000, d.lighter_ask]);
 
             // 准备事件标记数据
-            const priceMarkLines = [];
             const priceMarkPoints = [];
 
             if (tradingEventsData && tradingEventsData.length > 0) {
@@ -580,17 +579,6 @@
                         label = '其他';
                     }
 
-                    priceMarkLines.push({
-                        xAxis: timestamp,
-                        lineStyle: {
-                            color: color,
-                            type: 'dashed',
-                            width: 1,
-                            opacity: 0.6
-                        },
-                        label: { show: false }
-                    });
-
                     priceMarkPoints.push({
                         coord: [timestamp, event.price || 0],
                         value: label,
@@ -699,11 +687,6 @@
                         itemStyle: { color: '#ff6b6b' },
                         showSymbol: false,
                         // 添加事件标记
-                        markLine: priceMarkLines.length > 0 ? {
-                            silent: false,
-                            data: priceMarkLines,
-                            animation: false
-                        } : undefined,
                         markPoint: priceMarkPoints.length > 0 ? {
                             silent: false,
                             data: priceMarkPoints,
@@ -804,7 +787,6 @@
             const bidBps = data.map(d => [d.timestamp * 1000, d.bid_bps]);
 
             // 准备事件标记数据
-            const bpsMarkLines = [];
             const bpsMarkPoints = [];
 
             if (tradingEventsData && tradingEventsData.length > 0) {
@@ -835,17 +817,6 @@
                         label = '其他';
                     }
 
-                    bpsMarkLines.push({
-                        xAxis: timestamp,
-                        lineStyle: {
-                            color: color,
-                            type: 'dashed',
-                            width: 1,
-                            opacity: 0.6
-                        },
-                        label: { show: false }
-                    });
-
                     const bpsValue = event.ask_bps || event.bid_bps || 0;
                     bpsMarkPoints.push({
                         coord: [timestamp, bpsValue],
@@ -953,11 +924,6 @@
                         itemStyle: { color: '#e74c3c' },
                         showSymbol: false,
                         // 添加事件标记
-                        markLine: bpsMarkLines.length > 0 ? {
-                            silent: false,
-                            data: bpsMarkLines,
-                            animation: false
-                        } : undefined,
                         markPoint: bpsMarkPoints.length > 0 ? {
                             silent: false,
                             data: bpsMarkPoints,
@@ -1085,10 +1051,8 @@
 
             console.log('✅ 开始添加', tradingEventsData.length, '个事件标记');
 
-            // 准备标记线数据
-            const priceMarkLines = [];
+            // 准备标记点数据
             const priceMarkPoints = [];
-            const bpsMarkLines = [];
             const bpsMarkPoints = [];
 
             tradingEventsData.forEach(event => {
@@ -1129,20 +1093,6 @@
                     label = '其他';
                 }
 
-                // 创建标记线(垂直线)
-                const markLine = {
-                    xAxis: timestamp,
-                    lineStyle: {
-                        color: color,
-                        type: 'dashed',
-                        width: 1,
-                        opacity: 0.6
-                    },
-                    label: {
-                        show: false
-                    }
-                };
-
                 // 创建标记点
                 const markPoint = {
                     coord: [timestamp, event.price || 0],
@@ -1169,9 +1119,7 @@
                     eventData: event
                 };
 
-                priceMarkLines.push(markLine);
                 priceMarkPoints.push(markPoint);
-                bpsMarkLines.push(markLine);
 
                 // BPS图表的标记点(使用ask_bps或bid_bps)
                 const bpsValue = event.ask_bps || event.bid_bps || 0;
@@ -1183,9 +1131,7 @@
             });
 
             console.log('📊 准备更新图表:');
-            console.log('  - priceMarkLines:', priceMarkLines.length);
             console.log('  - priceMarkPoints:', priceMarkPoints.length);
-            console.log('  - bpsMarkLines:', bpsMarkLines.length);
             console.log('  - bpsMarkPoints:', bpsMarkPoints.length);
 
             // 更新价格图表,添加标记
@@ -1194,11 +1140,6 @@
 
             if (priceOption.series && priceOption.series.length > 0) {
                 // 在第一个系列(Binance价格)上添加标记
-                priceOption.series[0].markLine = {
-                    silent: false,
-                    data: priceMarkLines,
-                    animation: false
-                };
                 priceOption.series[0].markPoint = {
                     silent: false,
                     data: priceMarkPoints,
@@ -1215,11 +1156,6 @@
 
             if (bpsOption.series && bpsOption.series.length > 0) {
                 // 在第一个系列(Ask BPS)上添加标记
-                bpsOption.series[0].markLine = {
-                    silent: false,
-                    data: bpsMarkLines,
-                    animation: false
-                };
                 bpsOption.series[0].markPoint = {
                     silent: false,
                     data: bpsMarkPoints,

+ 0 - 149
src/leadlag/test_order_book_validation.py

@@ -1,149 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-测试order_book有效性检查和清空功能
-"""
-
-import sys
-import os
-sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
-
-from main import OrderBook
-from decimal import Decimal
-
-def test_order_book_validity():
-    """测试order_book有效性检查"""
-    print("=" * 60)
-    print("测试1: OrderBook有效性检查")
-    print("=" * 60)
-    
-    # 创建一个OrderBook实例
-    ob = OrderBook(market_index=1)
-    
-    # 测试1.1: 空的order_book应该无效
-    print("\n测试1.1: 空的order_book")
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert not is_valid, "空的order_book应该无效"
-    print("  ✓ 通过:空order_book被正确识别为无效")
-    
-    # 测试1.2: 只有买单的order_book应该无效
-    print("\n测试1.2: 只有买单的order_book")
-    ob.bids[Decimal('100')] = Decimal('10')
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert not is_valid, "只有买单的order_book应该无效"
-    print("  ✓ 通过:只有买单的order_book被正确识别为无效")
-    
-    # 测试1.3: 只有卖单的order_book应该无效
-    print("\n测试1.3: 只有卖单的order_book")
-    ob.bids.clear()
-    ob.asks[Decimal('101')] = Decimal('10')
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert not is_valid, "只有卖单的order_book应该无效"
-    print("  ✓ 通过:只有卖单的order_book被正确识别为无效")
-    
-    # 测试1.4: 有买卖单但买价>=卖价的order_book应该无效
-    print("\n测试1.4: 买价>=卖价的order_book")
-    ob.bids[Decimal('101')] = Decimal('10')
-    ob.asks[Decimal('101')] = Decimal('10')
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert not is_valid, "买价>=卖价的order_book应该无效"
-    print("  ✓ 通过:买价>=卖价的order_book被正确识别为无效")
-    
-    # 测试1.5: 正常的order_book应该有效
-    print("\n测试1.5: 正常的order_book(买价<卖价)")
-    ob.bids.clear()
-    ob.asks.clear()
-    ob.bids[Decimal('100')] = Decimal('10')
-    ob.asks[Decimal('101')] = Decimal('10')
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert is_valid, "正常的order_book应该有效"
-    print("  ✓ 通过:正常的order_book被正确识别为有效")
-    
-    # 测试1.6: 多个档位的order_book应该有效
-    print("\n测试1.6: 多个档位的order_book")
-    ob.bids[Decimal('99')] = Decimal('20')
-    ob.bids[Decimal('98')] = Decimal('30')
-    ob.asks[Decimal('102')] = Decimal('20')
-    ob.asks[Decimal('103')] = Decimal('30')
-    is_valid = ob.is_valid()
-    print(f"  is_valid() = {is_valid}")
-    assert is_valid, "多个档位的order_book应该有效"
-    print("  ✓ 通过:多个档位的order_book被正确识别为有效")
-    
-    print("\n" + "=" * 60)
-    print("所有有效性检查测试通过!✓")
-    print("=" * 60)
-
-
-def test_order_book_update():
-    """测试order_book更新功能"""
-    print("\n" + "=" * 60)
-    print("测试2: OrderBook更新功能")
-    print("=" * 60)
-    
-    ob = OrderBook(market_index=1)
-    
-    # 测试2.1: 初始更新
-    print("\n测试2.1: 初始更新")
-    order_book_data = {
-        'bids': [
-            {'price': '100', 'size': '10'},
-            {'price': '99', 'size': '20'}
-        ],
-        'asks': [
-            {'price': '101', 'size': '10'},
-            {'price': '102', 'size': '20'}
-        ]
-    }
-    ob.update(order_book_data, offset=1)
-    print(f"  更新后的统计信息: {ob.get_stats()}")
-    assert ob.is_valid(), "更新后的order_book应该有效"
-    print("  ✓ 通过:初始更新成功")
-    
-    # 测试2.2: 增量更新(删除档位)
-    print("\n测试2.2: 增量更新(删除档位)")
-    order_book_data = {
-        'bids': [
-            {'price': '99', 'size': '0'}  # 删除99的买单
-        ]
-    }
-    ob.update(order_book_data, offset=2)
-    print(f"  更新后的统计信息: {ob.get_stats()}")
-    assert ob.is_valid(), "删除档位后的order_book应该有效"
-    assert Decimal('99') not in ob.bids, "99的买单应该被删除"
-    print("  ✓ 通过:增量更新成功")
-    
-    # 测试2.3: 清空order_book
-    print("\n测试2.3: 清空order_book")
-    ob.bids.clear()
-    ob.asks.clear()
-    print(f"  清空后的统计信息: {ob.get_stats()}")
-    assert not ob.is_valid(), "清空后的order_book应该无效"
-    print("  ✓ 通过:清空成功")
-    
-    print("\n" + "=" * 60)
-    print("所有更新功能测试通过!✓")
-    print("=" * 60)
-
-
-if __name__ == '__main__':
-    try:
-        test_order_book_validity()
-        test_order_book_update()
-        print("\n" + "=" * 60)
-        print("所有测试通过!✓✓✓")
-        print("=" * 60)
-    except AssertionError as e:
-        print(f"\n✗ 测试失败: {e}")
-        sys.exit(1)
-    except Exception as e:
-        print(f"\n✗ 测试出错: {e}")
-        import traceback
-        traceback.print_exc()
-        sys.exit(1)
-