双均线量化交易策略指南

策略原理

采用两条不同周期的简单移动平均线(SMA):

  • 短期均线:5日线(快速反应价格变化)
  • 长期均线:20日线(反映长期趋势)

交易信号生成规则

当 5日线 > 20日线 → 买入信号
当 5日线 < 20日线 → 卖出信号

Python实现模块

1. 数据获取模块

import yfinance as yfdef fetch_stock_data(ticker, start_date, end_date):"""获取股票历史数据参数:ticker -- 股票代码 (例:'AAPL')start_date -- 开始日期 (格式:'YYYY-MM-DD')end_date -- 结束日期"""return yf.download(ticker, start=start_date, end=end_date)

2. 策略计算模块

def calculate_signals(data, short_window=5, long_window=20):"""计算双均线和交易信号参数说明:short_window -- 短期均线周期(默认5日)long_window -- 长期均线周期(默认20日)"""data['SMA5'] = data['Close'].rolling(short_window).mean()data['SMA20'] = data['Close'].rolling(long_window).mean()data['Signal'] = np.where(data['SMA5'] > data['SMA20'], 1, -1)return data

3. 回测引擎

def backtest_strategy(data, initial_capital=1000000):"""策略回测模块参数:initial_capital -- 初始资金(默认100万)"""position = 0capital_curve = [initial_capital]for i in range(1, len(data)):if data['Signal'][i-1] == 1 and position == 0:position = capital_curve[-1] / data['Close'][i]capital_curve.append(position * data['Close'][i])elif data['Signal'][i-1] == -1 and position != 0:capital_curve.append(capital_curve[-1])position = 0else:capital_curve.append(position * data['Close'][i] if position else capital_curve[-1])return pd.Series(capital_curve, index=data.index)

可视化分析

import matplotlib.pyplot as pltplt.figure(figsize=(12,6))
plt.plot(data['Close'], label='收盘价', alpha=0.5)
plt.plot(data['SMA5'], label='5日均线', linestyle='--')
plt.plot(data['SMA20'], label='20日均线', linestyle='-.')
plt.scatter(data[data['Signal'].diff() != 0].index, data['Close'][data['Signal'].diff() != 0], c=data['Signal'][data['Signal'].diff() != 0].map({1:'g', -1:'r'}),marker='^', s=100)
plt.title('双均线策略交易信号可视化')
plt.legend()
plt.savefig('strategy_visualization.png', dpi=300, bbox_inches='tight')

策略优化建议

参数调优组合

组合名称短期均线长期均线适用场景
激进型3日10日高波动市场
平衡型5日20日趋势行情
保守型10日50日长线投资

改进方向

  1. 增加交易成本计算(佣金、滑点)
  2. 结合波动率过滤避免震荡行情
  3. 添加止损止盈机制
  4. 多品种回测验证策略普适性

使用示例

if __name__ == "__main__":# 获取数据data = fetch_stock_data('AAPL', '2020-01-01', '2023-12-31')# 计算策略strategy_data = calculate_signals(data)# 执行回测results = backtest_strategy(strategy_data)# 展示结果print(f"累计收益率:{(results[-1]/1000000-1)*100:.2f}%")

注意事项

❗ 实际交易需考虑以下因素:

  • 避免在开盘价跳空时执行信号
  • 不同品种参数需重新优化
  • 回测存在过拟合风险
  • 需定期进行策略再平衡

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

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

相关文章

视频太大?用魔影工厂压缩并转MP4,画质不打折!

在日常生活中&#xff0c;我们常常需要将视频文件转换成不同的格式以适应各种设备或平台的播放需求。魔影工厂作为一款功能强大且操作简单的视频转换工具&#xff0c;深受用户喜爱。本文中简鹿办公将手把手教你如何使用魔影工厂将视频转换为MP4格式&#xff0c;并进行个性化设置…

大腾智能 PDM 系统:全生命周期管理重塑制造企业数字化转型路径

