【量化交易】顶底分型策略

在众多的量化策略中,顶底分型策略因其独特的市场趋势捕捉能力和简洁的实现方式而受到许多投资者的青睐。本文将详细介绍顶底分型策略的原理,并展示如何使用Python在聚宽平台上实现这一策略。
感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流!

顶底分型策略概述

顶底分型是一种基于价格行为的技术分析方法,由市场分析师Bill Williams提出。该策略认为价格行为可以形成特定的模式,这些模式能够预示市场趋势的转变。顶分型和底分型是两种基本的价格模式:

  • 顶分型:在上升趋势的末端出现,预示着可能的下跌趋势。顶分型由三根连续的K线组成,其中第二根K线的高点高于第一根和第三根K线的高点。
  • 底分型:在下降趋势的末端出现,预示着可能的上升趋势。底分型同样由三根连续的K线组成,其中第二根K线的低点低于第一根和第三根K线的低点。

顶底分型策略的实现步骤

在聚宽平台上实现顶底分型策略,我们需要按照以下步骤进行:

  1. 初始化策略参数:设置策略的基本参数,如K线周期、顶底分型确认的K线数量等。
  2. 计算顶底分型:根据历史K线数据计算可能的顶分型和底分型。
  3. 确认顶底分型:根据一定的规则确认顶分型和底分型的成立。
  4. 生成交易信号:根据确认的顶底分型生成买入和卖出信号。
  5. 执行交易:根据交易信号在市场中执行买卖操作。

策略参数初始化

在策略开始前,我们需要设置一些基本的参数,这些参数将影响顶底分型的计算和确认。

# 初始化参数
g.n = 5  # 用于计算分型的K线数量

计算顶底分型

接下来,我们需要编写函数来计算顶分型和底分分型。这个函数将遍历历史K线数据,并找出可能的顶分型和底分型。

# 计算顶底分型
def calculate_fractals(data):highs = data['high']lows = data['low']tops = []bottoms = []for i in range(len(highs) - g.n):if highs[i] < highs[i + 1] and highs[i + 1] > highs[i + 2]:tops.append((i + 1, highs[i + 1]))if lows[i] > lows[i + 1] and lows[i + 1] < lows[i + 2]:bottoms.append((i + 1, lows[i + 1]))return tops, bottoms

确认顶底分型

计算出可能的顶底分型后,我们需要确认这些分型是否成立。顶分型的确认通常需要后续的K线低点低于顶分型的高点,而底分型的确认则需要后续的K线高点高于底分型的低点。

# 确认顶底分型
def confirm_fractals(data, tops, bottoms):confirmed_tops = []confirmed_bottoms = []for i, top in tops:if i + 1 < len(data) and data[i + 1]['low'] < top:confirmed_tops.append(top)for i, bottom in bottoms:if i + 1 < len(data) and data[i + 1]['high'] > bottom:confirmed_bottoms.append(bottom)return confirmed_tops, confirmed_bottoms

生成交易信号

有了确认的顶底分型后,我们可以生成交易信号。当确认顶分型时,我们可能会考虑卖出或做空;当确认底分型时,我们可能会考虑买入或做多。

# 生成交易信号
def generate_signals(security, confirmed_tops, confirmed_bottoms, portfolio, order):for top in confirmed_tops:order(security, -1)  # 卖出for bottom in confirmed_bottoms:order(security, 1)  # 买入

执行交易

最后,我们需要在策略的交易函数中调用上述函数,并执行交易。

# 交易函数
def trade(context):stock_data = attribute_history(context.security, g.n + 1, '1d', ['open', 'high', 'low', 'close'], skip_paused=True)tops, bottoms = calculate_fractals(stock_data)confirmed_tops, confirmed_bottoms = confirm_fractals(stock_data, tops, bottoms)generate_signals(context.security, confirmed_tops, confirmed_bottoms, context.portfolio, order_target)

策略测试与优化

