""" Created on Tue May 23 08:57:02 2017 @author: yunjinqi E-mail:yunjinqi@qq.com Differentiate yourself in the world from anyone else. """ import pandas as pd import numpy as np import datetime import time #获取数据 df=pd.read_csv('C:/Users/HXWD/Desktop/000001.csv',encoding='gbk') df.columns=['date','code','name','close','high','low','open','preclose', 'change','change_per','volume','amt'] df=df[['date','open','high','low','close','volume','amt']] df.head() def get_TRIX(df,N=12,M=20): """三重平滑平均线 原理: 长线操作时采用本指标的讯号,可以过滤掉一些短期波动的干扰,避免交易次数过于频繁,造成部分无利润的买卖,及手续费的损失。本指标是一项超长周期的指标,长时间按照本指标讯号交易,获利百分比大于损失百分比,利润相当可观。 算法: 先计算收盘价的三重N日指数平滑移动平均,记为TR TRIX线 (TR-昨日TR)/昨日TR×100 TRMA线 TRIX线的M日移动平均 参数:N、M 天数,一般为12、9 用法: 1、打算进行长期控盘或投资时,趋向类指标中以TRIX最适合。 2、TRIX由下向上交叉TRMA时,买进。 3、TRIX由上向下交叉TRMA时,卖出。 4、参考MACD用法。""" 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) for i in range(len(df)): if i==0: df.ix[i,'ema1']=df.ix[i,'ema'] if i>0: df.ix[i,'ema1']=(2*df.ix[i-1,'ema']+(N-1)*df.ix[i,'ema'])/(N+1) for i in range(len(df)): if i==0: df.ix[i,'tr']=df.ix[i,'ema1'] if i>0: df.ix[i,'tr']=(2*df.ix[i-1,'ema1']+(N-1)*df.ix[i,'ema1'])/(N+1) df['trix']=100*(df['tr']-df['tr'].shift(1))/df['tr'].shift(1) df['trma']=df['trix'].rolling(M).mean() return df get_TRIX(df) df.tail()