零基礎搭建量化投資系統—以Python爲基礎:視頻課件及代碼(3)

零基礎搭建量化投資系統—以Python爲基礎:視頻課件及代碼(3)
自編股票指標公式及顯示
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

import  tkinter  as  tk   #導入Tkinter
import  tkinter.ttk  as  ttk   #導入Tkinter.ttk
import  tkinter.tix  as  tix   #導入Tkinter.tix
import  HP_tk  as  htk   #導入htk
from PIL import Image, ImageTk, ImageDraw, ImageFont
from matplotlib import ticker as mticker
import time
import  HP_view as hpv
import matplotlib.pyplot as plt
from HP_formula import *    #使用HP_formula公式基本函數庫
#建立主窗口
root=htk.MainWindow(title='自定義公式演示',x=100,y=200,w=800, h=600)
root.iconbitmap('ico/py.ico')   #設置應用程序圖標
root.SetCenter()                         #移動到屏幕中央
#把window劃分爲左右2個子容器,左爲v1,右爲v2
v1=tk.Frame(root,width = 200,bg='blue')
v1.pack(side=tk.LEFT,fill=tk.Y)
v2=tk.Frame(root,bg='yellow')
v2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=1)
#《零基礎搭建量化投資系統—以Python爲基礎》樹中示例 8-23
tree=ttk.Treeview(v1)
myid=tree.insert("",0,"指標",text="指標",values=("1"),open=True)
myidx1=tree.insert(myid,0,"技術指標",text="技術指標",values=("2"))
myidx2=tree.insert(myid,1,"交易系統",text="交易系統",values=("3"))
myidx3=tree.insert(myid,2,"條件選股",text="條件選股",values=("4"))
myidx4=tree.insert(myid,3,"五彩 K 線",text="五彩 K 線",values=("5"))
myidy=tree.insert("",1,"工具",text="工具",values=("6"),open=True)
myidy1=tree.insert(myidy,0,"系統設置",text="系統設置",values=("7"))
myidy1=tree.insert(myidy,0,"指標排序",text="指標排序",values=("8"))
tree.pack(side=tk.TOP,fill=tk.BOTH, expand=1)
tree.selection_set("指標")

ds='2018-01-01'  #行情開始日期
de=time.strftime('%Y-%m-%d',time.localtime(time.time()))  #行情結束日期
###---------------------------------------------------------------------------
#本部分四選一
#二. #小白離線行情,需要xbdata數據
import tushare as ts    #小白離線行情,需要xbdata數據
#讀取股票數據
df2a=ts.get_k_data('300202',ktype='D',start=ds,end=de,index=False,autype='qfq')

#六均線3指標圖,K線算一個指標
ax,ax2=hpv.axview3x2(v2,df2a,'300202聚龍股份  六均線K線演示',6)  

#在ax區繪製荷蒲操盤線HPCPX
def draw_HPCPX(ax1,mydf):
    CLOSE=mydf['close']
    LOW=mydf['low']
    HIGH=mydf['high']
    OPEN=mydf['open']
    VOL=mydf['volume']
    df=mydf.copy()

    def HPCPX():
        S0=(CLOSE+OPEN+LOW+HIGH)/4
        S1=EMA(SLOPE(S0,5),60)
        S2=EMA(S1,20)
        S3=IF(S1>=0,S1,DRAWNULL())
        S4=IF(S1>S2 ,S3,DRAWNULL())
        return S1,S2,S4
    #使用KDJ指標,返回K,D,J序列。
    x,y,z=HPCPX()
    
    df = df.join(pd.Series( x,name='CPX'))
    df = df.join(pd.Series( y,name='Y'))
    df = df.join(pd.Series( z,name='Z'))
    df['Y0']=0
    
    
    #開始繪圖
    ax1.plot(df.date.values,df.CPX.values, color= 'green', lw=2,label="荷蒲操盤線")
    ax1.plot(df.date.values, df.Z.values, color= 'red', lw=2)
    ax1.plot(df.date.values, df.Y0.values, color= 'yellow', lw=2)
    text = ax1.text(0.05, 0.05, '紅線持股!綠線持幣!', fontdict={'size': 20},color='yellow')
    plt.ylabel('HPCPW', color='white')
    plt.legend() # 顯示圖中右上角的提示信息。
    plt.gca().yaxis.set_major_locator(mticker.MaxNLocator(prune='upper'))
    ax1.xaxis.set_major_locator(mticker.MaxNLocator(8))  #x軸分成幾等分     
    ax1.yaxis.set_major_locator(mticker.MaxNLocator(nbins=3, prune='upper'))
    ax1.grid(True, color='r')
    ax1.tick_params(axis='x', colors='white')
    ax1.tick_params(axis='y', colors='white')
    plt.subplots_adjust(left=.075, bottom=.08, right=.96, top=.96, wspace=.15, hspace=0.1)
    plt.close() # 關窗口
    return ax1

#調用自定義公式
ax3=draw_HPCPX(ax2,df2a)  
root.mainloop()  	#進入Tkinter消息循環

在這裏插入圖片描述
在這裏插入圖片描述

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