自己做量化交易軟件(20)通達信公式選股程序的實現

自己做量化交易軟件(20)通達信公式選股程序的實現
1.用小白2很好實現。首先獲取板塊中股票,存放在列表中。例如獲取"上證50"

import HP_tdx as htdx
from HP_formula import *

global CLOSE,LOW,HIGH,OPEN,VOL
global C,L,H,O,V

hq=htdx.TdxInit(ip='183.60.224.178',port=7709)  ##初始化通達信
codes=htdx.getblock2('上證50') #返回板塊中的股票

2.下來用小白仿通達信公式模式進行指標計算,存放到B和S列表中。
如果是買點,B列表判斷最後一個數據是否爲1。如果爲1,就保存股票代碼到選股池中,這個就是選股算法。
因爲股票行情數據太多,計算比較慢,不要獲取全部數據,如果你用MA5上穿MA20,因爲使用了最長參數20, 所以你要至少獲取40個週期的數據,才能準確。
如果用macd,最長週期參數26,你至少要獲取52個週期數據行情。其他以此類推。即保證了指標計算的準確,又提高了計算速度。
我們把這個選股做成函數function(cd),參數cd表示股票代碼。
選股策略’5日均線上穿20日均線’,下面給出實現函數。

#均線選股函數:5日均線上穿20日均線
def function(cd):
    global CLOSE,LOW,HIGH,OPEN,VOL
    global C,L,H,O,V

    df3=htdx.get_security_bars(nCategory=4,nMarket = 0,code=cd,\
                    nStart=0, nCount=40) #獲取指定範圍的證券K線
    
    ##數據規格化 
    df3.dropna(inplace=True)
    #小白數據規格化
    mydf=df3.copy()
    CLOSE=mydf['close']
    LOW=mydf['low']
    HIGH=mydf['high']
    OPEN=mydf['open']
    VOL=mydf['volume']
    C=mydf['close']
    L=mydf['low']
    H=mydf['high']
    O=mydf['open']
    V=mydf['volume']
    #仿通達信,大智慧公式計算和選股
    MA5=MA(CLOSE,5)
    MA20=MA(CLOSE,20)
    B=CROSS(MA5,MA20)   #5日均線上穿20日均線
    B2=list(B) #把1維數組轉換爲列表數據
    return B2[len(B2)-1]  #獲取列表中最後一個值

3.然後循環獲取股票池列表中的股票行情,並進行計算。

#下面開始進行板塊或股票池選股
myblock=[]  #選股池
for code in codes:
     buy=function(code)  #計算股票選股函數
     if buy==1:
         myblock.append(code)

4.輸出結果

print('輸出選出的股票池')
print(myblock)

5.下面是20200411選出結果:

小白量化選股: 5日均線上傳20日均線
輸出股票池或板塊中股票
['600000', '600009', '600016', '600028', '600030', '600031', '600036', '600048', '600050', '600104', '600196', '600276', '600309', '600340', '600519', '600547', '600585', '600690', '600703', '600837', '600887', '601012', '601066', '601088', '601111', '601138', '601166', '601186', '601211', '601236', '601288', '601318', '601319', '601328', '601336', '601390', '601398', '601601', '601628', '601668', '601688', '601766', '601818', '601857', '601888', '601939', '601988', '601989', '603259', '603993']
輸出選出的股票池
['600000', '600690']

下面給出全部代碼.

#小白量化選股 : 5日均線上穿20日均線

#購買<零基礎搭建量化投資系統>正版書,送小白量化軟件源代碼。
# https://item.jd.com/61567375505.html
#獨狼荷蒲qq:2775205
#通通python量化羣:524949939
#電話微信:18578755056
#微信公衆號:獨狼股票分析
import HP_tdx as htdx
from HP_formula import *

global CLOSE,LOW,HIGH,OPEN,VOL
global C,L,H,O,V

hq=htdx.TdxInit(ip='183.60.224.178',port=7709)  ##初始化通達信
codes=htdx.getblock2('上證50') #返回板塊中的股票
print('小白量化選股: 5日均線上傳20日均線')
print('輸出股票池或板塊中股票')
print(codes)

#均線選股函數
def function(cd):
    global CLOSE,LOW,HIGH,OPEN,VOL
    global C,L,H,O,V

    df3=htdx.get_security_bars(nCategory=4,nMarket = 0,code=cd,\
                    nStart=0, nCount=40) #獲取指定範圍的證券K線
    
    ##數據規格化 
    df3.dropna(inplace=True)
    #小白數據規格化
    mydf=df3.copy()
    CLOSE=mydf['close']
    LOW=mydf['low']
    HIGH=mydf['high']
    OPEN=mydf['open']
    VOL=mydf['volume']
    C=mydf['close']
    L=mydf['low']
    H=mydf['high']
    O=mydf['open']
    V=mydf['volume']
    #仿通達信,大智慧公式計算和選股
    MA5=MA(CLOSE,5)
    MA20=MA(CLOSE,20)
    B=CROSS(MA5,MA20)   #5日均線上穿20日均線
    B2=list(B)
    return B2[len(B2)-1]
    

#下面開始進行板塊或股票池選股
myblock=[]  #選股池
for code in codes:
     buy=function(code)  #計算股票選股函數
     if buy==1:
         myblock.append(code)

print('輸出選出的股票池')
print(myblock)

讀者可以根據上面的代碼,改爲自己的自編指標進行選股.
京東、淘寶、噹噹網等購買正版<零基礎搭建量化投資系統——以Python爲工具>書,加讀者羣,除了獲得小白量化源代碼外,贈送第2代小白量化源代碼和相關金融模塊源代碼。HP_tdx.py是第2代中實時行情模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章