python股票自动买卖视频教程_十分钟学会用Python交易股票

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

本文通过讲述 [单股票均线策略] 在 Ricequant 量化平台的实现,熟悉平台并快速入门、创建自己的量化策略代码 。难易度:入门级.从一下几点说起;

1 确定框架:

[单股票均线策略] 的主要策略框架: 5 日均线高于 30 天均线,则全仓买入股票 5 日均线低于 30 天均线,则卖出所持股票

从我们日常交易的角度,一般交易者的行为可以拆分以下两部分:

1 选择标的(初始化):

在交易之前,我们通常会先选定要交易的股票池或者单个股票

2 交易(每天盯盘)

我们会观察该股票的五日均线和 30 日均线,并进行比较如果该股票的五日均线在 30 天均线以上,则全仓买入股票如果该股票的五日均线在 30 天均线以下,则全仓卖出(空仓)

那么程序中,我们是怎么做的呢?

先看看 Ricequant 平台中对应的代码框架会是怎么样的吧:

def init(context):#程序的初始化,预设股票池、设置参数和变量。 只运行一次def handle(context, bar_dict):#从回测的开始日期至结束日期,根据选择的频率(日、分钟)循环运行

对照策略思路 及 Ricequant 代码框架,你会发现我们可以很轻松地把 两者结合起来

以上框架也是 Ricequant 平台的最基本也最主要的框架,也就是

初始化

循环 - 根据选择的频率(日、分钟)循环运行

2 初始化:

选择标的:本策略的交易股票设定为 300059 ”东方财富“。

def init(context): context.stock = "300059.XSHE" # 存入目标股票 [东方财富 ]

延伸阅读:

1 在 init 中实现程序的初始化,例如存入目标股票池,设置滑点、基准等参数以及设置其它变量。 context 是一个全局的容器,你可以通过它设置任何全局变量并初始化:如 context.stock 将会在后面代码所被调用到。

2 代码中 # 代表注释,作为代码说明,执行时会被跳过而不为程序所运行。

3 如何填写股票代码:你会发现策略代码中 股票代码后带有后缀,那么它们分别代表什么呢?

后缀为

XSHE 代表在深交所上市交易的股票

XSHG 在上交所上市交易的股票

3 获取均价:

我们分别获取该股票 5 日和 30 日的均价

# 用法:变量 = bar_dict[股票代码].mavg(天数, frequency='day')# 获取近五日股票收盘价均价,命名为 fast fast = bar_dict[context.stock].mavg(5, frequency='day')# 同上,获取近二十日的收盘价均价,命名为 slow : slow = bar_dict[context.stock].mavg(30, frequency='day')4 判断买卖条件:

获得均价数据之后,我们就可以进行一个判断决定是否买卖了:

if fast>slow: # 若快线在慢线之上则用所有现金买入该股票 #买入操作 elif fast

在判断之前,我们还漏了一步,那是什么呢?就是要知道我们有多少现金,那么在程序中是如何获得现金的呢?我们使用以下代码

# 用法:变量 = context.portfolio.cashcash = context.portfolio.cash #取得当前的现金量,命名为 cash

延伸阅读: portfolio 中 包含所有的投资组合的信息,请参考文档 - Portfolio 对象

5 买入 /卖出:

在判定买卖的条件成立之后,我们会对股票进行买入或者卖出的操作:

#用法 order_value(股票代码,买卖金额) 金额为正则为买入,负数则为卖出#将所有现金买入 300059 东方财富order_value(context.stock, cash) #用法: order_target_value(股票代码,目标持仓比例) 比例在 1 与 0 之间#此处将持仓比例调整为 0 ,则等同于全部卖出order_target_percent(context.stock, 0)

6 策略回测

以上,我们用几行代码就把策略的框架完整地搭建起来了,最终的完整代码为:

def init(context): #初始化 context.stock = "300059.XSHE" #存入要交易的股票代码def handle_bar(context, bar_dict): #每日循环运行 #获取 30 日均线 slow = bar_dict[context.stock].mavg(30, frequency='day') #获取 5 日均线 fast = bar_dict[context.stock].mavg(5, frequency='day') cash = context.portfolio.cash #获取持有现金金额 if fast>slow: #判定买入条件 order_value(context.stock, cash) #买入目标股票 elif fast

写完了策略,那么我们接下去做什么呢? 先对我们的策略进行一次历史回测,看看它的历史表现是如何吧。

在策略编辑页面右上方,选择从 2015 年 1 月 4 日至 2016 年 10 月 4 日,用资金 100 万元进行日回测吧,请点击 运行回测。

python简单易学,使用python研究股票更是得心应手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试常考系列二

转载自 前端面试常考系列二 一、外部引用CSS有几种方式,有何区别 外部引用CSS的方式有两种分别是link和import。 区别如下: 1、link是XHTML标签,除了加载CSS外,还可以定义RSS等其它事务;import属于CSS范畴,…

3分钟看完Build2016 Day 1 Keynote

Build 2016 Day 1 Keynote 直播结束,M姐不得不说,没看直播的真心错过了一大波黑科技和充值我软信仰的大好时机,不过别后悔,M姐精选了干货,一次性让你补充信仰。没看的真心会被甩开八条街!! 言归…

js动态给按钮赋id_如何给SHOPIFY店铺添加“立即购买”动态结账按钮