在实际应用顶底分型策略之前,我们需要对策略进行充分的测试和优化。这包括但不限于:

  • 历史回测:使用历史数据对策略进行回测,评估策略在过去的表现。
  • 参数优化:调整策略参数,如K线周期和确认分型所需的后续K线数量,以优化策略的表现。
  • 风险管理:考虑交易成本、滑点等因素,并设置止损点和仓位管理规则,以控制风险。

总结

顶底分型策略是一种基于价格行为的量化交易策略,它通过识别市场趋势的转折点来生成交易信号。通过Python在聚宽平台上实现这一策略,我们可以自动化交易过程,提高交易效率。
感兴趣的朋友,可以在下方公号内回复:001,即可获取源码,共同交流!
市场有风险,交易需谨慎。

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

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

相关文章

GNU Radio Radar Toolbox编译及安装

文章目录 前言一、GNU Radio Radar Toolbox 介绍二、gr-radar 安装三、具体使用四、OFDM 雷达仿真 前言 GNU Radio Radar Toolbox&#xff08;gr-radar&#xff09;是一个开放源码的工具箱&#xff0c;用于 GNU Radio 生态系统&#xff0c;主要目的是为雷达信号处理提供必要的…

vue源码解析——diff算法/双端比对/patchFlag/最长递增子序列

虚拟dom——virtual dom&#xff0c;提供一种简单js对象去代替复杂的 dom 对象&#xff0c;从而优化 dom 操作。virtual dom 是“解决过多的操作 dom 影响性能”的一种解决方案。virtual dom 很多时候都不是最优的操作&#xff0c;但它具有普适性&#xff0c;在效率、可维护性之…

Leetcode 3111. Minimum Rectangles to Cover Points

Leetcode 3111. Minimum Rectangles to Cover Points 1. 解题思路2. 代码实现 题目链接&#xff1a;3111. Minimum Rectangles to Cover Points 1. 解题思路 这一题在这次比赛的4道题当中算是比较简单的&#xff0c;基本就只需要将所有的点排序之后然后使用贪婪算法来cover住…

【C++造神计划】运算符

1 赋值运算符 赋值运算符的功能是将一个值赋给一个变量 int a 5; // 将整数 5 赋给变量 a 运算符左边的部分叫作 lvalue&#xff08;left value&#xff09;&#xff0c;右边的部分叫作 rvalue&#xff08;right value&#xff09; 左边 lvalue 必须是一个变量 右边 rval…

木马免杀代码之python反序列化分离免杀

本篇文章主要用到python来对CobaltStrike生成的Shellcode进行分离免杀处理, 因此要求读者要有一定的python基础, 下面我会介绍pyhon反序列化免杀所需用到的相关函数和库 exec函数 exec函数是python的内置函数, 其功能与eval()函数相同, 但不同的是exec函数支持多行python代码…

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升 新戊二醇&#xff08;NPG&#xff09;又称为2,2-二甲基-1,3-丙二醇&#xff0c;化学式为C5H12O2&#xff0c;熔点为124-130℃。新戊二醇多表现为一种无特殊气味的白色结晶固体&#xff0c;易溶于水及醇、醚等溶液。新戊二醇…

为什么看到这么多人不推荐C++?

前几天逛知乎的时候&#xff0c;看到一个问题&#xff1a; 看到这个问题我倒是想吐槽几句了。 C一直没找到自己的定位&#xff01; C语言&#xff1a;我是搞系统编程开发的&#xff0c;操作系统、数据库、编译器、网络协议栈全是我写的。 PHP&#xff1a;我是搞后端业务开发…

docker compose安装及安装慢解决办法

docker compose安装 Compose下载添加执行权限创建软链测试安装结果 Compose下载 curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose上述compose是在docker官方git…

一年期SSL证书怎么申请?

