代码主要来自于米框官方教程,由于官方教程有很多,且在开源代码上不一定运行成功,因此将试验成功的代码放于此,便于日后查验。
rqalpha取自官方版本3.4.0到3.4.1之间。

关键代码:

rqalpha.api.instruments(id_or_symbols)

获取合约的详细信息

rqalpha.api.current_snapshot(order_book_id)

get_trading_dates(start_date, end_date)

交易列表

get_previous_trading_date(date)

上一交易日

get_next_trading_date(date)

下一交易日

获取交易日列表

当日快照

1 history_bars():

(order_book_id, bar_count, frequency, fields=None, skip_suspended=True, include_now=False, adjust_type=‘pre’)
得到的是一个ndarray序列,这里是前30天的数据集

2 get_bar():

handle_bar()函数中通过bar_dict[stock].close获取到当日收盘价,最终调用到get_bar()中数据

bar_dict[stock].close调用的BarMap中的__getitem__()函数,然后通过

self._data_proxy.get_bar(order_book_id, self._dt, self._frequency)

获取股票的相关信息,data_proxy.get_bar()调用_data_source.get_bar()函数,这个_data_source是数据源,如果重写了数据源,那么get_bar()也需要重写。我重写成minute_data_source,因此这儿就接管过来了

3 账户信息:

context.portfolio.positions这个指账户相关信息

完整代码:

# 此例子采用Talib提供的STOCH(Stochastic Oscillator Slow),更直接的理解他就是我们常用的KDJ指标中的KD指标。
# 是由两条线一条是快速确认线,另外一条是慢速主干线组成。
# K线是快速确认线——数值在90以上为超买,数值在10以下为超卖;
# D线是慢速主干线——数值在90以上为超买,数值在10以下为超卖;
import talib
from rqalpha.api import *def init(context):# 定义一个全局变量, 保存要操作的证券context.stocks = ['600048.XSHG', '000002.XSHE', '000024.XSHE', '000031.XSHE', '000040.XSHE']# 设置我们要操作的股票池update_universe(context.stocks)# 初始化此策略
def handle_bar(context, bar_dict):# 取得当前的现金cash = context.portfolio.cash# 循环股票列表for stock in context.stocks:# 获取股票的数据hhigh = history_bars(stock, 30, '1d', 'high')hlow = history_bars(stock, 30, '1d', 'low')hclose = history_bars(stock, 30, '1d', 'close')# 创建STOCH买卖信号,包括最高价,最低价,收盘价和快速线(一般取为9),慢速线# 注意:STOCH函数使用的price必须是narrayslowk, slowd = talib.STOCH(hhigh,hlow,hclose,fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)# 获得最近的kd值slowk = slowk[-1]slowd = slowd[-1]# 获取当前股票的数据current_position = context.portfolio.positions[stock].quantity# 获取当前股票价格current_price = bar_dict[stock].close# 当slowk > 90 or slowd > 90,且拥有的股票数量>=0时,卖出所有股票if slowk > 90 or slowd > 90 and current_position >= 0:order_target_percent(stock, 0)# 当slowk < 10 or slowd < 10, 且拥有的股票数量<=0时,则全仓买入elif slowk < 10 or slowd < 10 and current_position <= 0:number_of_shares = int(cash / current_price)# logger.info(cash)# logger.info(current_price)# 购买量大于0时,下单if number_of_shares > 0:# 买入股票order_shares(stock, number_of_shares)

运行结果:

日线级别的get_bar逻辑:

获取
通过daybar_store
order_book_id
instrument
日线级数据

股票日线原始数据:

股票日线转换后的数据:

股票分钟原始数据:

股票分钟转换后数据

关于分钟数据的datetime列
将datetime替换成原来的date, 然后将datetime*=1000000, 再加上time列的数据

股指期货字段多一些,其它与分钟线相同:

