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

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

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

单均线突破策略

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

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):通过接口查询订单,查询账户资产
----

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的酒精浓度检测仪的设计

一.硬件方案 硬件部分为利用MQ3气敏传感器测量空气中酒精浓度&#xff0c;并转换为电压信号&#xff0c;经A/D转换器转换成数字信号后传给单片机系统&#xff0c;由单片机及其相应外围电路进行信号的处理&#xff0c;显示酒精浓度值以及超阈值声光报警。电路主要由51单片机最小…

自学SPSS,有哪些教学视频或书籍推荐?

书籍推荐 经过长达八年的不断迭代与优化&#xff0c;SPSSAU的用户群体已经远超简单的数据分析层面&#xff0c;而是逐步深入到了学术研究的精髓之中。如今&#xff0c;无论是在SCI、EI等国际权威学术期刊&#xff0c;还是北大核心期刊、CSSCI等国内顶尖学术期刊上&#xff0c;…

Django学习

1.pycharm社区版创建django PyCharm社区版如何创建Django项目并运行_pycharm社区版打开django-CSDN博客 2.Django TemplateDoesNotExist: rest_framework 当我们使用djangorestframework框架时&#xff0c;首先下载pip install djangorestframework 参考博文Django Templat…

LeetCode算法题:560. 和为 K 的子数组(Java)

给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2,3], …

做视频号小店和达人对接的好,爆单少不了!

大家好&#xff0c;我是喷火龙。 目前&#xff0c;视频号是没有什么自然流量的&#xff0c;所以&#xff0c;想要出单、爆单的话&#xff0c;靠达人带货的方式才是最可靠的&#xff0c;靠达人带货是肯定要对接达人&#xff0c;并和达人沟通带货的。 下面给大家讲一讲应该怎么…

Vue 前端加框 给div加红色框框 js实现

实现方式&#xff1a;用getElementsByClassName、createElement、appendChild实现在原有div上添加一个新的div&#xff0c;从而达到框选效果 <template><div><el-button click"addIten">添加</el-button><el-button click"deleteIt…

云动态摘要 2024-05-29

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线&#xff0c;为回馈新老客户&#xff0c;50万token免费送&#xff0c;开通服务即领取&#xff01; 云服…

摩尔线程MTT S4000 AI GPU助力30亿参数大模型训练,性能比肩英伟达同类解决方案

中国国产GPU制造商摩尔线程(Moore Threads)在AI加速器领域取得了显著进展&#xff0c;其最新推出的MTT S4000 AI GPU在训练大规模语言模型时表现突出&#xff0c;据称相较于其前代产品有着显著的性能提升。根据cnBeta的报道&#xff0c;搭载S4000 GPU的全新“酷鹅千卡智能计算集…

贷款借钱平台 小额贷款系统开发小额贷款源码 贷款平台开发搭建

这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码51800 数据库替换application/database.php程序采用PHPMySQL&#xff0c;thinkphp框架代码开源&#xff0c;不加密后台效果&#xff1a;手机版效果 这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码…

SAP 生产订单报工函数BAPI_PRODORDCONF_CREATE_TT不返回报错信息

最近财务一直反馈MES报工的数据都没有成本,然后去查看原因发现是财务当月的KP26的价格没有进行维护,导致没有收集到工单的报工成本。 但是在前台操作CO11 报工的时候,系统会给出报错的信息 但是我们在调用函数BAPI_PRODORDCONF_CREATE_TT的时候,系统并没有返回报错的信息…

【Qt秘籍】[005]-Qt的首次邂逅-创建

一、如何创建文件&#xff1f; 当我们打开Qt Creator&#xff0c;你会发现整个界面类目繁多。现在&#xff0c;让我们直接开始新建一个项目。 1.点击左上角的“文件”>点击“新建文件或项目” 2.如图&#xff0c;选择“Application”>“Qt Wifgets application”> “…

C++ list类

目录 0.前言 1.list介绍 1.1优势 1.2劣势 1.3容器属性 2.list使用 2.1构造函数 2.1.1默认构造函数 2.1.2填充构造函数 2.1.3范围构造函数 2.1.4拷贝构造函数 2.1.5初始化列表构造函数 2.2迭代器 2.2.1 begin() 2.2.2 end() 2.2.3 cbegin() 2.2.4 cend() 2.2.…

Sectigo证书介绍以及申请流程

Sectigo (原Comodo CA)是全球SSL证书市场占有率最高的CA公司&#xff0c;目前将近40%的SSL证书用户选择了Sectigo。由于其产品安全&#xff0c;价格低&#xff0c;受到大量站长的信任和欢迎。Sectigo旗下的SSL证书品牌包括Sectigo, Positive SSL, Sectigo Enterprise等。 品牌…

AI虚拟试穿革命:I2VEdit技术引领电商视频内容创新

在当今快速迭代的电子商务领域,用户体验与内容创新是企业竞争力的核心要素。随着AI技术的飞速进步,AI虚拟试穿已不再局限于静态图像,而是迈向了动态视频的新纪元。本文将深入解析一项革新性技术——I2VEdit,如何以其独到之处,为电商尤其是服装零售行业带来一场内容创作与产…

RAG 高级应用:基于 Nougat、HTML 转换与 GPT-4o 解析复杂 PDF 内嵌表格

一、前言 RAG&#xff08;检索增强生成&#xff09;应用最具挑战性的方面之一是如何处理复杂文档的内容&#xff0c;例如 PDF 文档中的图像和表格&#xff0c;因为这些内容不像传统文本那样容易解析和检索。前面我们有介绍过如何使用 LlamaIndex 提供的 LlamaParse 技术解析复…

手摸手教你uniapp原生插件开发

行有余力,心无恐惧 这篇技术文章写了得有两三个礼拜,虽然最近各种事情,工作上的生活上的,但是感觉还是有很多时间被浪费.还记得几年前曾经有一段时间7点多起床运动,然后工作学习,看书提升认知.现在我都要佩服那会儿的自己.如果想回到那种状态,我觉得需要有三个重要的条件. 其…

安卓赤拳配音v1.0.2Ai配音神器+百位主播音色

Ai配音神器 本人自用版本&#xff01;超级稳定&#xff01;百位主播音色 登陆即可用 链接&#xff1a;https://pan.baidu.com/s/1WVsrYZqLaPAriHMMLMdPBg?pwdz9ru 提取码&#xff1a;z9ru

【数据结构与算法 | 链表篇】力扣876

1. 力扣876 : 链表的中间节点 (1). 题 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表…

设计模式详解(六):适配器模式——Adapter

目录导航 适配器模式及其作用现实生活举例 适配器模式的好处适配器模式的实现关系图实现步骤 适配器模式的适用场景适配器模式示例 适配器模式及其作用 适配器模式是一种结构型设计模式。所谓结构型是指在代码结构方面的设计模式。适配器模式作为中间层&#xff0c;可以让交互…

Lightweight Robust Size Aware Cache Management——论文泛读

TOC 2022 Paper 论文阅读笔记整理 问题 现代键值存储、对象存储、互联网代理缓存和内容交付网络&#xff08;CDN&#xff09;通常管理不同大小的对象&#xff0c;例如&#xff0c;Blob、不同长度的视频文件、不同分辨率的图像和小文件。在这种工作负载中&#xff0c;大小感知…