申请SSL证书三步走 JoySSL_JoySSL SSL证书_JoySSL https证书-JoySSL 一、选证书类型 根据网站性质与安全需求&#xff0c;选定合适的SSL证书&#xff1a; - 域名验证证书&#xff08;DV&#xff09;&#xff1a;快速验证域名所有权&#xff0c;适用于个人网站、博客&#xff…

ReentrantLock源码阅读

1. 概述 lock锁, 基于队列同步器AQS, 实现公平锁、非公平锁 队列同步器AQS可以阅读我这篇文章&#xff1a; 点击传送 实现了Lock接口: public class ReentrantLock implements Lock// 加锁 获取不到锁一直等待 void lock(); // 加锁 获取不到锁一直等待 等待过程可以被中断…

websocket原理及简单入门

在了解websocket之前,我们先来了解一下websocket出现之前的世界 当我们在开腾讯会议或视频通话时,我们自己的影像会传给对方,对方的影像也能同时传给我们,这就是即时通讯技术 即时通讯技术是实现&#xff1a;服务器端可以时地将数据的更新或变化反应到客户端&#xff0c;在Web中…

Python中操作Excel表对象并打包为脚本

一、准备工作 pip install pandas pip install openpyxl pip install pyinstaller 数据表格&#xff1a; 数据表下载 二、执行写入操作 import pandas as pd # pyinstaller --onefile attendance_records_score.py # 打包 # 读取源Excel文件&#xff08;假设源表有列A…

【攻防世界】php_rce (ThinkPHP5)

进入题目环境&#xff0c;查看页面信息&#xff1a; 页面提示 ThinkPHP V5&#xff0c;猜测存在ThinkPHP5 版本框架的漏洞&#xff0c;于是查找 ThinkPHP5 的攻击POC。 构造 payload: http://61.147.171.105:50126/?sindex/think\app/invokefunction&functioncall_user_f…

【Go语言快速上手(一)】 初识Go语言

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. Go语言简介(为…

模拟Android系统Zygote启动流程

版权声明&#xff1a;本文为梦想全栈程序猿原创文章&#xff0c;转载请附上原文出处链接和本声明 前言&#xff1a; 转眼时间过去了10年了&#xff0c;回顾整个10年的工作历程&#xff0c;做了3年的手机&#xff0c;4年左右的Android指纹相关的工作&#xff0c;3年左右的跟传感…

什么是三次握手和四次握手

三次握手和四次挥手是TCP协议中用于建立和终止TCP连接的重要机制。 三次握手是TCP连接建立的过程&#xff0c;具体步骤如下&#xff1a; 客户端发送一个带有SYN标志的数据包给服务端&#xff0c;表示希望建立连接。服务端收到后&#xff0c;回传一个带有SYN/ACK标志的数据包&…

亚马逊CloudFront使用体验

前言 首先在体验CloudFront之前&#xff0c;先介绍一下什么是CDN&#xff0c;以及CDN的基本原理。 CDN是Content Delivery Network&#xff08;内容分发网络&#xff09;的缩写&#xff0c;是一种利用分布式节点技术&#xff0c;在全球部署服务器&#xff0c;即时地将网站、应…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.6 年初操作:科目余额结转

2.6.6 年初操作&#xff1a;科目余额结转 在使用事务代码 FAGLB03 查询科目余额时&#xff0c;可以看到按期间的发生额清单。其中&#xff0c;第一行称为“余额结转”&#xff0c;该行的累计余额代表上年度遗留下来的余额&#xff0c;也就是年初余额。对于资产负债表科目而言&a…

【QT教程】QT6图形视图编程

QT6图形视图编程 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…

七大设计原则

在软件开发的领域中&#xff0c;随着技术的不断进步和市场需求的不断变化&#xff0c;软件系统的设计和维护变得越来越重要。为了确保软件系统能够长期有效地运行&#xff0c;并且能够在未来的发展中适应新的需求和技术变化&#xff0c;提高软件系统的可维护性和可复用性成为了…