python-分水岭-技术指标

来源:互联网 发布:然足下卜之鬼乎的然 编辑:程序博客网 时间:2024/05/22 03:12
def get_EMA(df,N):    for i in range(len(df)):        if i==0:            df.ix[i,'ema']=df.ix[i,'close']        if i>0:            df.ix[i,'ema']=(2*df.ix[i-1,'close']+(N-1)*df.ix[i,'close'])/(N+1)    return dfdef get_DMA(df):    #大智慧动态移动平均,移动平均值是根据相应的指标不断变动的,a就是动态值,    #假设为最低价/最高价,可以根据实际情况调整     df['ema']= get_EMA(df,10)['ema']     df['5vol']=df['volume'].rolling(window=5,min_periods=1).sum()     dma=[]     for i in range(len(df)):        if i==0:            dma.append(df.ix[i,'close'])        if i>0:            a=df.ix[i,'5vol']/(3*df.ix[i,'amt'])            #print (a)            a1=(1-a)*df.ix[i,'ema']            a2=a*float(dma[len(dma)-1])                        dma.append(a1+a2)     df['dma']=dma          return dfdef get_FSL(df):    #大智慧分水岭,在上做多,在下做空    df['sw1']=(get_EMA(df,5)['ema']*7+get_EMA(df,10)['ema']*3)/10    df['sw']=get_DMA(df)['dma']    return dffrom WindPy import*import pandas as pdimport numpy as npimport datetimeimport time#获取数据w.start(60)symbol="000001.SZ"start_date="2016-01-01"end_date="2017-05-02"stock=w.wsd(symbol, "trade_code,open,high,low,close,pre_close,\                  volume,amt", start_date,end_date)df = pd.DataFrame()df['date']=stock.Timesdf['stock_code']=stock.Data[0]#index_data['stock_code'] =symboldf['open'] =stock.Data[1]df['high'] =stock.Data[2]df['low']  =stock.Data[3]df['close']=stock.Data[4]df['pre_close']=stock.Data[5]df['volume']=stock.Data[6]df['amt']=stock.Data[7]df.head()get_FSL(df)

原创粉丝点击