Klang
stock K-line language
Klang 是Kline語言,即股票語言,支持方便快捷的股票編程,可以輕松搞定股票公式
是股票編程和量化交易的必備工具
Klang 最大的亮點(diǎn)是支持中文編程,可以看最后的完整例子
在線試用
- 內(nèi)置中文編程公式 你可以在線體驗(yàn) Klang 編程, 無需安裝,網(wǎng)站內(nèi)置了多個(gè)選股公式 Online
Klang 是股票K線形態(tài)語言,基于 python3
- 語言解釋器采用 python的 ply庫绘雁,他采用了flex,yacc語法的實(shí)現(xiàn)
- 股票數(shù)據(jù)來源 baostock,zhanluejia
- 支持 同花順援所、通達(dá)信庐舟、文華財(cái)經(jīng)等的公式, 感謝funcat 移植到了 Python 版本
- 支持結(jié)構(gòu)形態(tài) 感謝talib
- Klang 語言是基于Python語法拓展了部分自己的語法,并且編寫了快捷的股票公式
- 支持網(wǎng)頁直接使用,交互方便
- 支持中文編程,一看就懂
install
- 安裝過程中遇到talib錯(cuò)誤住拭,需要搜索talib源代碼解決
git clone https://github.com/asmcos/Klang
cd Klang
pip3 install -r requirements.txt
python3 setup.py install
應(yīng)用示例 python 版本
- 第一次會(huì)下載數(shù)據(jù),預(yù)計(jì)需要幾分鐘
from Klang import *
C/C[1]
以上代碼就快捷的計(jì)算了今日收盤價(jià)/昨日收盤價(jià) 默認(rèn)計(jì)算第一個(gè)股票 sh.600000 今日收盤價(jià)挪略,更新時(shí)間為下午5點(diǎn)左右
設(shè)置當(dāng)前股票 'sh.601012','sz.000100'
Kl.code('sh.601012')
你也可以設(shè)置你想要的股票code
設(shè)置時(shí)間,周期默認(rèn)是 2021-01-01開始
- 默認(rèn)數(shù)據(jù)是日K
Kl.date(start='2021-04-02',end='2021-05-01')
顯示收盤價(jià)
print(C.data) #顯示已經(jīng)下載周期的所有收盤價(jià)
print(O.data) #顯示所有周日的開盤價(jià)
收盤價(jià)漲幅
print((C-C[1])/C[1]) #當(dāng)前周期的收盤 比上一個(gè)周一的收盤價(jià)漲跌比率
REF 和通達(dá)信兼容滔岳,獲取之前周期的價(jià)格
REF(C,5) # 5周期前的收盤價(jià)杠娱,5日前收盤價(jià)
同時(shí)實(shí)現(xiàn)了MA,SMA,HHV,LLV,ABS等
Klang 語言(K浪)
- testparse.py 代碼片段
from Klang.lang import kparser,setPY,Kexec
# Klang和python的橋梁,支持函數(shù),變量共享
# 具體使用方法 參見 testparse.py
def getpyglobals(name):
return globals().get(name)
def setpyglobals(name,val):
globals()[name]=val
setPY(getpyglobals,setpyglobals)
執(zhí)行 K語言語句
- 賦值
pi = 3.14 #python
Kexec("ABCD=pi+1;") #調(diào)用K語言執(zhí)行澈蟆,執(zhí)行后K變量共享給了python
調(diào)用 Kexec執(zhí)行Klang語法墨辛,Kexec參數(shù)里穿的字符串語法遵守Klang語法規(guī)則
執(zhí)行一段代碼
- 詳細(xì)例子參見 testparse.py
- 這里我們定制了一段kloop...endp卓研,表示循環(huán)計(jì)算所有的A股
testblock=\
"""
kloop
ret = CROSS(C,MA(C,60))
ma5 := MA(C,5)
ma10 = MA(C,10)
ma20 = MA(C,20)
ma60 = MA(C,60)
ret1 = (C - C[1])/C[1]
ret2 = (C - C[1])/C[1] > 0.05
info = getstockinfo(0)
if ma60[-1] < ma20[-1] and ma20[-1] < ma10[-1] and ma10[-1] < ma5[-1] and ret2 :
print(info,ret1*100)
endp
print("計(jì)算完成")
"""
Kexec(testblock)
支持功能列表
- 逐步兼容通達(dá)信公式趴俘,C,MA,CROSS
- 兼容 := 賦值語法
- 支持兼容 python函數(shù),getstockinfo等 getstockinfo是在python里面自定義的函數(shù)
- kloop,endp 是自定義語法,會(huì)遍歷整個(gè)A股的股票奏赘,
examples
- 使用了網(wǎng)頁+websocket server模式
- server里調(diào)用 Kexec執(zhí)行 所有的輸入
- 默認(rèn)的輸入會(huì)掃描所有的A股4000多只股票
- 計(jì)算結(jié)果回傳到網(wǎng)頁界面顯示
python3 wsserver.py
瀏覽 online.html 即可運(yùn)算公式了
支持中文編程
漲停 = 9.9
今日收盤 = C
昨日收盤 = C[1]
日期范圍 = date
顯示 = DISPLAY
###############################
# 參數(shù)漲停,表示漲幅的幅度
# 以上為參數(shù)的值可以修改
# 日期范圍('2021-01-01','2021-06-25')
###############################
實(shí)際漲幅 = (今日收盤-昨日收盤) / 昨日收盤
實(shí)際漲幅 = 實(shí)際漲幅 * 100
if 實(shí)際漲幅 > 漲停:
顯示(實(shí)際漲幅)