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

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

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

单均线突破策略

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

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.mzph.cn/web/18561.shtml

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

相关文章

qq音乐sign逆向

qq音乐sign参数逆向 1.概览 参数sign长度40 多次调试发现&#xff0c;前缀zzb不变 2.打日志 跟站发现是vpm&#xff0c;在apply调用打上日志断点&#xff1a; 连蒙带猜知道&#xff0c;最终字符串四部分构成&#xff0c;zzb 24DC2798 HI0TvE4tOMqzN4w88oZCjQ EE0A88FE 1.把…

C++第二十一弹---vector深度剖析及模拟实现(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、默认成员函数 2.1、构造函数 2.2、析构函数 2.3、拷贝构造函数 2.3、赋值操作符重载 3、数据访问 4、迭代器获取 总结 …

数字经济与资本市场的密切关系!

数字经济的崛起&#xff0c;如同一股强劲的东风&#xff0c;吹拂着经济社会的每一个角落&#xff01;它带来了“新领域”和“新赛道”&#xff0c;赋予了“新动能”和“新优势”&#xff0c;成为引领中国经济增长和社会发展的重要力量。如今&#xff0c;发展数字经济已上升为国…

人人都是产品经理,尼恩产品经理面试宝典(史上最全、定期更新)

《人人都是产品经理&#xff0c;尼恩产品经理面试宝典》&#xff08;史上最全、定期更新&#xff09; 本文版本说明&#xff1a;V1 IT不老新物种 的定义 大龄男IT &#xff1a;APM 架构经理 项目经理 高级开发&#xff0c;没有中年危机 大龄女IT&#xff1a;DPM 产品经理 …

为什么宋以前权臣篡位多、宋以后权臣篡位少?

时代不同&#xff0c;主要问题也不同。天下的大气候&#xff0c;自然就要左右王朝的小气候。权臣篡位&#xff0c;得先有权臣。但是&#xff0c;如果当权臣都没有了&#xff0c;又怎么可能有权臣篡位呢&#xff1f;这是一个社会基础的变化。宋以后的主要矛盾是中原和草原的争锋…

springboot+vue+mybatis jsp二手商城系统+PPT+论文+讲解+售后

随着互联网发展对各个领域的影响&#xff0c;互联网为人们的生活和工作带来了翻天覆地的变化。为了提升学校在校学生学籍管理方面的工作效率&#xff0c;实现学校在信息化方面的发展&#xff0c;提出了学校学籍管理系统。论文首先介绍了学校学生学籍管理系统的研究背景&#xf…

Mongodb 可视化工具Robot 3t安装【windows环境下】

下载应用 打开连接点我 选择windows版本并点击下载 下载完毕&#xff0c;双击并傻瓜安装 连接数据库 点击图标&#xff0c; 点击create创建连接 填写host和port 如果有用户名密码的&#xff0c;在authentication里填写 5. save 并连接即可使用&#xff01;

【深入学习Redis丨第一篇】Redis服务器部署详解

前言 小伙伴们大家好&#xff0c;我是陈橘又青&#xff0c;今天起 《深入学习Redis》 专栏开始更新。本专栏将专为希望深入了解Redis的开发者、系统架构师以及数据库爱好者而写的免费专栏。从Redis的基本概念入手&#xff0c;逐步深入到其内部实现和高级用法。希望能帮助你更好…

[ARM-2D 专题] 1.开始:基本工程搭建,编译和开发环境配置问题解决

要开始使用ARM-2D&#xff0c;前期两个准备工作需要完成&#xff1a; 一块mcu内核为cortex-M的板子&#xff0c;带显示屏&#xff08;彩色TFT屏&#xff0c;分辨率建议320x240或以上&#xff0c;带TP更佳&#xff09;。基于这个板子可以正常运行的keil MDK的工程。 好了&#…

手写promise、call、apply、debounce、throttle 等

1、promise 1.1 实现resolve和reject class MyPromise {// 构造方法constructor(executor) {// 初始化值this.initValue()// 初始化this指向this.initBind()try {// 执行传进来的函数executor(this.resolve, this.reject)} catch (e) {// 捕捉到错误直接执行rejectthis.rejec…

高铁Wifi是如何接入的?

使用PC端的朋友&#xff0c;请将页面缩小到最小比例&#xff0c;阅读最佳&#xff01; 在飞驰的高铁上&#xff0c;除了窗外一闪而过的风景&#xff0c;你是否好奇过&#xff0c;高铁Wifi信号如何连接的呢&#xff1f; 远动的火车可不能连接光纤吧&#xff0c;难道是连接的卫星…

CSS Canvas鼠标点击特效之天女散花(文本粒子动画)

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;padding: 0;w…

工控一体机10.1寸显示器电容触摸屏(YA1308101JK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA1308101JK产品介绍&#xff1a; YA1308101JK搭载 Android10 主流操作系统&#xff0c;具有系统版本更高、占用内存更低、运行效率…

【领导力SE模型影响地图】如何分辨一个管理者有没有好的领导力? ​

影响地图是以思维导图的形式&#xff0c;在业务目标和交付物之间建立起强关联。 影响地图分为四个层级&#xff1a; 第1层级&#xff1a;目标&#xff08;Why&#xff09;- 想要达成的业务目标。 第2层级&#xff1a;利益相关者&#xff08;Who&#xff09;- 谁能够帮助达成…

新能源汽车推行精益生产:绿色动力下的效率革命

在新能源汽车行业迅猛发展的当下&#xff0c;推行精益生产已成为提升竞争力的关键所在。精益生产&#xff0c;作为一种以客户需求为导向、追求流程最优化和浪费最小化的管理理念&#xff0c;正逐步在新能源汽车领域展现出其独特的魅力。 新能源汽车的兴起&#xff0c;不仅代表了…

如何本地 Debug React 源码

日常开发过程中&#xff0c;有时 debug react 源代码进行问题排查。一种方案是直接把通过 html 引入进来&#xff0c;另外一种是编译并通过 yarn 链接到项目中&#xff0c;本地将介绍如何通过这两种方法进行代码 Debug。 页面引入源代码方式 这种方式比较简单&#xff0c;直接…

眼精星和金鸣识别新增智能结构化识别,助您快速筛选和统计数据

熟悉眼精星票证识别系统或金鸣表格文字识别大师的用户都知道&#xff0c;近日&#xff0c;这二款软件同时上线了“智能结构化”功能&#xff0c;那么&#xff0c;什么是智能结构化呢&#xff1f; 准确地说&#xff0c;我们这里的智能结构化应为OCR智能结构化&#xff0c;因为它…

多家大模型公司被爆“卖身”,有创业者称接单能力很重要

百模大战下&#xff0c;行业开始“洗牌”。 据外媒《The Information》的报道&#xff0c;随着底层通用大模型格局的基本落成&#xff0c;投资者的热情正在转向支持人形机器人等其他技术。 与此同时&#xff0c;科技巨头和生成式AI的早期赢家也正在加速掀起一场新浪潮&#x…

Flink搭建

目录 一、standalone模式 二、Flink on Yarn模式 一、standalone模式 解压安装Flink [rootbigdata1 software]# tar -zxvf flink-1.14.0-bin-scala_2.12.tgz -C /opt/module/ [rootbigdata1 module]# mv flink-1.14.0/ flink-standalone 2.进入conf修改flink-conf.yaml job…

KaiwuDB 受邀出席中国智能化油气管道与智慧管网技术交流大会

导 读 5月22-24日&#xff0c;由中国石油学会石油储运专业委员会、石油工业标准化技术委员会油气储运专标委等联合主办的“第十三届中国智能化油气管道与智慧管网技术交流大会”在浙江省杭州市盛大召开&#xff0c;KaiwuDB 受邀亮相大会。浪潮院士、山东浪潮数据库技术有限公司…