File size: 2,091 Bytes
fa81843
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# scratch/test_patterns.py
import sys
import os

# 将 backend 目录添加到 sys.path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'backend')))

from app.data_manager import fetch_and_prepare_data
from app.patterns import analyze_patterns

if __name__ == "__main__":
    print("正在拉取 TSLA 数据来测试形态检测逻辑...")
    try:
        df = fetch_and_prepare_data("TSLA", period="5d")
        df_patterns = analyze_patterns(df)
        
        # 统计检测到的形态
        hammers = df_patterns[df_patterns['Pattern_Hammer']].index
        shooting_stars = df_patterns[df_patterns['Pattern_Shooting_Star']].index
        bullish_eng = df_patterns[df_patterns['Pattern_Bullish_Engulfing']].index
        bearish_eng = df_patterns[df_patterns['Pattern_Bearish_Engulfing']].index
        m_tops = df_patterns[df_patterns['Pattern_M_Top']].index
        w_bottoms = df_patterns[df_patterns['Pattern_W_Bottom']].index
        
        print("\n形态检测统计结果:")
        print(f"  Hammer (锤子): {len(hammers)} 个")
        print(f"  Shooting Star (射击之星): {len(shooting_stars)} 个")
        print(f"  Bullish Engulfing (阳包阴): {len(bullish_eng)} 个")
        print(f"  Bearish Engulfing (阴包阳): {len(bearish_eng)} 个")
        print(f"  M-Top (双顶): {len(m_tops)} 个")
        print(f"  W-Bottom (双底): {len(w_bottoms)} 个")
        
        if len(m_tops) > 0:
            print("\n双顶 M-Top 触发时刻样例:")
            for t in m_tops[:3]:
                print(f"  {t} | 颈线价格: {df_patterns.loc[t, 'M_Neckline']:.2f} | 收盘价: {df_patterns.loc[t, 'Close']:.2f}")
                
        if len(w_bottoms) > 0:
            print("\n双底 W-Bottom 触发时刻样例:")
            for t in w_bottoms[:3]:
                print(f"  {t} | 颈线价格: {df_patterns.loc[t, 'W_Neckline']:.2f} | 收盘价: {df_patterns.loc[t, 'Close']:.2f}")
                
    except Exception as e:
        print(f"测试出错: {e}")
        import traceback
        traceback.print_exc()