动态结账按钮会根据店铺后台所支持的第三方快速结账付款方式和顾客设备浏览器的记录动态展示快速结帐按钮,比如PayPal Express Checkout、Apple Pay等。当然如果浏览器没有记录或者店铺后台没有支持的快速结帐付款方式,按钮则会显示为“buy it now”。Dy…

java序列化与深度拷贝

【README】 1, 为啥要序列化或序列化的意义?2,系统间调用的报文格式,大多数是Json字符串(或字节数组);接收方接收json;3,但当系统调用如RMI,客户端请求服务器…

微软Build 2016开发者大会--兑换承诺

微软的Build开发者大会已经成为它向我们宣布其在未来一年里的战略方向的一个最大平台。不像苹果的发布大会,微软之所以要召开这个会议并不是要发布什么产品,而是像众多业内人士所分析的那样,希望通过介绍公司的努力来说服它最重要的听众——开…

前端面试常考系列三

转载自 前端面试常考系列三 一、简述一下src与href的区别 href 表示超文本引用,在 link和a 等元素上使用。src 表示来源地址,指向外部资源所在位置,在 img、script、iframe 等元素上。src 的内容,是页面的一部分,是引入…

java内部类小结

【README】 1,本文总结了java4种内部类,包括 成员内部类:在外部类内部定义的非静态类;成员内部类不能独立存在,如 UML中类间的组合关联关系;静态内部类:在外部类内部定义的静态类;…

python内置模块有哪些_python中那些小众但有用的内置模块

今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧!pprint:更清晰的打印pprint 是 pretty printer 的缩写,用来打印 Python 数据结构,与 print 相比,它打印出来的结构更加整齐&#xff0…

微软想让你跟机器人说句话就把事办了

也别猜错,微软可没有像 Google 一样打算让四只脚能跑 60 迈和两只脚能穿行森林的机器人大军占领你的家。他们家的机器人不是 Robot,而叫 Bot,可能是 chatbot 的简称,也就是聊天机器人。 具体来说,微软在自然语言处理的…

转:Spring Boot 获取 HttpServletRequest 的方法

转自: Spring Boot 获取 HttpServletRequest 的方法 - 简书本文介绍 Spring Boot 2 获取 HttpServletRequest 的方法。 目录 概述 方法Controller 方法参数属性自动注入手动方法调用借助 Mo...https://www.jianshu.com/p/b7a7d66c4ef2 本文介绍 Spring Boot 2 获取…

前端面试常考系列四

转载自 前端面试常考系列四 一、CSS盒子模型有哪些用处 css中的盒子模型是为了理解divcss模型的定位功能,它利用盒子模型这样的布局方式代替了传统的表格布局方式。盒子模型是在学习divcss布局方式中必须要学习的一个模型,通过这个模型可以明白网页中di…

python线性加权模型_局部加权之线性回归(1) - Python实现

1 #局部加权线性回归2 #交叉验证计算泛化误差最小点345 importnumpy6 from matplotlib importpyplot as plt789 #待拟合不含噪声之目标函数10 deforiFunc(x):11 y numpy.exp(-x) * numpy.sin(10*x)12 returny13 #待拟合包含噪声之目标函数14 def traFunc(x, sigma0.03):15 y …

3分钟看完 Day2 Keynote

hey~ M姐又给大家带来了满满惊喜的 Build2016 Day 2 Keynote 干货汇总了。 如果你连昨天的都还不知道,那真心就 out 了。如果说信仰在昨天充值爆棚,今天就要充值信仰到掀翻房顶的节奏了!!! 红衣主教今天妥妥变身成为新…

latex 数学公式_技能分享——LaTeX篇I

公众号文章系列二——“小袁技能分享”上线啦,第一篇推文我们聊一聊LaTeX(音译 “拉泰赫”)Question 1什么是LaTeX?要解释LaTeX是什么,我们先要了解另外一个事物:TeX。1968年,美国著名计算机科学家、现代计算机科学的先…

转:springboot servlet使用配置

转自: springboot servlet使用配置_奔跑的蜗牛的博客-CSDN博客在spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。 一、代码注册通过ServletRegistrationBean 获得控制。 也…

前端面试常考系列五

转载自 前端面试常考五 一、DIV元素是什么 DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或…

从业十余年谈谈对dotnet看法与坚持

前言 园子经常在讨论关于.Net发展的问题,我也这些年在工作乃至创业过程中使用.Net碰到的一些问题和看法。个人擅长的技术面,C/C/MFC/STL、ASM、JAVA、VB、Javascript/Typescript、C#/WebForm/MVC、Android/MonoDroid,Linux/Windows,还有没有可…

kali安装python3.7_Debian服务器之安装Python3.7

1、系统环境介绍1.1 系统版本debian-9.6.0-amd64-netinst1.2 系统内核Linux lnnkee 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux2、下载安装包https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz3、配置安装环境apt install libffi-dev …

org.apache.kafka.common.errors.TimeoutException: Topic not present in metadata 解决方法

【README】 本文po出了 topic not present in metadata 的解决方法; 很多博文说是 因为 jackson-databind 没有引入,但是我重新引入后,还是没有解决问题; 最后,原因在于我要发送消息的分区,topic 没有对…

前端面试常考系列六

转载自 前端面试常考系列六 一、为什么重置浏览器默认样式,如何重置 每种浏览器都有一套默认的样式表,即user agent stylesheet,网页在没有指定的样式时,按浏览器内置的样式表来渲染。这是合理的,像word中也有一些预留…