在当今激烈的市场竞争中&#xff0c;产品迭代速度与质量已成为企业生存与发展的核心命脉。面对客户需求多元化、供应链协同复杂化、研发成本管控精细化等挑战&#xff0c;企业亟需一套能够贯穿产品全生命周期的数字化解决方案。 大腾智能PDM系统通过构建覆盖设计、研发、生产、…

CodeBuddy一腾讯内部已有超过 85% 的程序员正在使用de编程工具

大家好&#xff0c;我是程序员500佰&#xff0c;目前正在前往独立开发路线&#xff0c;我会在这里分享关于编程技术、独立开发、技术资讯以及编程感悟等内容。 如果本文能给你提供启发和帮助&#xff0c;还请留下你的一健三连&#xff0c;给我一些鼓励&#xff0c;谢谢。 本文直…

解锁 Zblog 资讯系统:502 错误修复与双域名适配的实战秘籍

在网络世界的激烈竞争中&#xff0c;资讯类网站如同战场上的士兵&#xff0c;每一次页面加载、每一次内容展示都关乎着用户的留存与转化。而 Zblog 作为备受青睐的资讯系统&#xff0c;承载着众多站长的流量梦想。然而&#xff0c;在网站运营过程中&#xff0c;502 错误页面的突…

今日打卡,Leetcode第四题:寻找两个正序数组的中位数,博主表示就会sorted

4. 寻找两个正序数组的中位数 博主只会第一个暴力解法&#xff0c;然后将官网上的源码上添加些注释&#xff0c;尝试理解&#xff0c;分下今日刷题记录 题目描述 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个…

Jouier 普及组十连测 R3

反思 首先&#xff0c;先悔恨一下这次的比赛成绩。 这次比赛的教训就是&#xff0c;简单的题目一定要打不要被复杂的题面震慑到&#xff0c;以及变量名不能是保留字&#xff0c;如第一题的x1,y1&#xff0c;要开long long&#xff0c;计算好数据范围&#xff0c;如第三第四题。…

Open CASCADE学习|非线性方程组求解技术详解

引言 在几何建模与工程计算中&#xff0c;非线性方程组的求解是常见的核心问题。Open CASCADE&#xff08;以下简称OCC&#xff09;作为开源的几何建模内核&#xff0c;提供了丰富的数学工具库&#xff0c;其中math_FunctionSetRoot类专为求解非线性方程组设计。本文将深入探讨…

科技初创企业创新推动商业未来

在这个因变革而蓬勃发展的世界里&#xff0c;科技初创企业已成为各行业创新、颠覆与转型的驱动力。这些雄心勃勃的企业正在重塑商业格局&#xff0c;挑战既定规范&#xff0c;并不断突破可能性的边界。本文将深入探索科技初创企业的精彩领域&#xff0c;探讨它们如何通过创新塑…

霍尼韦尔HMR2300-D00-485数字模块

型号&#xff1a;HMR2300-D00-485 类型&#xff1a;数字通信模块&#xff08;RS-485接口&#xff09; 制造商&#xff1a;霍尼韦尔&#xff08;Honeywell&#xff09;&#xff0c;隶属于其工业自动化或楼宇自动化产品线。 典型用途&#xff1a; 用于扩展主控制器&#xff08;如…

如何在 Windows 11 或 10 上更改 WIFI 或以太网 MAC 地址?

无论你使用的是哪种操作系统,更改 MAC 地址在各种场景中都有其益处。每个网卡的 MAC 地址都是唯一的,由网络适配器在出厂时就已经分配完成;它帮助系统在物理网络上进行通信,并为其提供身份识别。然而,如果你出于某种合法原因想要更改 Windows 上的当前 MAC 地址,那么我们…

Python语法特点与编码规范

注释 单行注释 把#号当做注释符号 多行注释 python中并没有规定多行注释标记&#xff0c;通常使用单引号作为多行注释 中文注释 规定文件所用编码&#xff0c;当时是为解决python2不支持中文的问题 #codingutf-8代码缩进 python采用代码缩进和冒号区分代码层次&#xff0c…

