股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

股票实现程序化自动化交易的三个基础:获取数据、执行交易、查询账户。

以后说到策略示例的时候就不介绍接口的基础使用方法了,随便一个策略把过程写出来都会很啰嗦,尽量压缩内容吧,这些内容是面向新手的,大佬们忽略细节就好。

单均线突破策略

今天要说的单均线突破策略简单总结流程如下:

1、获取历史数据;

2、计算N日简单移动平均线;

3、获取实时数据,判断上穿还是下穿;

4、执行买入或者卖出;

单均线突破策略是一种经典的技术分析策略,通过计算某个周期的简单移动平均线(SMA),当价格突破均线时执行买入或卖出操作。

如果还有别的,那就是获取持仓,判断当前持仓量,有持仓的话是根据盈利减仓一部分还是清仓,或者根据资金量是否继续加仓。这里就不说这些细节了,写策略的时候根据自己情况决定吧,逻辑并不复杂。

股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

还有,交易的滑点和手续费的设置,滑点是指预期交易价格和实际交易价格之间的差异,执行交易是用挂单价、最新价还是对手价,部分成交,剩下撤消还是挂单,如果没有立即成交,是撤消还是挂单等等,这些也先不讲,以后讲回测的时候再说。

下面我们来分步骤写代码实现

0、连接客户端,启动交易对象

# 客户端的路径
client_path = r'D:\程序交易客户端\userdata_mini'
# 随便输入一个整数
session_id = random.randint(100, 10000)
# 创建交易对象实例
xt_trader = XtQuantTrader(client_path, session_id)
# 启动交易对象
xt_trader.start()
# 创建交易连接
con_result = xt_trader.connect()
# 返回值是0就是连接成功,失败返回非0的值,一般是-1
print('连接状态:', con_result)
if con_result == 0:print('连接成功')
# 创建账户对象,默认STOCK,表示股票账户,也支持港股通、期权、期货等
account = StockAccount('你的资金账号', 'STOCK')

因为要执行交易的,所以要创建交易连接和账户对象,只是分析数据的话不用这一步,实现交易肯定要先有股票账户才行,这里不详细说了。

1、获取历史数据

这里假设我们要获取的是过去一年的历史数据,也足够测试用了:

from datetime import datetime, timedelta
now_time = datetime.now()
old_time = now_time - timedelta(days=365)
​
start_time = old_time.strftime('%Y%m%d')#历史数据的开始时间,取一年前
end_time = now_time.strftime('%Y%m%d')#历史数据的结束时间,取今天
stock_list = ['000001.SZ']  #平安银行,可以用列表取多支['000001.SZ','600519.SH']
​
# 下载历史数据较多的话加上回调,输出下载进度
def down_callback(data):print(data)
​
# 历史行情需要先下载
xtdata.download_history_data2(stock_list, '1d', start_time, end_time, down_callback)
# 获取数据,只要close就行
result = xtdata.get_market_data_ex(['close'], stock_list, '1d', start_time, end_time)
# 返回的是字典格式,键名是股票代码,键值是dataframe数据
his_data = result[stock_list[0]]
print(his_data)
# 取回的数据如下
​close
20230529  11.98
20230530  11.87
20230531  11.60
20230601  11.59
20230602  11.93
...         ...
20240522  11.56
20240523  11.40
20240524  11.31
20240527  11.51
20240528  11.40

我写代码都是自己用的,懒省事,也没注释习惯,自己看懂就行,时间长了自己也看不懂了就只能重写。新手不要学我这样的坏习惯,最好加上参数名和对应的参数值,并在需要的地方写清楚注释。

2、计算N日简单移动平均线

# 计算20日简单移动平均线
his_data['SMA20'] = his_data['close'].rolling(window=20).mean()
print(his_data)

Python是真好用,pandas是真好用,还有更好用的股票相关类库,这里都用不到,这又让我想起上篇说的某位复读机,问了我10次:为啥没有MACD?

3、获取实时数据,判断上穿还是下穿

realtime_data = xtdata.get_full_tick(stock_list)
print(realtime_data)
lastclose = realtime_data[stock_list[0]]['lastClose']
​
if lastclose > his_data['SMA20'].iloc[-1]:signal = 'buy'
elif lastclose < his_data['SMA20'].iloc[-1]:signal = 'sell'
else:signal = 'hold'

这里用的是获取全推数据get_full_tick,常用的数据接口也就是这两个,都演示一下,盘口的tick数据都是可以取到的,用上面的get_market_data_ex也是可以取到实时数据的,不如这个方便。

4、执行买入或者卖出

实际上在第三步判断后直接执行操作就行,这里是为了演示的更清晰一些,而且很多时候出现交易信号,还要和信号一起,再加一些别的判断。

if signal == 'buy':xt_trader.order_stock(account, stock_list[0], xtconstant.STOCK_BUY, 100, xtconstant.MARKET_PEER_PRICE_FIRST, 0)
elif signal == 'sell':xt_trader.order_stock(account, stock_list[0], xtconstant.STOCK_SELL, 100, xtconstant.MARKET_PEER_PRICE_FIRST, 0)

