@Channelchan
2018-10-08T15:21:09.000000Z
字数 13002
阅读 716
类别一常用技术指标
Name | Dayu-ID | 公式 |
---|---|---|
类别一常用技术指标common index | ||
1.1均线型Moving_Average | ||
EMA10 | A010001A | "Ta('EMA',0,0,0,0,close,{})".format(10) |
EMA12 | A010002A | "Ta('EMA',0,0,0,0,close,{})".format(12) |
EMA120 | A010003A | "Ta('EMA',0,0,0,0,close,{})".format(120) |
EMA20 | A010004A | "Ta('EMA',0,0,0,0,close,{})".format(20) |
EMA26 | A010005A | "Ta('EMA',0,0,0,0,close,{})".format(26) |
EMA5 | A010006A | "Ta('EMA',0,0,0,0,close,{})".format(5) |
EMA60 | A010007A | "Ta('EMA',0,0,0,0,close,{})".format(60) |
MA120 | A010008A | "Ta('MA',0,open,high,low,close,volume,{})".format(120) |
MA20 | A010009A | "Ta('MA',0,open,high,low,close,volume,{})".format(20) |
MA10 | A010010A | "Ta('MA',0,open,high,low,close,volume,{})".format(10) |
MA5 | A010011A | "Ta('MA',0,open,high,low,close,volume,{})".format(5) |
MA60 | A010012A | "Ta('MA',0,open,high,low,close,volume,{})".format(60) |
BBI | A010013A | MA_3= dv.add_formula('MA_3', "Ta('MA',0,open,high,low,close,volume,{})".format(3) ,is_quarterly=False, add_data=True) MA_6= dv.add_formula('MA_6', "Ta('MA',0,open,high,low,close,volume,{})".format(6) ,is_quarterly=False, add_data=True) MA_12= dv.add_formula('MA_12', "Ta('MA',0,open,high,low,close,volume,{})".format(12) ,is_quarterly=False, add_data=True) MA_24= dv.add_formula('MA_24', "Ta('MA',0,open,high,low,close,volume,{})".format(24) ,is_quarterly=False, add_data=True) BBI_J= dv.add_formula('BBI_J', "(MA_3+MA_6+MA_12+MA_24)/4" ,is_quarterly=False, add_data=True) |
TEMA10 | A010014A | EMA10 = dv.add_formula('EMA10', "Ta('EMA',0,close,close,close,close,close,10)" , is_quarterly=False, add_data=True) DEMA10 = dv.add_formula('DEMA10', "Ta('EMA',0,EMA10,EMA10,EMA10,EMA10,EMA10,10)" , is_quarterly=False, add_data=True) TEMA10_j = dv.add_formula('TEMA10_j', "Ta('EMA',0,DEMA10,DEMA10,DEMA10,DEMA10,DEMA10,10)" , is_quarterly=False, add_data=True) TEMA10 = dv.add_formula('TEMA10', "3*EMA10-3*DEMA10+TEMA10_j" , is_quarterly=False, add_data=True) |
TEMA5 | A010015A | EMA5 = dv.add_formula('EMA5', "Ta('EMA',0,close,close,close,close,close,5)" , is_quarterly=False, add_data=True) DEMA5 = dv.add_formula('DEMA5', "Ta('EMA',0,EMA5,EMA5,EMA5,EMA5,EMA5,5)" , is_quarterly=False, add_data=True) TEMA5_j = dv.add_formula('TEMA5_j', "Ta('EMA',0,DEMA5,DEMA5,DEMA5,DEMA5,DEMA5,5)" , is_quarterly=False, add_data=True) TEMA5 = dv.add_formula('TEMA5', "3*EMA5-3*DEMA5+TEMA5_j" , is_quarterly=False, add_data=True) |
1.2超买超卖型Over_Bought_Over_SoId | ||
BollDown | A020001A | "(Ts_Mean(close,{})-2*StdDev(close,{}))".format(20,20) |
BollUp | A020002A | "(Ts_Mean(close,{})+2*StdDev(close,{}))".format(20,20) |
KDJ_K | A020003A | RSV = dv.add_formula('RSV',"(close_adj-Ts_Min(low_adj,9))/(Ts_Max(high_adj,9)-Ts_Min(low_adj,9))",is_quarterly=False,add_data=True) EMV_j = dv.add_formula('EMV_j', "Sma(RSV,{},{})".format(3,1) , is_quarterly=False, add_data=True ) |
KDJ_D | A020004A | RSV = dv.add_formula('RSV',"(close_adj-Ts_Min(low_adj,9))/(Ts_Max(high_adj,9)-Ts_Min(low_adj,9))",is_quarterly=False,add_data=True) KDJ_K_A = dv.add_formula('KDJ_K_A',"Sma(RSV,{},{})".format(3,1), is_quarterly=False, add_data=True) KDJ_D_A= dv.add_formula('KDJ_D_A',"Sma(KDJ_K_A,{},{})".format(3,1), is_quarterly=False, add_data=True) |
KDJ_J | A020005A | RSV = dv.add_formula('RSV',"(close_adj-Ts_Min(low_adj,9))/(Ts_Max(high_adj,9)-Ts_Min(low_adj,9))",is_quarterly=False,add_data=True) KDJ_K_A = dv.add_formula('KDJ_K_A',"SMA(RSV,{},{})".format(3,1), is_quarterly=False, add_data=True,register_funcs={"SMA":SMA}) KDJ_D_A = dv.add_formula('KDJ_D_A',"SMA(KDJ_K_A,{},{})".format(3,1), is_quarterly=False, add_data=True,register_funcs={"SMA":SMA}) KDJ_J_A = dv.add_formula('KDJ_J_A', "{}*KDJ_K_A - {}*KDJ_D_A".format(3,2) , is_quarterly=False, add_data=True) |
UpRVI | A020006A | USD = dv.add_formula('USD', "If(Return(close,1)>0,StdDev(close,10),0)" DSD = dv.add_formula('DSD', "If(Return(close,1)<0,StdDev(close,10),0)" UpRVI = dv.add_formula('UpRVI_simu', "Ta('EMA',0,USD,USD,USD,USD,USD,14)" |
DownRVI | A020007A | DSD = dv.add_formula('DSD',"If(Return(close,1)<0,StdDev(Return(close,1),10),0)" DownRVI = dv.add_formula('DownRVI_J',"Ta('EMA',0,DSD,DSD,DSD,DSD,DSD,14)",is_quarterly=False, add_data=True) |
RVI | A020008A | USD = dv.add_formula('USD', "If(Return(close,1)>0,StdDev(close,10),0)",is_quarterly=False, add_data=True) DSD = dv.add_formula('DSD', "If(Return(close,1)<0,StdDev(close,10),0)",is_quarterly=False, add_data=True) UpRVI = dv.add_formula('UpRVI_J', "Ta('EMA',0,USD,USD,USD,USD,USD,14)",is_quarterly=False, add_data=True) DownRVI = dv.add_formula('DownRVI_J',"Ta('EMA',0,DSD,DSD,DSD,DSD,DSD,14)",is_quarterly=False, add_data=True) EMV_j = dv.add_formula('EMV_j', "100 * UpRVI_J/(UpRVI_J + DownRVI_J)",is_quarterly=False, add_data=True) |
DBCD | A020009A | BIAS = dv.add_formula('BIAS_J',"(close/Ts_Mean(close,5)-1)*100", is_quarterly=False, add_data=True) DIF = dv.add_formula('DIF_J','BIAS_J-Delay(BIAS_J,16)', is_quarterly=False, add_data=True) DBCD_J = dv.add_formula('DBCD_J',"Ta('EMA',0,DIF_J,DIF_J,DIF_J,DIF_J,DIF_J,17)", is_quarterly=False, add_data=True) |
Illiquidity | A020010A | Ts_Sum(Return(close,20),20)/Ts_Sum(turnover,20)*Pow(10,9) |
Mfi | A020011A | param = {'N': 14} dv.add_formula('TYP', "(close_adj+high_adj+low_adj)/3", is_quarterly=False,add_data=True) dv.add_formula('MF', "TYP*volume", is_quarterly=False,add_data=True) dv.add_formula('MR',"Ts_Sum(If(Delta(TYP,1)>0,TYP*MF,0),%s)/Ts_Sum(If(Delta(TYP,1)<0,TYP*MF,0),%s)" % (param['N'], param['N']) dv.add_formula('Mfi', "100-100/(1+MR)", is_quarterly=False,add_data=True).head() |
1.3能量型Power | ||
CR20 | A030001A | param = {'t1': 20} dv.add_formula('TYP', "(close_adj+high_adj+low_adj)/3", is_quarterly=False, add_data=True) value = dv.add_formula('CR20_A', "Ts_Sum(Max(high_adj-Delay(TYP,1),0),{})/Ts_Sum(Max(Delay(TYP,1)-low_adj,0),{})*100"%(params['t1'],params['t1']) , is_quarterly=False, add_data=True) |
MassIndex | A030002A | EMAHL=dv.add_formula("EMAHL","Ta('EMA',0,high_adj-low_adj,high_adj-low_adj,high_adj-low_adj,high_adj-low_adj,high_adj-close_adj,9)" EMA_Ratio_=dv.add_formula('EMA_Ratio_',"Ta('EMA',0,EMAHL,EMAHL,EMAHL,EMAHL,EMAHL,9)" EMA_Ratio=dv.add_formula('EMA_Ratio','EMAHL/EMA_Ratio_' MassIndex_J=dv.add_formula('MassIndex_J','Ts_Sum(EMA_Ratio,25)' |
Elder | A030003A | BullPower = dv.add_formula('BullPower_J', "high-Ta('EMA',0,close,close,close,close,close,13)" , is_quarterly=False, add_data=True) BearPower = dv.add_formula('BearPower_J', "low-Ta('EMA',0,close,close,close,close,close,13)" , is_quarterly=False, add_data=True) Elder = dv.add_formula('Elder_J', "((BullPower_J-BearPower_J)/close)" , is_quarterly=False, add_data=True) |
1.4趋势型Trend | ||
ASI | A040001A | param = {'t1': 20} dv.add_formula('AA',"Abs(Delta(close,1))", is_quarterly=False, add_data=True) dv.add_formula('BB',"Abs(low-Delay(close,1))", is_quarterly=False, add_data=True) dv.add_formula('CC',"Abs(high-Delay(low,1))", is_quarterly=False, add_data=True) dv.add_formula('DD',"Abs(Delay(close,1)-Delay(open,1))", is_quarterly=False, add_data=True) dv.add_formula('EE',"Delta(close,1)", is_quarterly=False, add_data=True) dv.add_formula('FF',"close-open", is_quarterly=False, add_data=True) dv.add_formula('GG',"Delay(close,1)-Delay(open,1)", is_quarterly=False, add_data=True) dv.add_formula('XX',"EE+FF/2+GG", is_quarterly=False, add_data=True) dv.add_formula('KK',"Max(AA,BB)", is_quarterly=False, add_data=True) dv.add_formula('RR',"If(AA>Max(BB,CC),AA+BB/2+DD/4,If(BB>Max(AA,CC),AA/2+BB+DD/4,CC+DD/4))", is_quarterly=False, add_data=True) dv.add_formula('SI',"16*XX/RR*KK", is_quarterly=False, add_data=True) ASI_J = dv.add_formula('ASI_J', "Ts_Sum(SI,%s)"%(params['t1']), is_quarterly=False, add_data=False) |
Chaikinoscillator | A040002A | dv.add_formula('AD', "Ta('AD',0,0,high_adj,low_adj,close_adj,volume)", is_quarterly=False, add_data=True) VR=dv.add_formula('VR1', "(Ta('EMA',0,0,0,0,AD,0,3)-Ta('EMA',0,0,0,0,AD,0,10))/Pow(10,6)" , is_quarterly=False,add_data=True) |
ChaikinVolatility | A040003A | HLEMA = dv.add_formula('HLEMA', "Ta('EMA',0,0,0,0,high-low,0,10)" , is_quarterly=False, add_data=True) ChaikinVolatility_J = dv.add_formula('ChaikinVolatility_J', "(HLEMA-Delay(HLEMA,10))/Delay(HLEMA,10)*100" , is_quarterly=False, add_data=True) |
EMV14 | A040004A | Ts_Sum(((high+low)/2-(Delay(high,1)+Delay(low,1))/2)*(high-low)/volume,14) |
EMV6 | A040005A | Ts_Sum(((high+low)/2-(Delay(high,1)+Delay(low,1))/2)*(high-low)/volume,6) |
PlusDI | A040006A | param = {'t1': 14} dm = dv.add_formula('dm', "If(Delta(high,1)>0,Delta(high,1),0 )" , is_quarterly=False, add_data=True) A = dv.add_formula('A', "Abs(high-low)" , is_quarterly=False, add_data=True) B = dv.add_formula('B', "Abs(high-Delay(close,1))" , is_quarterly=False, add_data=True) C = dv.add_formula('C', "Abs(low-Delay(close,1))" , is_quarterly=False, add_data=True) tr = dv.add_formula('tr', "If(A>Max(B,C), A,If(B>Max(A,C),B,C))" , is_quarterly=False, add_data=True) PlusDI_J = dv.add_formula('PlusDI_J', "Ta('EMA',0,0,0,0,dm,0,%s)/Ta('EMA',0,0,0,0,tr,0,%s)" % (params["t1"], params["t1"]), is_quarterly=False, add_data=False) |
minusDI | A040007A | Ewma(Max(0,Delay(low,1)-low),14)/Ewma(Max(Max(high-low,Abs(high-Delay(close,1))),Abs(low-Delay(close,1))),14) |
ADX | A040008A | param = {'N': 14} ADX_J = dv.add_formula('ADX_J', "Ta('EMA',0,0,0,0,Ta('DX',0,open,high,low,close,volume),%s)"%(params["N"]), is_quarterly=False, add_data=False) |
ADXR | A040009A | param = {'N': 14} ADX_J = dv.add_formula('ADX_J', "Ta('EMA',0,0,0,0,Ta('DX',0,open,high,low,close,volume),%s)"%(params["N"]), is_quarterly=False, add_data=True) ADXR_J = dv.add_formula('ADXR_J', "(ADX_J+Delay(ADX_J,%s))/2"%(params["N"]), is_quarterly=False, add_data=False) |
MACD | A040010A | Diff = dv.add_formula('Diff_J', "Ta('EMA',0,0,0,0,close,0,12)-Ta('EMA',0,0,0,0,close,0,26)", add_data = True, is_quarterly = False) Dea =dv.add_formula('Dea_J', "Ta('EMA',0,0,0,0,Diff_J,0,9)", add_data = True, is_quarterly = False) MACD_J = dv.add_formula('MACD_J', "(Diff_J-Dea_J)*2", add_data = True, is_quarterly = False) |
MTM | A040011A | Delta(close,{})".format(10) |
MTMMA | A040012A | Ts_Mean((close_adj-Delay(close_adj , 10)) , 10) |
UOS | A040013A | TR = dv.add_formula('TR', "Max(high,Delay(close,1))-Min(low,Delay(close,1))" , is_quarterly=False, add_data=True) XR = dv.add_formula('XR', "close-Min(low,Delay(close,1))" , is_quarterly=False, add_data=True) XRM = dv.add_formula('XRM', "Ts_Sum(XR,7)/Ts_Sum(TR,7)" , is_quarterly=False, add_data=True) XRN = dv.add_formula('XRN', "Ts_Sum(XR,14)/Ts_Sum(TR,14)" , is_quarterly=False, add_data=True) XRO = dv.add_formula('XRO', "Ts_Sum(XR,28)/Ts_Sum(TR,28)" , is_quarterly=False, add_data=True) UOS_J = dv.add_formula('UOS_J', "100*(XRM*14*28+XRN*7*28+XRO*7*14)/(7*14+14*28+7*28)" , is_quarterly=False, add_data=True)1900/1/0 |
SwingIndex | A040014A | dv.add_formula('AA',"Abs(Delta(close,1))", is_quarterly=False, add_data=True) dv.add_formula('BB',"Abs(low-Delay(close,1))", is_quarterly=False, add_data=True) dv.add_formula('CC',"Abs(high-Delay(low,1))", is_quarterly=False, add_data=True) dv.add_formula('DD',"Abs(Delay(close,1)-Delay(open,1))", is_quarterly=False, add_data=True) dv.add_formula('EE',"Delta(close,1)", is_quarterly=False, add_data=True) dv.add_formula('FF',"close-open", is_quarterly=False, add_data=True) dv.add_formula('GG',"Delay(close,1)-Delay(open,1)", is_quarterly=False, add_data=True) dv.add_formula('XX',"EE+FF/2+GG", is_quarterly=False, add_data=True) dv.add_formula('KK',"Max(AA,BB)", is_quarterly=False, add_data=True) dv.add_formula('RR',"If(AA>Max(BB,CC),AA+BB/2+DD/4,If(BB>Max(AA,CC),AA/2+BB+DD/4,CC+DD/4))", is_quarterly=False, add_data=True) SI = dv.add_formula('SI',"16*XX/RR*KK", is_quarterly=False, add_data=False) |
Ulcer10 | A040015A | param = {'t': 10,'c';2} Ulcer10 = dv.add_formula("Ulcer10_J", "Sqrt(Ts_Mean(((close - Ts_Max(close,%s))/Ts_Max(close,%s))^%s,%s))" % (params["t"], params["t"], params["c"], params["t"]), is_quarterly=True, add_data=False) |
Ulcer5 | A040016A | param = {'t': 5,'c';2} Ulcer5 = dv.add_formula("Ulcer5_J", "Sqrt(Ts_Mean(((close - Ts_Max(close,%s))/Ts_Max(close,%s))^%s,%s))" % (params["t"], params["t"], params["c"], params["t"]), is_quarterly=True, add_data=False) |
DHILO | A040017A | high = dv.get_ts('high') low = dv.get_ts('low') dhilo = np.log(high)-np.log(low) DHILO_J = pd.rolling_median(dhilo, 66) dv.append_df(DHILO_J, 'DHILO_J') |
Hurst | A040018A | default_params = {'n1':5,'n2':10,'n3':20,'n4':40,'n5':80} global j j = 0 def func(df): global j print(j) rn_1 = np.log10(df.rolling(default_params['n5']).apply(func_x,(default_params['n1'],))) rn_2 = np.log10(df.rolling(default_params['n5']).apply(func_x,(default_params['n2'],))) rn_3 = np.log10(df.rolling(default_params['n5']).apply(func_x,(default_params['n3'],))) rn_4 = np.log10(df.rolling(default_params['n5']).apply(func_x,(default_params['n4'],))) rn_5 = np.log10(df.rolling(default_params['n5']).apply(func_x,(default_params['n5'],))) rn_mean = (rn_1+rn_2+rn_3+rn_4+rn_5) x = np.log10(np.array([default_params['n1'],default_params['n2'],default_params['n3'],default_params['n4'],default_params['n5']])) x_mean = x.mean() y_weight = (x-x_mean)/np.sqrt(np.sum(np.square(x-x_mean))) Hurst_A = (y_weight[0](rn_1-rn_mean)+y_weight[1](rn_2-rn_mean)+y_weight[2](rn_3-rn_mean)+y_weight[3](rn_4-rn_mean)+y_weight[4](rn_5-rn_mean)) j+=1 return Hurst_A def func_x(df,n): data_dict = dict() data_mean_dict = dict() data_cumsum_dict = dict() data_r_dict = dict() data_std_dict = dict() sum_ = 0 len_ = default_params['n5']//n for i in range(1,len_+1): data_dict[i] = df[n(i-1):n*i] data_mean_dict[i] = data_dict[i].mean() data_std_dict[i] = data_dict[i].std() data_cumsum_dict[i] = (data_dict[i]-data_mean_dict[i]).cumsum() data_r_dict[i] = (data_cumsum_dict[i].max()-data_cumsum_dict[i].min())/data_std_dict[i] sum_+=data_r_dict[i] return sum_/len_ def Log10(df): return np.log10(df) log_ret = dv.add_formula('log_ret',"Log10(close_adj)-Log10(Delay(close_adj,1))",is_quarterly=False,add_data = True,register_funcs={"Log10":Log10}) Hurst_J = log_ret.apply(func) dv.append_df(Hurst_J,'Hurst_J') |