# 导入函数库
from jqdata import *
import jqdata
import jqlib.technical_analysis
import pandas as pdimport talib as ta# 初始化函数,设定基准等等
def initialize(context):# 设定沪深300作为基准set_benchmark('000300.XSHG')# 开启动态复权模式(真实价格)set_option('use_real_price', True)# 输出内容到日志 log.info()log.info('初始函数开始运行且全局只运行一次')# 过滤掉order系列API产生的比error级别低的log# log.set_level('order', 'error')### 股票相关设定 #### 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)# 开盘前运行run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')# 开盘时运行run_daily(market_open, time='open', reference_security='000300.XSHG')# 收盘后运行run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')## 开盘前运行函数
def before_market_open(context):# 输出运行时间log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))# 给微信发送消息(添加模拟交易,并绑定微信生效)# send_message('美好的一天~')# 要操作的股票:平安银行(g.为全局变量)g.security = '000300.XSHG'# 交易标志g.target_sign=0g.jintian=shift_trading_day(context,0)g.zuotian=shift_trading_day(context,-1)g.qiantian=shift_trading_day(context,-2)security=g.security'''# 内置函数:计算它的KDJpre_K,pre_D,pre_J = jqlib.technical_analysis.KDJ(security, check_date=g.qiantian, N =9, M1=3, M2=3) K1,D1,J1 = jqlib.technical_analysis.KDJ(security, check_date=g.zuotian, N =9, M1=3, M2=3) # 最粗糙的金叉if K1[security]>D1[security] and pre_K[security]<=pre_D[security]:g.target_sign=1elif     K1[security]<D1[security]:# K<d 清仓g.target_sign=-1else:g.target_sign=0'''# 纯计算KDJ,采用了5d表示周数据close_data = attribute_history(security, 180, '5d', ['close','high','low'],df=True)dw = close_data#print (dw)dw.index = range(len(dw))dw['slowk'], dw['slowd'] = ta.STOCH(dw['high'].values,dw['low'].values,dw['close'].values,fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)df = pd.DataFrame(data=dw)#row = df.iloc[-10:].values#print(row)# slowk是 K   ;slowd是 D#print (df)KD_qiantian=df.iloc[-2]KD_zuotian=df.iloc[-1]   pre_K= KD_qiantian['slowk']pre_D= KD_qiantian['slowd']  K1= KD_zuotian['slowk']D1= KD_zuotian['slowd']  # 最粗糙的金叉if K1>D1 and pre_K<=pre_D:g.target_sign=1elif     K1<D1:# K<d 清仓g.target_sign=-1else:g.target_sign=0## 开盘时运行函数
def market_open(context):log.info('函数运行时间(market_open):'+str(context.current_dt.time()))security = g.security# 取得当前的现金cash = context.portfolio.available_cash# 如果有仓位,判断清仓标志if context.portfolio.positions[security].closeable_amount > 0 and g.target_sign==-1:# 记录这次卖出log.info("价格低于均价, 卖出 %s" % (security))# 卖出所有股票,使这只股票的最终持有量为0order_target(security, 0)# 如果KDJ金叉买入和有钱,全仓买入elif cash>1000 and g.target_sign==1:# 记录这次买入log.info("价格高于均价 1%%, 买入 %s" % (security))# 用所有 cash 买入股票order_value(security, cash)## 收盘后运行函数
def after_market_close(context):log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))#得到当天所有成交记录trades = get_trades()for _trade in trades.values():log.info('成交记录:'+str(_trade))log.info('一天结束')log.info('##############################################################')# 日期转化
def shift_trading_day(context,shift_):#d0=datetime.date(context.current_dt)d0 = context.current_dt.date()#当前日期(包含了时分秒)先转字符串#d0=datetime.strftime(d0,'%Y%m%d')#当前日期(不包含了时分秒)再转回时间格式,实则去时分秒与jqdata.get_all_trade_days()列表中信息相符合#d0=datetime.strptime(d0, '%Y%m%d').date()# 获取所有的交易日,返回一个包含所有交易日的 list,元素值为 datetime.date 类型.tradingday = jqdata.get_all_trade_days()# 得到date之后shift天那一天在列表中的行标号 返回一个数shiftday_index = list(tradingday).index(d0) + shift_# 根据行号返回该日日期 为datetime.date类型return tradingday[shiftday_index]    

