Ejemplo n.º 1
0
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)
    
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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,'%')
        
Ejemplo n.º 4
0
from haohaninfo import MarketInfo

# 公司董監事持股資訊 (資訊代碼,股票標的)
Data = MarketInfo.GetMarketInfo('3004', '2330')

for i in Data:
    print(i)
Ejemplo n.º 5
0
from haohaninfo import MarketInfo

# 取銀行匯率資訊 (資訊代碼,貨幣代碼,開始日期,結束日期)
Data = MarketInfo.GetMarketInfo('1002','13','20200101','20201231')

for i in Data:
    print(i)
    
Ejemplo n.º 6
0
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()                                               # 顯示圖表
Ejemplo n.º 7
0
from haohaninfo import MarketInfo

# 公司基本資訊 (資訊代碼,股票標的)
Data = MarketInfo.GetMarketInfo('3001', '2330')[0]

for i in Data:
    print(i)
Ejemplo n.º 8
0
from haohaninfo import MarketInfo

# 取融資融券資訊 (資訊代碼,股票標的,起始日期,結束日期)
Data = MarketInfo.GetMarketInfo('4002', 'All', '20200622', '20200623')

for i in Data:
    print(i)
Ejemplo n.º 9
0
from haohaninfo import MarketInfo

# 公司全體持股資訊 (資訊代碼,股票標的)
Data = MarketInfo.GetMarketInfo('3005','3008')

for i in Data:
    print(i)
    
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
from haohaninfo import MarketInfo

# 取信用評等資訊 (資訊代碼,股票代碼)
Data = MarketInfo.GetMarketInfo('2001', '2330')

for i in Data:
    print(i)
Ejemplo n.º 12
0
from haohaninfo import MarketInfo

# 取集保股權分散資訊 (資訊代碼,股票標的,起始日期,結束日期)
Data = MarketInfo.GetMarketInfo('4001','2330','20201106','20201106')

for i in Data:
    print(i)
    
Ejemplo n.º 13
0
from haohaninfo import MarketInfo

# 取公司配息資訊 (資訊代碼,股票標的)
Data = MarketInfo.GetMarketInfo('3006','1586')

for i in Data:
    print(i)
    
Ejemplo n.º 14
0
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('該檔股票資訊不足三週')
Ejemplo n.º 15
0
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)