siat 3.1.28__py3-none-any.whl → 3.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- siat/capm_beta2.py +41 -19
- siat/fund_china.py +3 -3
- siat/risk_adjusted_return2.py +45 -6
- siat/security_price2.py +1 -1
- siat/security_prices.py +38 -17
- siat/security_trend2-20240620.py +493 -0
- siat/security_trend2.py +17 -11
- siat/stock.py +76 -22
- siat/stock_technical-20240620.py +2736 -0
- siat/stock_technical.py +219 -50
- {siat-3.1.28.dist-info → siat-3.2.2.dist-info}/METADATA +1 -1
- {siat-3.1.28.dist-info → siat-3.2.2.dist-info}/RECORD +14 -12
- {siat-3.1.28.dist-info → siat-3.2.2.dist-info}/WHEEL +0 -0
- {siat-3.1.28.dist-info → siat-3.2.2.dist-info}/top_level.txt +0 -0
siat/stock_technical.py
CHANGED
@@ -2435,10 +2435,22 @@ if __name__ =="__main__":
|
|
2435
2435
|
|
2436
2436
|
start='2024-3-1'; end='2024-4-12'; ahead_days=30*3
|
2437
2437
|
|
2438
|
-
technical='EMV'; indicator='Close'
|
2438
|
+
technical='EMV'; indicator='Close'
|
2439
2439
|
|
2440
|
-
|
2441
|
-
|
2440
|
+
attention_values=[0,25,50,75]
|
2441
|
+
more_details=False
|
2442
|
+
ticker_type='auto'; source='auto'
|
2443
|
+
ahead_days=30*4
|
2444
|
+
resample_freq='6H'; smooth=True;linewidth=1.5
|
2445
|
+
date_range=False; date_freq=False; annotate=False
|
2446
|
+
graph=['ALL']; printout=False
|
2447
|
+
loc1='best'; loc2='best'
|
2448
|
+
|
2449
|
+
facecolor=['whitesmoke','papayawhip']
|
2450
|
+
price_line_style='dotted'; price_line_color='red'; price_line_width=5; price_line_marker='.'
|
2451
|
+
|
2452
|
+
|
2453
|
+
df=security_technical2(ticker,start,end,technical=technical,marker_sizes=[20,150,300])
|
2442
2454
|
|
2443
2455
|
tlist=['RSI','OBV','MACD','KDJ','VOL','PSY','ARBR','CR','EMV','Bollinger', \
|
2444
2456
|
'TRIX','DMA','BIAS','CCI','W%R','ROC','DMI']
|
@@ -2446,45 +2458,56 @@ if __name__ =="__main__":
|
|
2446
2458
|
df=security_technical2(ticker,start,end,technical=t,loc1='lower left',loc2='lower right')
|
2447
2459
|
|
2448
2460
|
def security_technical2(ticker,start='default',end='default', \
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2456
|
-
|
2457
|
-
|
2458
|
-
|
2459
|
-
|
2460
|
-
|
2461
|
-
|
2462
|
-
|
2463
|
-
|
2464
|
-
|
2465
|
-
|
2466
|
-
|
2467
|
-
|
2468
|
-
|
2469
|
-
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2482
|
-
|
2483
|
-
|
2484
|
-
|
2485
|
-
|
2486
|
-
|
2487
|
-
|
2461
|
+
technical=['MACD'],indicator='Close', \
|
2462
|
+
more_details=False, \
|
2463
|
+
attention_values=[0,25,50,75,100], \
|
2464
|
+
|
2465
|
+
ticker_type='auto',source='auto', \
|
2466
|
+
|
2467
|
+
#指标的默认参数
|
2468
|
+
RSI_days=[6,24], \
|
2469
|
+
OBV_days=5, \
|
2470
|
+
|
2471
|
+
MA_days=[5,20], \
|
2472
|
+
MACD_fastperiod=12,MACD_slowperiod=26,MACD_signalperiod=9, \
|
2473
|
+
|
2474
|
+
KDJ_fastk_period=9,KDJ_slowk_period=5,KDJ_slowk_matype=1, \
|
2475
|
+
KDJ_slowd_period=5,KDJ_slowd_matype=1, \
|
2476
|
+
|
2477
|
+
VOL_fastperiod=5,VOL_slowperiod=10, \
|
2478
|
+
PSY_days=12, \
|
2479
|
+
ARBR_days=26, \
|
2480
|
+
CR_day=16,CR_madays=[5,20], \
|
2481
|
+
EMV_day=14,EMV_madays=9, \
|
2482
|
+
|
2483
|
+
BULL_days=20,BULL_nbdevup=2,BULL_nbdevdn=2,BULL_matype=0, \
|
2484
|
+
|
2485
|
+
DMA_fastperiod=10,DMA_slowperiod=50,DMA_madays=10, \
|
2486
|
+
|
2487
|
+
TRIX_day=12,TRIX_madays=20, \
|
2488
|
+
BIAS_days=[6,24], \
|
2489
|
+
CCI_days=14, \
|
2490
|
+
WR_days=[10,6], \
|
2491
|
+
ROC_day=12,ROC_madays=6, \
|
2492
|
+
DMI_DIdays=14,DMI_ADXdays=6, \
|
2493
|
+
|
2494
|
+
#数据提前量
|
2495
|
+
ahead_days=30*4, \
|
2496
|
+
|
2497
|
+
#绘图参数
|
2498
|
+
resample_freq='6H',smooth=True,linewidth=1.5, \
|
2499
|
+
date_range=False,date_freq=False,annotate=False, \
|
2500
|
+
|
2501
|
+
graph=['ALL'],printout=False, \
|
2502
|
+
loc1='best',loc2='best', \
|
2503
|
+
|
2504
|
+
facecolor=['whitesmoke','papayawhip'], \
|
2505
|
+
#price_line_style=(0,(1,1)), \
|
2506
|
+
price_line_style='dotted', \
|
2507
|
+
price_line_color=['red','green'], \
|
2508
|
+
price_line_width=5,price_line_marker='o', \
|
2509
|
+
marker_sizes=[30,120,250], \
|
2510
|
+
):
|
2488
2511
|
"""
|
2489
2512
|
功能:计算和绘制证券技术分析指标的简易图,仅供进一步探索使用,仅用于单个证券(股债基)
|
2490
2513
|
|
@@ -2502,7 +2525,7 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2502
2525
|
return None
|
2503
2526
|
|
2504
2527
|
#检查indicator
|
2505
|
-
if indicator not in ['Open','Close','High','Low']:
|
2528
|
+
if indicator not in ['Open','Close','High','Low','Adj Close']:
|
2506
2529
|
print(" #Warning(security_technical2): not a valid price type for",indicator)
|
2507
2530
|
return None
|
2508
2531
|
|
@@ -2537,6 +2560,21 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2537
2560
|
print(" #Warning(security_technical2): no prices found for",ticker,'as type',ticker_type)
|
2538
2561
|
return None
|
2539
2562
|
|
2563
|
+
#当日涨跌
|
2564
|
+
price['up_down']=price['Close']-price['Open']
|
2565
|
+
price['up_down_abs']=abs(price['up_down'])
|
2566
|
+
|
2567
|
+
#分位数
|
2568
|
+
import numpy as np
|
2569
|
+
"""
|
2570
|
+
max(price['up_down_abs'])
|
2571
|
+
min(price['up_down_abs'])
|
2572
|
+
"""
|
2573
|
+
q70=np.percentile(price['up_down_abs'],70)
|
2574
|
+
q30=np.percentile(price['up_down_abs'],30)
|
2575
|
+
|
2576
|
+
small_size=marker_sizes[0]; mid_size=marker_sizes[1]; big_size=marker_sizes[2]
|
2577
|
+
price['marker_size']=price['up_down_abs'].apply(lambda x: big_size if x>=q70 else mid_size if x>=q30 else small_size)
|
2540
2578
|
|
2541
2579
|
#计算技术指标
|
2542
2580
|
df=calc_technical(price,fromdate,todate, \
|
@@ -2617,7 +2655,8 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2617
2655
|
'W%R':[1,''],
|
2618
2656
|
'ROC':[1,''],
|
2619
2657
|
'DMI':[1,''],
|
2620
|
-
'DMA':[1,''],
|
2658
|
+
'DMA':[1,''],
|
2659
|
+
'Volume':[1/1000000,'百万']}
|
2621
2660
|
|
2622
2661
|
mag_times=magnitude_list[technical1][0]
|
2623
2662
|
mag_label=magnitude_list[technical1][1]
|
@@ -2649,18 +2688,55 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2649
2688
|
for c in tech_line_collist:
|
2650
2689
|
df[c]=df[c] * mag_times
|
2651
2690
|
|
2691
|
+
df['Volume']=df['Volume'] * magnitude_list['Volume'][0]
|
2692
|
+
|
2652
2693
|
#字段排序
|
2653
2694
|
tech_line_collist.sort()
|
2654
|
-
df1=df[tech_line_collist+[indicator]]
|
2695
|
+
df1=df[tech_line_collist+[indicator,'Volume','up_down','marker_size']]
|
2655
2696
|
|
2656
2697
|
#绘图----------------------------------------------------------------------
|
2657
2698
|
import matplotlib.pyplot as plt
|
2658
|
-
|
2699
|
+
import matplotlib.dates as mdates
|
2700
|
+
#import matplotlib.gridspec as gridspec
|
2701
|
+
"""
|
2659
2702
|
fig = plt.figure()
|
2660
2703
|
ax = fig.add_subplot(111)
|
2704
|
+
"""
|
2705
|
+
"""
|
2706
|
+
#图ax在上方,ax3在下方
|
2707
|
+
fig, (ax, ax3) = plt.subplots(2, sharex=True,figsize=(12,9))
|
2708
|
+
|
2661
2709
|
#plt.gca().set_facecolor('whitesmoke')
|
2662
2710
|
fig.gca().set_facecolor(facecolor) #放在这里生效,放尾部不生效
|
2711
|
+
"""
|
2712
|
+
# 创建两行的布局,上半部分高度为4,下半部分高度为1
|
2713
|
+
fig = plt.figure(figsize=(14,9))
|
2714
|
+
#fig.gca().set_facecolor(facecolor)
|
2715
|
+
|
2716
|
+
if isinstance(facecolor,str):
|
2717
|
+
facecolor1=facecolor2=facecolor
|
2718
|
+
elif isinstance(facecolor,list):
|
2719
|
+
if len(facecolor) >= 2:
|
2720
|
+
facecolor1=facecolor[0]
|
2721
|
+
facecolor2=facecolor[1]
|
2722
|
+
elif len(facecolor) == 1:
|
2723
|
+
facecolor1=facecolor2=facecolor[0]
|
2724
|
+
else:
|
2725
|
+
facecolor1='whitesmoke'; facecolor2='papayawhip'
|
2663
2726
|
|
2727
|
+
gs = fig.add_gridspec(2, 1, height_ratios=[4, 1], hspace=0.05)
|
2728
|
+
ax = fig.add_subplot(gs[0])
|
2729
|
+
try:
|
2730
|
+
ax.set_facecolor(facecolor1)
|
2731
|
+
except:
|
2732
|
+
ax.set_facecolor('whitesmoke')
|
2733
|
+
|
2734
|
+
ax3 = fig.add_subplot(gs[1], sharex=ax)
|
2735
|
+
try:
|
2736
|
+
ax3.set_facecolor(facecolor2)
|
2737
|
+
except:
|
2738
|
+
ax3.set_facecolor('papayawhip')
|
2739
|
+
|
2664
2740
|
"""
|
2665
2741
|
line0=False; line30=False; line50=False; line80=False
|
2666
2742
|
for l in tech_line_collist:
|
@@ -2689,7 +2765,13 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2689
2765
|
attention_draws=[False] * len(attention_values)
|
2690
2766
|
|
2691
2767
|
for l in tech_line_collist:
|
2692
|
-
|
2768
|
+
labeltxt=l.upper()
|
2769
|
+
if labeltxt =='DEA':
|
2770
|
+
labeltxt='慢线(DEA)'
|
2771
|
+
if labeltxt =='DIF':
|
2772
|
+
labeltxt='快线(DIF)'
|
2773
|
+
|
2774
|
+
ax.plot(df1.index,df1[l],label=labeltxt)
|
2693
2775
|
|
2694
2776
|
#判断是否绘制关注线
|
2695
2777
|
lmax=df1[l].max(); lmin=df1[l].min()
|
@@ -2703,7 +2785,7 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2703
2785
|
|
2704
2786
|
#如果需要绘制关注线,且尚未绘制过,则绘制
|
2705
2787
|
if line_al and not attention_draws[pos]:
|
2706
|
-
|
2788
|
+
ax.axhline(y=attention_values[pos],ls=":",c=color_list[pos],linewidth=2)
|
2707
2789
|
|
2708
2790
|
attention_draws[pos]=True
|
2709
2791
|
|
@@ -2712,17 +2794,104 @@ def security_technical2(ticker,start='default',end='default', \
|
|
2712
2794
|
ylabeltxt1=ylabeltxt1+'('+mag_label+')'
|
2713
2795
|
ax.set_ylabel(ylabeltxt1,fontsize=ylabel_txt_size)
|
2714
2796
|
ax.legend(loc=loc1,fontsize=legend_txt_size)
|
2797
|
+
|
2798
|
+
interval=int(len(df1)/10)+1
|
2799
|
+
ax.xaxis.set_major_locator(mdates.DayLocator(interval=interval)) # 隔interval天一个标记
|
2800
|
+
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
|
2801
|
+
#ax.autoscale_view()
|
2802
|
+
|
2803
|
+
#区分涨跌颜色:红涨绿跌
|
2804
|
+
df1up=df1[df1['up_down'] >= 0]
|
2805
|
+
df1down=df1[df1['up_down'] < 0]
|
2806
|
+
|
2807
|
+
#绘制收盘价
|
2808
|
+
if isinstance(price_line_color,str):
|
2809
|
+
price_line_color1=price_line_color2=price_line_color
|
2810
|
+
elif isinstance(price_line_color,list):
|
2811
|
+
if len(price_line_color) >= 2:
|
2812
|
+
price_line_color1=price_line_color[0]
|
2813
|
+
price_line_color2=price_line_color[1]
|
2814
|
+
elif len(price_line_color) == 1:
|
2815
|
+
price_line_color1=price_line_color2=price_line_color[0]
|
2816
|
+
else:
|
2817
|
+
price_line_color1='red'; price_line_color2='green'
|
2715
2818
|
|
2819
|
+
import numpy as np
|
2820
|
+
df1['segment'] = (np.sign(df1['up_down'].shift(1)) != np.sign(df1['up_down'])).cumsum()
|
2821
|
+
seg_list=list(set(list(df1['segment'])))
|
2822
|
+
|
2716
2823
|
ax2 = ax.twinx()
|
2717
|
-
ylabeltxt2=
|
2824
|
+
ylabeltxt2=ectranslate(indicator)
|
2718
2825
|
ax2.set_ylabel(ylabeltxt2,fontsize=ylabel_txt_size)
|
2719
|
-
|
2826
|
+
|
2827
|
+
#细灰线先画出轮廓
|
2828
|
+
ax2.plot(df1.index,df1[indicator],label='', \
|
2829
|
+
linestyle=price_line_style,color='grey',lw=2)
|
2830
|
+
|
2831
|
+
#不同颜色绘制涨跌价格线
|
2832
|
+
first_time=True; second_time=False
|
2833
|
+
for seg in seg_list:
|
2834
|
+
df1seg=df1[df1['segment']==seg]
|
2835
|
+
if df1seg['up_down'].values[0] >=0:
|
2836
|
+
seg_color=price_line_color1
|
2837
|
+
#labeltxt=ylabeltxt2+'(当日↑)'
|
2838
|
+
#labeltxt=ylabeltxt2+'(当日≥开盘价)'
|
2839
|
+
labeltxt=ylabeltxt2+'(当日阳线)'
|
2840
|
+
else:
|
2841
|
+
seg_color=price_line_color2
|
2842
|
+
#labeltxt=ylabeltxt2+'(当日↓)'
|
2843
|
+
#labeltxt=ylabeltxt2+'(当日<开盘价)'
|
2844
|
+
labeltxt=ylabeltxt2+'(当日阴线)'
|
2845
|
+
|
2846
|
+
if first_time:
|
2847
|
+
first_time=False; second_time=True
|
2848
|
+
elif second_time:
|
2849
|
+
second_time=False
|
2850
|
+
else:
|
2851
|
+
labeltxt=''
|
2852
|
+
"""
|
2853
|
+
ax2.plot(df1seg.index,df1seg[indicator],label=labeltxt, \
|
2854
|
+
linestyle=':',color=seg_color,lw=price_line_width,marker=price_line_marker)
|
2855
|
+
"""
|
2856
|
+
ax2.scatter(df1seg.index,df1seg[indicator], \
|
2857
|
+
s=df1seg['marker_size'], \
|
2858
|
+
label=labeltxt, \
|
2859
|
+
linestyle=':',color=seg_color,lw=price_line_width,marker=price_line_marker)
|
2860
|
+
|
2861
|
+
|
2862
|
+
"""
|
2863
|
+
ax2.plot(df1.index,df1[indicator],label=ylabeltxt2, \
|
2864
|
+
linestyle=price_line_style,color=price_line_color1,lw=price_line_width,marker=price_line_marker)
|
2865
|
+
ax2.scatter(df1down.index,df1down[indicator],label=ylabeltxt2, \
|
2866
|
+
linestyle=price_line_style,color=price_line_color2,lw=price_line_width,marker=price_line_marker)
|
2867
|
+
"""
|
2868
|
+
|
2720
2869
|
ax2.legend(loc=loc2,fontsize=legend_txt_size)
|
2721
2870
|
|
2871
|
+
#绘制交易量柱状图
|
2872
|
+
ax3.bar(df1up.index,df1up['Volume'],color=price_line_color1)
|
2873
|
+
ax3.bar(df1down.index,df1down['Volume'],color=price_line_color2)
|
2874
|
+
|
2875
|
+
ax3.set_ylabel("交易量(百万)",fontsize=ylabel_txt_size -4)
|
2876
|
+
|
2877
|
+
footnote1="\n注:快线自下而上穿过慢线为金叉,自上而下穿过慢线为死叉。"
|
2878
|
+
footnote2="价格曲线上端点的大中小对应当日涨跌幅度三分位数的高中低部分。\n"
|
2879
|
+
footnote3="横轴日期上的空白处为非交易日(周末或公共节假日)。"
|
2880
|
+
|
2881
|
+
import datetime; todaydt = str(datetime.date.today())
|
2882
|
+
footnote4="数据来源:新浪/雅虎/stooq/东方财富等,"+todaydt+"统计"
|
2883
|
+
|
2884
|
+
footnote=footnote1+footnote2+footnote3+footnote4
|
2885
|
+
ax3.set_xlabel(footnote,fontsize=ylabel_txt_size -2)
|
2886
|
+
|
2887
|
+
#fig.text(0.5, 0.04, 'x', ha='center')
|
2888
|
+
plt.subplots_adjust(hspace=0.2)
|
2889
|
+
|
2722
2890
|
titletxt=ticker_name(ticker)+': '+tech_list[technical1]+technical1
|
2723
2891
|
plt.title(titletxt,fontweight='bold',fontsize=title_txt_size)
|
2724
2892
|
|
2725
2893
|
plt.gcf().autofmt_xdate()
|
2894
|
+
#fig.autofmt_xdate()
|
2726
2895
|
|
2727
2896
|
plt.show(); plt.close()
|
2728
2897
|
|
@@ -14,7 +14,7 @@ siat/bond_china.py,sha256=eYv-nMoWSS5fZ4VxnuJ29QFY9GUS6meGiIc0Xjm1fQI,3038
|
|
14
14
|
siat/bond_test.py,sha256=yUOFw7ddGU-kb1rJdnsjkJWziDNgUR7OLDA7F7Ub91A,5246
|
15
15
|
siat/bond_zh_sina.py,sha256=26BohGcS120utwqg9dJvdGm5OkuNpNu5bco80uOuQpU,4423
|
16
16
|
siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
|
17
|
-
siat/capm_beta2.py,sha256=
|
17
|
+
siat/capm_beta2.py,sha256=1URX23ugY9uyeut3gdLn3rA3CHZ4Y455gt4IoqY89D8,26892
|
18
18
|
siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
|
19
19
|
siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
|
20
20
|
siat/common.py,sha256=OtdgMsJUTGPuxEvZ6dm0V5V9Vfa2W3fEn22m1vRNfS8,141419
|
@@ -52,7 +52,7 @@ siat/financials_test.py,sha256=HJ3CPo_Xckz2wXi3AEP6ZNWCF1Duc1pLi0Y10USiImc,23829
|
|
52
52
|
siat/fred_test.py,sha256=KF50ssSbsfpa_kT6iuomD0vG4eXztAcOasZxg1OGX5w,1201
|
53
53
|
siat/fund.py,sha256=wMDORsCBV8ZXfgwbtq-0bu3qqWY66dHnbqgllW0gWCo,24637
|
54
54
|
siat/fund_china.pickle,sha256=wJIIvEjWuZylcaQ3c5kvIdKedpFF5T53cJlG-1LVoms,2410657
|
55
|
-
siat/fund_china.py,sha256=
|
55
|
+
siat/fund_china.py,sha256=rPGnYSPkbZUqtBoJnxLZLIQ8MjD8vD3TovCMfletBP4,111839
|
56
56
|
siat/fund_china_test.py,sha256=-Bh6m0J0GPpIbYXx-H2vpzJoNFI6pE2C2jVPa8DazgE,6649
|
57
57
|
siat/fund_test.py,sha256=V4ADb8Gsp8gyeFTwcgRsJBpnUih_O-Q2V1ILc5oKjK8,1116
|
58
58
|
siat/future_china.py,sha256=F-HsIf2Op8Z22RzTjet1g8COzldgnMjFNSXsAkeGyWo,17595
|
@@ -86,7 +86,7 @@ siat/option_sina_api_test.py,sha256=dn-k_wrQnAaNKHoROvWJEc7lqlU0bwiV2Aa4usWAFGM,
|
|
86
86
|
siat/proxy_test.py,sha256=erQJrmGs2X46z8Gb1h-7GYQ0rTUcaR8dxHExWoBz2eM,2610
|
87
87
|
siat/quandl_test.py,sha256=EcPoXnLuqzPl5dKyVEZi3j3PJZFpsnU_iNPhLWC9p-A,1552
|
88
88
|
siat/risk_adjusted_return.py,sha256=L5FoeOFzvItT03gNBTCaIo32hUvncOJkbchtHOveSBM,54929
|
89
|
-
siat/risk_adjusted_return2.py,sha256=
|
89
|
+
siat/risk_adjusted_return2.py,sha256=mI2ynVICzSIHV4_-jZyZ4vbwI1-zen7Byug31lzViS4,65957
|
90
90
|
siat/risk_adjusted_return_test.py,sha256=m_VHL5AtT74cJv5i7taTeTfnkX48y0AFJk5phawyYWg,3416
|
91
91
|
siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
|
92
92
|
siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
|
@@ -95,14 +95,15 @@ siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4
|
|
95
95
|
siat/sector_china.py,sha256=nP6kfYsnaQWZj8dK-zklwSDW8FDS-obZWp_zL0ec2Ig,118603
|
96
96
|
siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
|
97
97
|
siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
|
98
|
-
siat/security_price2.py,sha256=
|
99
|
-
siat/security_prices.py,sha256=
|
98
|
+
siat/security_price2.py,sha256=hx0hDixIaTPBnn7Y3BxdYym1v3lkPaWmcTRnJ-JyHJA,25828
|
99
|
+
siat/security_prices.py,sha256=RbGCw6Q3-eCX2dy_CjgbjuXwUtJIOPLuNxNstG0VEzM,104397
|
100
100
|
siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
|
101
101
|
siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
|
102
|
-
siat/security_trend2.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
|
102
|
+
siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
|
103
|
+
siat/security_trend2.py,sha256=kCFi8NW4uOkSnl4MkWZB5_rfvDqUiQlVH8tGsvUluEY,25219
|
103
104
|
siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
|
104
105
|
siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
|
105
|
-
siat/stock.py,sha256=
|
106
|
+
siat/stock.py,sha256=vNHqpYbwPnQM_wnvZ2XwW8oyMOX10h_EAC1hLyOI4Vo,142341
|
106
107
|
siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
|
107
108
|
siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
|
108
109
|
siat/stock_china.py,sha256=zyUyghIrkkkYWlHRRP7Hoblxzfp-jrck60pTJpwMahg,91553
|
@@ -113,7 +114,8 @@ siat/stock_list_china_test.py,sha256=gv14UwMMvkZqtb6G7DCTSuehIwVHuVwu7w60p6gyHoo
|
|
113
114
|
siat/stock_prices_kneighbors.py,sha256=WfZvo5EyeBsm-T37zDj7Sl9dPSRq5Bx4JxIJ9IUum6s,36738
|
114
115
|
siat/stock_prices_linear.py,sha256=-OUKRr27L2aStQgJSlJOrJ4gay_G7P-m-7t7cU2Yoqk,13991
|
115
116
|
siat/stock_profile.py,sha256=B3eIwzEmiCqiCaxIlhfdEPsQBoW1PFOe1hkiY3mVF6Y,26038
|
116
|
-
siat/stock_technical.py,sha256=A4x18mZgYSA8SSiDz4u_O3gd5oVRgbI6JIiBfFY0tVw,116013
|
117
|
+
siat/stock_technical-20240620.py,sha256=A4x18mZgYSA8SSiDz4u_O3gd5oVRgbI6JIiBfFY0tVw,116013
|
118
|
+
siat/stock_technical.py,sha256=I7AeesRFKAK_8MZcqtV1ppvnqsTZfQYgxU3iTAUzMiQ,122806
|
117
119
|
siat/stock_test.py,sha256=E9YJAvOw1VEGJSDI4IZuEjl0tGoisOIlN-g9UqA_IZE,19475
|
118
120
|
siat/stooq.py,sha256=dOc_S5HLrYg48YAKTCs1eX8UTJOOkPM8qLL2KupqlLY,2470
|
119
121
|
siat/temp.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
@@ -134,7 +136,7 @@ siat/valuation.py,sha256=NKfeZMdDJOW42oLVHob6eSVBXUqlN1OCnnzwyGAst8c,48855
|
|
134
136
|
siat/valuation_china.py,sha256=EkZQaVkoBjM0c4MCNbaX-bMnlG0e3FXeaWczZDnkptU,67784
|
135
137
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
136
138
|
siat/var_model_validation.py,sha256=f-oDewg7bPzyNanz_Y_jLH68NowAA3gXFehW_weKGG0,14898
|
137
|
-
siat-3.
|
138
|
-
siat-3.
|
139
|
-
siat-3.
|
140
|
-
siat-3.
|
139
|
+
siat-3.2.2.dist-info/METADATA,sha256=kYXGiGAqJnm-hrtVardCgjNQ1A7SvjHoNTEudqWWV1Q,1447
|
140
|
+
siat-3.2.2.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
141
|
+
siat-3.2.2.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
142
|
+
siat-3.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|