from haohaninfo import MarketInfo # 取三大法人買賣超資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4004','All','20200601','20211231') # 商品代碼清單 ProdList = sorted(set([ i[1] for i in Data ])) # 逐檔股票篩選 for Prod in ProdList: # 該商品每日的資料 Data1 = [ i for i in Data if i[1] == Prod ] # 該商品欲回測日期的前三日資料 Data2 = Data1[-3:] # 欄位為正值代表買超,欄位分別為 外資、投信、自營商 Data3 = [ i for i in Data2 if float(i[5]) > 0 and float(i[11]) > 0 and float(i[15]) > 0 ] # 篩選出前三日三大法人皆買超的股票標的 if len(Data3) >= 3: print(Prod)
from haohaninfo import MarketInfo # 想要篩選的產業別 Target = '半導體' # 公司基本資訊 (資訊代碼,股票標的) Data = MarketInfo.GetMarketInfo('3001', 'All') # 逐檔股票判斷 for i in Data: Number = i[0] # 股票代碼 Industry = i[1] # 產業別 Name = i[2] # 公司名稱 # 該檔股票符合設定的產業別 if Target in Industry: print(Number, Name)
from haohaninfo import MarketInfo # 取集保股權分散資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4001','All','20201030','20201119') # 所有的股票代碼清單 ProdList = sorted(set([ i[1] for i in Data ])) # 逐檔股票判斷 for Prod in ProdList: Data1 = [ i for i in Data if i[1] == Prod ] # 取出該檔股票的資訊 Data2 = [ i for i in Data1 if i[2] == '1000001以上' ] # 取出持股超過 1,000,001 股以上的資訊 # 至少有兩週以上的資料才判斷,避免程式出現錯誤 if len(Data2) >= 2: ThisWeekPeople = int(Data2[-1][3]) # 這一週 持股超過 1,000,001 股以上 的人數 LastWeekPeople = int(Data2[-2][3]) # 上一週 持股超過 1,000,001 股以上 的人數 ThisWeekPercent = float(Data2[-1][5]) # 這一週 持股超過 1,000,001 股以上 的持股權重 LastWeekPercent = float(Data2[-2][5]) # 上一週 持股超過 1,000,001 股以上 的持股權重 # 人數增加 且 持股權重增加 3% 以上 if ThisWeekPeople > LastWeekPeople and ThisWeekPercent > LastWeekPercent + 3: print('股票代碼:',Prod,'級距15','這週人數:',ThisWeekPeople,'人','上週人數:',LastWeekPeople,'人','這週權重:',ThisWeekPercent,'%','上週權重:',LastWeekPercent,'%')
from haohaninfo import MarketInfo # 公司董監事持股資訊 (資訊代碼,股票標的) Data = MarketInfo.GetMarketInfo('3004', '2330') for i in Data: print(i)
from haohaninfo import MarketInfo # 取銀行匯率資訊 (資訊代碼,貨幣代碼,開始日期,結束日期) Data = MarketInfo.GetMarketInfo('1002','13','20200101','20201231') for i in Data: print(i)
from haohaninfo import MarketInfo import matplotlib.pyplot as plt import datetime # 取國際大盤指數資訊 (資訊代碼,指數代碼,開始日期,結束日期) Data1 = MarketInfo.GetMarketInfo('1001','0','20200101','20201231') # NASDAQ 指數 Data2 = MarketInfo.GetMarketInfo('1001','5','20200101','20201231') # TWSE 指數 # 日期 (X軸) DateList1 = [ datetime.datetime.strptime(i[1],'%Y/%m/%d') for i in Data1 ] DateList2 = [ datetime.datetime.strptime(i[1],'%Y/%m/%d') for i in Data2 ] # 收盤價 (Y軸) CloseList1 = [ float(i[2]) for i in Data1 ] CloseList2 = [ float(i[2]) for i in Data2 ] # 資料開始及結束時間 SDate1 = Data1[0][1] EDate1 = Data1[-1][1] SDate2 = Data2[0][1] EDate2 = Data2[-1][1] # 繪製圖表 ax1 = plt.subplot(211) # 定義圖框 (圖1) plt.title(Data1[0][0] + ' ' + SDate1 + ' - ' + EDate1) # 圖表標題 (圖1) ax1.plot(DateList1,CloseList1,'k-') # 收盤價 (圖1) ax2 = plt.subplot(212) # 定義圖框 (圖2) plt.title('TWSE' + ' ' + SDate2 + ' - ' + EDate2) # 圖表標題 (圖2) ax2.plot(DateList2,CloseList2,'k-') # 收盤價 (圖2) plt.show() # 顯示圖表
from haohaninfo import MarketInfo # 公司基本資訊 (資訊代碼,股票標的) Data = MarketInfo.GetMarketInfo('3001', '2330')[0] for i in Data: print(i)
from haohaninfo import MarketInfo # 取融資融券資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4002', 'All', '20200622', '20200623') for i in Data: print(i)
from haohaninfo import MarketInfo # 公司全體持股資訊 (資訊代碼,股票標的) Data = MarketInfo.GetMarketInfo('3005','3008') for i in Data: print(i)
from haohaninfo import MarketInfo # 公司月營收資訊 (資訊代碼,股票標的) Data1 = MarketInfo.GetMarketInfo('3003', 'All') # 取公司配息資訊 (資訊代碼,股票標的) Data2 = MarketInfo.GetMarketInfo('3006', 'All') # 商品清單 ProdList = sorted(set([i[1] for i in Data2])) for Prod in ProdList: # 該商品資料 Data3 = [i for i in Data2 if i[1] == Prod] # 該商品近10年資料 Data4 = Data3[-10:] # 該商品近10年的現金股利 Data5 = [i[2] for i in Data4] # 若資料內有NA值則略過這檔股票 if 'NA' in Data5: continue # 將股利資訊從 字串型態 轉為 浮點位型態 Data6 = [float(i) for i in Data5] # 近10年發放現金股利的次數 Num = len([i for i in Data6 if float(i) > 0]) # 連續10年都有發放現金股利 if Num >= 10: # 每一年發放的現金股利都不低於前一年 Check = True for i in range(1, 10): if Data6[i] < Data6[i - 1]: Check = False break
from haohaninfo import MarketInfo # 取信用評等資訊 (資訊代碼,股票代碼) Data = MarketInfo.GetMarketInfo('2001', '2330') for i in Data: print(i)
from haohaninfo import MarketInfo # 取集保股權分散資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4001','2330','20201106','20201106') for i in Data: print(i)
from haohaninfo import MarketInfo # 取公司配息資訊 (資訊代碼,股票標的) Data = MarketInfo.GetMarketInfo('3006','1586') for i in Data: print(i)
from haohaninfo import MarketInfo import matplotlib.pyplot as plt import datetime # 取集保股權分散資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4001','2330','20200701','20201231') # 取出持股超過 1,000,001 股以上的資訊 Data1 = [ i for i in Data if i[2] == '1000001以上' ] # 至少要有三週以上的資料,圖片才不會太難看 if len(Data1) >= 3: # 取出想繪製的資料 Prod = Data1[0][1] # 商品代碼 Time = [ datetime.datetime.strptime(i[0],'%Y%m%d') for i in Data1 ] # 日期 People = [ int(i[3]) for i in Data1 ] # 級距15的人數 Percent = [ float(i[5]) for i in Data1 ] # 級距15的權重 # 開始繪圖 ax1 = plt.subplot(211) # 定義圖框(上圖) ax1.plot(Time,People) # 繪製線圖(上圖) plt.title(Prod + ' Range15 People') # 設定標題(上圖) ax2 = plt.subplot(212) # 定義圖框(下圖) ax2.plot(Time,Percent) # 繪製線圖(下圖) plt.title(Prod + ' Range15 Percent') # 設定標題(下圖) plt.show() # 顯示圖表 else: print('該檔股票資訊不足三週')
from haohaninfo import MarketInfo # 取融資融券資訊 (資訊代碼,股票標的,起始日期,結束日期) Data = MarketInfo.GetMarketInfo('4002','All','20200615','20201231') # 商品代碼清單 ProdList = sorted(set([ i[1] for i in Data ])) # 逐檔股票篩選 for Prod in ProdList: # 該商品每日的資料 Data1 = [ i for i in Data if i[1] == Prod ] # 該商品欲回測日期的前三日資料 Data2 = Data1[-3:] # 融資變動額 & 融券變動額 Data3 = [ [ float(i[7])-float(i[6]) , float(i[13])-float(i[12]) ,i[0] ] for i in Data2 ] # 融資餘額減少 且 融券餘額增加 Data4 = [ i for i in Data3 if i[0] < 0 and i[1] > 0 ] # 篩選出前三日 融資餘額皆減少 且 融券餘額皆增加 的股票標的 if len(Data4) >= 3: print(Prod)