博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
量化交易指标函数整理(持续更新)
阅读量:4343 次
发布时间:2019-06-07

本文共 2302 字,大约阅读时间需要 7 分钟。

# 根据不同的时间段设置滑点与手续费def set_slip_fee(context):    # 将滑点设置为0    set_slippage(FixedSlippage(0))     # 根据不同的时间段设置手续费    dt=context.current_dt        if dt>datetime.datetime(2013,1, 1):        set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))             elif dt>datetime.datetime(2011,1, 1):        set_commission(PerTrade(buy_cost=0.001, sell_cost=0.002, min_cost=5))                elif dt>datetime.datetime(2009,1, 1):        set_commission(PerTrade(buy_cost=0.002, sell_cost=0.003, min_cost=5))                    else:        set_commission(PerTrade(buy_cost=0.003, sell_cost=0.004, min_cost=5))

  

计算指数移动平均线
# 计算指数移动平均线数据# 输入:股票代码-字符串,移动指数平均线天数-整数,data# 输出:今天和昨天的移动指数平均数-浮点数def get_EMA(security_code,days,data):    # 如果只有一天的话,前一天的收盘价就是移动平均    if days==1:    # 获得前两天的收盘价数据,一个作为上一期的移动平均值,后一个作为当期的移动平均值        t = attribute_history(security_code, 2, '1d', ('close'))        return t['close'][-2],t['close'][-1]    else:    # 如果全局变量g.EMAs不存在的话,创建一个字典类型的变量,用来记录已经计算出来的EMA值        if 'EMAs' not in dir(g):            g.EMAs={}        # 字典的关键字用股票编码和天数连接起来唯一确定,以免不同股票或者不同天数的指数移动平均弄在一起了        key="%s%d" %(security_code,days)        # 如果关键字存在,说明之前已经计算过EMA了,直接迭代即可        if key in g.EMAs:            #计算alpha值            alpha=(days-1.0)/(days+1.0)            # 获得前一天的EMA(这个是保存下来的了)            EMA_pre=g.EMAs[key]            # EMA迭代计算            EMA_now=EMA_pre*alpha+data[security_code].close*(1.0-alpha)            # 写入新的EMA值            g.EMAs[key]=EMA_now            # 给用户返回昨天和今天的两个EMA值            return (EMA_pre,EMA_now)        # 如果关键字不存在,说明之前没有计算过这个EMA,因此要初始化        else:            # 获得days天的移动平均            ma=get_MA(security_code,days)             # 如果滑动平均存在(不返回NaN)的话,那么我们已经有足够数据可以对这个EMA初始化了            if not(isnan(ma)):                g.EMAs[key]=ma                # 因为刚刚初始化,所以前一期的EMA还不存在                return (float("nan"),ma)            else:                # 移动平均数据不足days天,只好返回NaN值                return (float("nan"),float("nan"))

  

 

  • 计算移动平均线
  • # 计算移动平均线数据# 输入:股票代码-字符串,移动平均线天数-整数# 输出:算术平均值-浮点数def get_MA(security_code,days):# 获得前days天的数据,详见APIa=attribute_history(security_code, days, '1d', ('close'))# 定义一个局部变量sum,用于求和sum=0# 对前days天的收盘价进行求和for i in range(1,days+1):sum+=a['close'][-i]# 求和之后除以天数就可以的得到算术平均值啦return sum/days

转载于:https://www.cnblogs.com/medik/p/11108650.html

你可能感兴趣的文章
Python之路
查看>>
人人都会变老
查看>>
无向图匹配的带花树算法
查看>>
Java_基础—序列流整合多个
查看>>
解密——Java开发中注意的地方
查看>>
【NoteExpress】以自己想要的方式对附件重命名
查看>>
【卫星测高】基本雷达测高工具箱BRAT(Basic Radar Altimetry Toolbox)简单的使用说明...
查看>>
【转】解决:ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
查看>>
清华高材生北漂七年没有家
查看>>
JVM内存空间划分与作用详解
查看>>
12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍
查看>>
Session
查看>>
数据库事务
查看>>
python中的map,filter,zip函数
查看>>
UIImage 图片处理:截图,缩放,设定大小,存储
查看>>
添加、修改表中的字段
查看>>
java写bfs
查看>>
mysql 隔离级别
查看>>
【单调栈】RP俱乐部
查看>>
其他shell
查看>>