量化交易:KDJ周线择时相关推荐

  1. quantrader和matlab不匹配,【Matlab量化投资】支持向量机择时策略

    原标题:[Matlab量化投资]支持向量机择时策略 感谢国泰安与本公众号合作 推出[Matlab量化投资系列] 机器学习 所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据 ...

  2. 【量化投资】基金择时策略浅析(3) -实用择时方法

    常见择时方法 本系列第一篇文章中曾介绍过选品和择时的概念,并且提到过这两个其实都是定义比较宽松的概念,任何投资者在任何市场中做的投资决策,无论是依据基本面因素,技术指标,还是量化模型,都可以看作择时. ...

  3. 基于matlab量化投资策略,【Matlab量化投资】支持向量机择时策略

    推出[Matlab量化投资系列] 机器学习 所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据(结果). 但是,直到今天,机器学习也没有一种被大家广泛认同的理论框架产生,这 ...

  4. “降准”带来大牛市? 量化测算PMI 社融 汇率等宏观数据A股择时效果

    就在上周1月4日,为进一步支持实体经济发展,中国人民银行决定下调金融机构存款准备金率1个百分点.但是你是否通过严谨的量化模型,测算过PMI.利率.货币供应量.准备金率等各种指标的综合择时结果?今天聚宽 ...

  5. Python量化投资——股票择时到底能否赚钱?TA-Lib 33种技术指标有效性横向大评比

    TA-Lib中33种技术指标回测研究 `Python`量化投资--`TA-Lib`中33种股票择时技术指标的有效性研究 为什么要做这个评测 技术指标清单 评测方法 评测工具 测试方法及评价指标 期待你 ...

  6. 根据《LLT低延迟趋势线与交易性择时 短线择时策略研究》的python模型 策略开发

    <低延迟趋势线与交易性择时短线择时策略研究>  传统移动平均线(MA)的缺点 移动平均线(MA)是技术分析中常用的一类趋势跟踪指标,其可以在一定程度上刻画股票价格或指数的变动方向.MA ...

  7. python 了解量化交易

    股票的特性 1.股票.基金.债券的区别 股票:是股份公司发行的所有权凭证,属于投资,投资进去的钱,公司赚你就赚,公司亏你就亏 盈亏自负. 基金:投资组合(股票.债券.现金)大部分基金一半以上的持仓都是 ...

  8. 中低频量化交易策略研发04_ 简单的择时策

    4.1 择时策略的基本框架 图 4.3 多分类的基本择时策略框架 4.2 均线趋势策略的简单优化 这里进行的优化,其实就是很简单的将所有参数的可能组合都测试一遍,然后选取整体收益最高的参数组合,这种方 ...

  9. python量化交易--择时策略

    1.在banban网爬取所有A股的股票名称和代码. 观察板板网站的股票,将在深圳上市和上海上市的A股信息爬取并保存到本地文件 2.传入股票代码,利用tushare api提取股票的所有历史数据,对股票 ...

最新文章

  1. 【extjs6学习笔记】1.1 初始:创建项目
  2. [mysql] MySQL Order By Rand()效率【转载】
  3. Linux知识积累(6) 系统目录及其用途
  4. php pecl memcached,php – 安装PECL Memcached错误
  5. limit实现原理 mysql_值得一生典藏:MySQL的事务实现原理
  6. 三星framebuffer驱动代码分析
  7. nodejs error Windows_NT 6.1.7601 21 error code ELIFECYCLE 22 error angular-adminlte-plugin@0.1.0
  8. Appium+Python移动端 实战——教你如何xpath定位自动化测试
  9. Quartz_简单编程式任务调度使用(SimpleTrigger)
  10. java deque.pop_Java - dequeue的介紹及用法
  11. HYSBZ1061题解
  12. RBF(径向基)神经网络
  13. python3.1415926_Python3中操作字符串str必须记住的几个方法
  14. Burpsuite1.7.03网站渗透神器最新破解版
  15. 比例尺分辨率转换(openlayers)
  16. pomelo之master服务器的启动
  17. IE7访问HTTPS网站提示证书有安全问题的解决方案
  18. 实现阿里云物联网平台设备信息到微信小程序分享过程
  19. 免费GPU汇总及选购
  20. 华为“杀疯了”:发布“摸鱼”神器10余款新品

热门文章

  1. JAVA编程思想(二)如何面向接口编程
  2. 基于英汉平行语料库的机器翻译知识获取研究
  3. css实现翻转导航栏的效果
  4. java 完全匹配_正则表达式的完全匹配和部分匹配
  5. 微信开发者工具中使用scss
  6. pythonelectron桌面开发案例_Web桌面应用框架1:Electron与WEB桌面应用程序开发及其它...
  7. springboot+旅游网站 毕业设计-附源码211713
  8. 墨西哥城新机场 | 一座来自未来的机场
  9. 设置windows10相应文件格式的打开方式
  10. Sensor+ISP专栏-HDR