这里用的报价类型是对手价,所以报单价格直接用0就行,如果是用之前讲过的指定价,这个价格参数要填的,并且要在交易所规定的价格笼子以内,不然就是废单了。

股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

单均线突破策略的优缺点

优点很好理解,简单易懂,非常直观,并且容易实现,适合新手学习。缺点也很明显,均线是对过去价格的平均,具有一定的滞后性,可能错过最佳买卖时机。还有产生假信号的问题,尤其震荡行情中,均线来回突破,如果不加判断,你的程序就傻了,来回买卖,频繁交易不说,还要高买低卖。

还有一些要注意的

简单的示例就是这些了,实际情况肯定是要加多种判断,筛选的标的也不应该只有一支,这么简单的策略,如标题所说,为什么却长期可用呢?因为这种策略只会在某些时间段,某些标的上一定可用,但不会每时每刻都有效。

股票量化交易上手,一个特别简单却长期可用的交易策略,官方接口

如果调整了参数几乎可以适用于任何标的,任何时间。这类策略一般都只是作为参考,配合其它因子一起使用才行。新手练习最为合适,如果用这类策略跑回测,数据特别完美,那一定是过拟合了,千万别想当然的就以为可以赚钱,拿去跑实盘。​

股票实现程序化自动化交易的三个基础:获取数据、执行交易、查询账户。在前面的文章中都已经演示过了,以后的分享都会在此基础上做演示,如果有没编程基础,会很难理解。

量化交易需要的API接口,获取数据有很多种,执行交易和查询账户只能通过券商申请,要找个人账户可申请,入金门槛低,接入文档完善,技术支持好的。​

会编程,有基础,只是需要API接口有用,不会写程序的朋友可能需要学习或者找人代写交易策略,这不是什么现成的自动化程序。

注意啊,要么你自己会写程序,要么你找人帮你写,股票券商肯定不会帮你,再简单的需求都不会帮你写,严重违规的!

今天的分享就到这里,对股票量化程序自动交易感兴趣的朋友可以关注我,有任何相关问题也可以留言讨论或者私信与我交流!

-----

相关文章----Python炒股自动化(简版)

python炒股自动化(0),申请券商API接口

python炒股自动化(1),量化交易接口区别

Python炒股自动化(2):获取股票实时数据和历史数据

Python炒股自动化(3):分析取回的实时数据和历史数据

Python炒股自动化(4):通过接口向交易所发送订单

Python炒股自动化(5):通过接口查询订单,查询账户资产
----

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

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

相关文章

为WPF的Grid添加网格边框线

在WPF中使用Grid绘制表格的时候&#xff0c;如果元素较多、排列复杂的话&#xff0c;界面会看起来很糟糕&#xff0c;没有层次&#xff0c;这时用网格或边框线分割各元素&#xff08;标签或单元格&#xff09;将会是页面看起来整齐有条理。 默认没有边框线的如下图所示&#xf…

Rviz 复选框插件

Rviz 复选框插件 0.引言1.实现效果 0.引言 参考1参考2参考3参考4 我想做的插件是类似于 pangolin 侧面的复选框&#xff0c;动态传递 bool 值给程序内部使用。查了一下只能是通过插件的方式进行实现。但是Display 的参数在编译阶段就写死了&#xff0c;我想要在运行期给定参数…

hadoop hdfs优势和缺点

hdfs优点 高容错性适合处理大数据可构建再廉价的机器上 hdfs缺点 不适合做低延迟数据访问 毫秒级的存储数据做不到 无法高效的对大量小文件进行存储不支持并发写入 文件随机修改 一个文件只能有一个writer 不允许多个线程同时写仅支持数据追加 不支持文件的随机修改 hdf…

四川汇聚荣聚荣科技有限公司好不好?

在当今科技飞速发展的时代&#xff0c;企业要想在激烈的市场竞争中脱颖而出&#xff0c;必须具备强大的技术实力和良好的市场口碑。那么&#xff0c;作为一家专注于科技创新的公司&#xff0c;四川汇聚荣聚荣科技有限公司究竟如何呢?接下来&#xff0c;我们将从四个方面进行详…

Nginx的配置与调试

目录 1、安装Nginx 2、Nginx的配置文件结构 2.1 Nginx的全局配置 2.2 HTTP服务器配置 2.3 HttpGzip模块配置 2.4 负载均衡配置 2.5 server虚拟主机配置 2.6 location URL匹配配置 2.7 StubStatus模块配置 1、安装Nginx 在安装Nginx之前&#xff0c;需确保系统已经安装…

C++数据结构之:链List

摘要&#xff1a; it人员无论是使用哪种高级语言开发东东&#xff0c;想要更高效有层次的开发程序的话都躲不开三件套&#xff1a;数据结构&#xff0c;算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合&#xff0c;即带“结构”的数据元素的集合&am…