跟Gemini学做PPT:字号选择

字号的选择对于 PPT 的可读性和视觉效果至关重要。以下是一些通用的建议和针对你具体情况的字号选择指南&#xff1a; 通用字号选择原则&#xff1a; 对比度&#xff1a; 文字颜色与背景颜色形成高对比度&#xff0c;确保易读。字体&#xff1a; 选择清晰、专业的字体&#x…

【JVM 03-JVM内存结构之-虚拟机栈】

虚拟机栈 笔记记录 1. 定义1.1 演示栈帧 2. 特点3. 线程运行诊断3.1 案例1 cpu占用过多&解决3.2 案例2 程序运行很长时间没有结果 4. 拓展知识&问题辨析4.1 栈的内存越大越好嘛&#xff1f;(不是)4.2 方法内的局部变量是否线程安全&#xff1f;(是线程安全的)4.2.1 局部…

文章记单词 | 第104篇(六级)

一&#xff0c;单词释义 keyboard /ˈkiːbɔːrd/ n. 键盘underlying /ˌʌndərˈlaɪɪŋ/ adj. 潜在的&#xff1b;根本的&#xff1b;基础的June /dʒuːn/ n. 六月tactics /ˈtktɪks/ n. 战术&#xff1b;策略&#xff1b;手段south /saʊθ/ n./adj./adv. 南方&#x…

中宏立达与天空卫士达成战略合作

战略合作篇 中宏立达-天空卫士 2025年5月23日&#xff0c;中宏立达与天空卫士在中宏立达集团总部北京丽金智地中心正式签署战略合作协议。中宏立达总经理王博先生与天空卫士高级副总裁兼首席运营官巩文坚先生代表双方签署协议。这标志着两家领军企业在数字安全领域的深度合作正…

RxJS 高阶映射操作符详解:map、mergeMap 和 switchMap

1. map 操作符 map 是最基本的转换操作符&#xff0c;用于对 Observable 发出的每个值进行一对一转换。 基本特点&#xff1a; 同步操作一对一转换不改变 Observable 的发出时机 详细示例&#xff1a; import { of } from rxjs; import { map } from rxjs/operators;// 示…

基于stm32的多旋翼无人机(Multi-rotor UAV based on stm32)

由于一直在调试本项目&#xff0c;好久没有发文章&#xff0c;最近本项目的PID调试初见成效&#xff01;开始正文前首先感谢各位粉丝的支持&#xff0c;以及对本项目技术上支持的老师以及师兄&#xff0c;谢谢你们&#xff01; 对应源码及文件&#xff1a;源码及文件下载 基于…

量子传感器:开启微观世界的精准探测

随着量子技术的飞速发展&#xff0c;量子传感器逐渐成为前沿科技领域的热门研究方向。量子传感器利用量子力学的特性&#xff0c;能够实现对物理量的极高精度测量&#xff0c;其应用范围涵盖了基础科学研究、医学诊断、环境监测以及国防安全等多个领域。本文将深入探讨量子传感…

河道管网排口在线监测系统解决方案

一、方案概述 我国作为世界上河流数量最为丰富的国家之一&#xff0c;拥有众多历史悠久的壮阔江河流域。然而&#xff0c;伴随经济社会的迅猛发展&#xff0c;河湖管理与保护面临诸多新挑战&#xff0c;诸如河道干涸、湖泊萎缩、水环境恶化以及河湖功能退化等问题&#xff0c;对…

Foldseek快速蛋白质结构比对

1. 下载和安装 Foldseek 如果只是单个蛋白质结构的序列比对&#xff0c;我们只需要用Foldseek 的网站服务 https://search.foldseek.com/search 上传我们的蛋白质结构并选择想要进行比对的数据库即可&#xff0c;这里不做重点讲解。做生物信息学研究&#xff0c;我们难免需要批…