米框量化交易指标编写kd相关推荐

  1. 量化交易入门笔记-KD指标策略

    ''' 超买超卖型技术指标,即随机指标KD 实现K在20左右向上交叉D时,则全仓买入 K在80左右向下交叉D时,全仓卖出 '''import jqdata from jqlib.technical_a ...

  2. 量化交易5-backtrader编写均线策略

    本章节我们做回测一个比较偏实际买卖策略,以笔者买过1年多的中国国航601111为例子, 策略为:笔者认为如果5日均线高于10日均线,就认为股价处于上升阶段,就全仓位买入,如果5日均线低于10日均线,笔 ...

  3. 【VeighNa】开始量化交易——第四章:结合AHR999指标和情绪指标分析

    本文仅供学术研究,不做任何投资建议! 文章目录 1.什么是ahr999指标 2.计算ahr999指标 2.1 获取数据 2.2 将数据保存到数据库 2.3 开始计算ahr999指标 2.3.1 建立模 ...

  4. 量化交易——传统技术分析随机震荡指标STO的原理及实现

    随机震荡指标STO(KD) 与MACD类似的是,STO同样地使用了两条曲线来表示,不同的是STO的曲线范围限制在0到100之间.在设计的过程当中,其不仅要研究其收市价,同时还要包括近期所出现过的最高价 ...

  5. sar偏移量追踪技术_SAR指标配合阶段高低价的量化交易策略

    SAR指标 抛物线SAR指标试图通过突出资产移动的方向以及提供进入和退出点来为交易者提供优势.在本文中,我们将介绍该指标的基础知识,并向您展示如何将其纳入您的量化交易策略.我们还将看一下该指标的一些缺 ...

  6. 量化交易中用到的回测评估指标(策略收益、基准收益、Alpha比率、Beta比率、夏普比率、索提诺比率)详解

    前言 近日在做A股的过程中接触到了量化交易.通过一个月时间的了解发现并非全自动印钞机,也有可能有全自动接盘侠的潜质.故现阶段以学习量化交易的知识为主,多学多问总是没错的嘛~ 现阶段使用Python爬取 ...

  7. python 量化交易:MACD指标双金叉形态识别

    python 量化交易:MACD指标双金叉形态识别: df 是pandas的Dataframe,基础数据原来是 tushare 中的股票交易数据,MACD指标是用 talib 库计算得来: df = ...

  8. 量化交易入门之vnpy简单策略编写

    本篇博客将介绍量化交易框架vnpy的简单策略编写.在阅读本博客前的环境准备请看我的上一篇博客.传送门如下: 零基础搭建量化交易框架 一.开发环境 因为python版本兼容有点差,且源码功能都有所变化, ...

  9. 【量化交易】KDJ指标实现

    [量化交易]KDJ指标实现 指标说明 指标原理 计算步骤 Python指标实现 利用Tushare获取数据源 平台介绍 获取数据源 利用Python实现指标计算 指标说明 指标原理 KDJ指标又称为随 ...

最新文章

  1. 人工智能中图神经网络GNN是什么?
  2. fastdfs上传文件_SpringBoot+FastDFS搭建分布式文件系统
  3. WiseCloud成为全球首批Kubernetes官方认证平台产品-CNCF官方发布
  4. ros2_object_analytics安装过程全记录
  5. Qracle学习:初识oracle
  6. CRM_ORGMAN_CHECK_OW
  7. iOS应用国际化教程(2014版)
  8. 库-libuv 和 libev的对比
  9. 《需求规格说明书》业务描述活动图
  10. 机械考计算机三级,机器人等级考试三级知识点汇总-20210706222922.pdf-原创力文档...
  11. WebApi_基于token的多平台身份认证架构设计(Z)
  12. Linux下QT开发
  13. JPush极光推送的原理
  14. Ubuntu18.04下OpenCV调用笔记本摄像头
  15. Error creating bean with name ‘processEngine‘: FactoryBean threw exception on object creation; neste
  16. 云脉H5文档管理系统之文件管理的共享与协作
  17. L3-015 球队“食物链” (30 分)
  18. 连接MySQL实现增删改查的动态网页
  19. JavaScript判断浏览器内核
  20. PyTorch搭建卷积神经网络(CNN)进行视频行为识别(附源码和数据集)

热门文章

  1. Mac 下显示隐藏文件或文件夹
  2. 机器学习之依概率收敛与一致估计(相合估计)
  3. 机器人关节(Joint)之间的坐标变换(Transform)
  4. Codeforces Round #510 (Div. 2)
  5. 详解最小生成树代码C++
  6. 【论文翻译】(第二部分)The Fourier decomposition method for nonlinear and non-stationary time series analysis
  7. Kafka中的HW、LEO、LSO等分别代表什么?
  8. jQuery实现省略指定多余文字
  9. 微信小程序开发实录——每日速递
  10. R code execution error处理