有效运营企业内部社区的板块有哪些?

随着企业内部沟通和协作的重要性日益凸显&#xff0c;建立一个高效运营的企业内部社区成为越来越多企业的首要任务。针对不同的需求和目标&#xff0c;将企业内部社区分为多个板块&#xff0c;可以更好地促进员工之间的沟通、协作和共享知识。下面介绍如何从分多个板块创建的角…

K8s集群调度续章

目录 一、污点&#xff08;Taint&#xff09; 1、污点&#xff08;Taint&#xff09; 2、污点组成格式 3、当前taint effect支持如下三个选项&#xff1a; 4、查看node节点上的污点 5、设置污点 6、清除污点 7、示例一 查看pod状态&#xff0c;模拟驱逐node02上的pod …

ios 端如何免费使用Emby???(利用Quantumult X )

本文转自博主的个人博客&#xff1a;https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接&#xff1a;点我访问 注意&#xff1a;使用此激活方式&#xff0c;有唯一缺点&#xff0c;在观看Emby时需保持Quantumult X为开启状态&#xff01; 一、安装证书 开启 MitM 后…

222.完全二叉树的节点个数

给出一个完全二叉树&#xff0c;求出该树的节点个数。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,4,5,6]输出&#xff1a;6 示例 2&#xff1a; 输入&#xff1a;root []输出&#xff1a;0 示例 3&#xff1a; 输入&#xff1a;root [1]输出&#xff1a;1 提示…

每日5题Day10 - LeetCode 46 - 50

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;46. 全排列 - 力扣&#xff08;LeetCode&#xff09; class Solution {//这道题就是一个dfs//把所有结果遍历&#xff0c;到叶子节点就可以添加结果了List<Int…

k8s 1.24.x之后如果rest 访问apiserver

1.由于 在 1.24 &#xff08;还是 1.20 不清楚了&#xff09;之后&#xff0c;下面这两个apiserver的配置已经被弃用 了&#xff0c;简单的说就是想不安全的访问k8s是不可能了&#xff0c;所以只能走安全的访问方式也就是 https://xx:6443了&#xff0c;所以需要证书。 - --ins…

我觉得 “砍需求” 是程序员最牛逼的本领

在下认为&#xff0c;不会 “砍需求” 的程序员不是好程序员&#xff0c;工作经验越丰富的程序员&#xff0c;砍需求的本领一般就越高。即使现在我多了一个身份 —— 管理团队&#xff0c;我也会帮开发同学去跟产品砍需求。 没错&#xff0c;从管理者的角度&#xff0c;我希望…

手机信息恢复:应对数据丢失的策略与技术

由于各种原因&#xff0c;我们经常会遭遇到手机数据丢失的困境。如何有效地应对数据丢失&#xff0c;找回那些对我们来说至关重要的信息&#xff1f;这就需要我们了解和掌握手机信息恢复的策略与技巧。本文将为您揭示信息数据恢复的奥秘&#xff0c;介绍应对数据丢失的实用方法…

爬虫案例:有道翻译python逆向

pip install pip install requestspip install base64pip install pycrytodome tools 浏览器的开发者工具&#xff0c;重点使用断点&#xff0c;和调用堆栈 工具网站&#xff1a;https://curlconverter.com/ 简便请求发送信息 flow 根据网站信息&#xff0c;preview,respon…

Mysql 8.0 主从复制及读写分离搭建记录

前言 搭建参考&#xff1a;搭建Mysql主从复制 为什么要做主从复制&#xff1f; 做数据的热备&#xff0c;作为后备数据库&#xff0c;主数据库服务器故障后&#xff0c;可切换到从数据库继续工作&#xff0c;避免数据丢失。架构的扩展。业务量越来越大&#xff0c;I/O访问频…

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域&#xff0c;开源大模型和闭源大模型一直并存&#xff0c;各自有其独特的优势和挑战。下面&#xff0c;我们将从数据隐私、商业应用和社区参与三个方向&#xff0c;对这两种模型进行深入探讨。 一、数据隐私 开源大模型&#xff1a; 1. 透明度高&#xff1a; …

使用Spring Boot编写的小项目

加法计算器 前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> <…

UE5 UE4 快速定位节点位置

在材质面板中&#xff0c;找到之前写的一个节点&#xff0c;想要修改&#xff0c;但是当时写的比较多&#xff0c;想要快速定位到节点位置. 在面板下方的 Find Results面板中&#xff0c;输入所需节点&#xff0c;找结果后双击&#xff0c;就定位到该节点处。 同理&#xff0c;…

有免费通配符证书吗?哪里可以申请?

市面上的免费SSL证书大多数为单域名证书&#xff0c;如果您的主域名拥有众多子域名&#xff0c;逐一申请单域名SSL证书不太现实&#xff0c;下面为介绍一款永久免费使用的通配符SSL证书申请流程 1 选择免费通配符证书提供商 免费通配符证书申请点击这里直接获取https://www.…