个人量化成功之路-----用代码一键画图Donchian Channel(唐奇安通道指标)

Donchian Channel(唐奇安通道指标)是用于交易突破的最古老、最简单的技术指标之一。是由Richard Donchian 提出的一个由三条线(上阻力线、下支撑线、中心线)组成的通道指标。

一般来说,唐奇安通道的宽度越宽,市场波动就越大,而唐奇安通道越窄,市场波动性也就越小。此外,价格走势可以穿过布林带,但你看不到唐奇安通道的这种特征,因为其波段正在测量特定时期的最高价和最低价

两融新开永久利率100个资金4.2%,300个4.0%

如果有任何疑问或者碰到困难不好解决,可以找下面图片。

代码(一):设定MACD指标函数,通道函数用data.rolling().max()/min()

def MACD(data,short_,long_,m):'''data是包含高开低收成交量的标准dataframeshort_,long_,m分别是macd的三个参数返回值是包含原始数据和diff,dea,macd三个列的dataframe'''data['MACD']=data['close'].ewm(adjust=False,alpha=2/(short_+1),ignore_na=True).mean()-\data['close'].ewm(adjust=False,alpha=2/(long_+1),ignore_na=True).mean()data['MACDAvg']=data['MACD'].ewm(adjust=False,alpha=2/(m+1),ignore_na=True).mean()data['MACDDiff']=2*(data['MACD']-data['MACDAvg'])data['0'] = data['MACDDiff']*0
​return data

'''通道函数'''
def highest(data, length=20):data = data.rolling(length, min_periods=1).max()return data
​
​
def lowest(data, length=20):data = data.rolling(length, min_periods=1).min()return data

代码(二):获取数据并带入MACD指标函数,通道函数


这里为了简化,使用了预先下载好的数据表,也可以替换为读取数据的代码,注意匹配dataframe中变量的名字

"""-----------------获取1小时数据-------------"""
df = pd.read_csv("rb000_1h.csv")[0:50000]
​
k_length = 4
k_A = []
"-----------4小时数据-------------"
for i in range(len(df)):if i % (k_length) == 0:k_A.append(df['close'][i])
​
k_df = pd.DataFrame(data=k_A, columns=['close'])
​
"-----------MACD------------"
macd_1 = MACD(df,12,26,9 )
macd_5 = MACD(k_df,12,26,9 )
​
"-----------1小时通道------------"
highest = highest(df['high'],20)
lowest = lowest(df['low'],20)
​
k_list_MACD = []
k_list_MACDAvg = []
k_list_MACDDiff = []
k_list_0 = []
for i in range(len(macd_1)):
​if i % k_length == 0:k_list_MACD.append(macd_5['MACD'][i // k_length])k_list_MACDAvg.append(macd_5['MACDAvg'][i // k_length])k_list_MACDDiff.append(macd_5['MACDDiff'][i // k_length])k_list_0.append(0)
.............省略..........
​
k_macd_value = pd.DataFrame(data=k_list_MACD,columns=['MACD'] )
k_macd_value['k_list_MACDAvg'] = k_list_MACDAvg
k_macd_value['k_list_MACDDiff'] = k_list_MACDDiff
k_macd_value['k_list_0'] = k_list_0

代码(三):计算交易触发信号并储存

"------------空头信号------------"
Sellshort = []
for i in range(len(df)):
​if i ==0:Sellshort.append(0)
​if i >0:if df['low'][i]<lowest[i-1] and k_macd_value['k_list_MACDAvg'][i-1]<0:Sellshort.append(-1)elif df['high'][i]>highest[i-1]:Sellshort.append(1)else:Sellshort.append(0)
​if Sellshort[i] == 0:Sellshort[i]=Sellshort[i-1]

"------------多头信号------------"
buy = []
for i in range(len(df)):
​if i == 0:buy.append(0)
​if i > 0:if df['high'][i] > highest[i - 1] and k_macd_value['k_list_MACDAvg'][i - 1] > 0:buy.append(1)elif df['low'][i] < lowest[i - 1]:buy.append(-1)else:buy.append(0)
​if buy[i] == 0:buy[i] = buy[i - 1]"------------多空开仓价格------------"
buy_entry = []
buy_exit = []
for i in range(len(df)):
​if buy[i]==1 and buy[i-1] == 0:buy_entry.append(highest[i]+1)
​if buy[i]==1 and buy[i-1] == -1:buy_entry.append(highest[i]+1)
​if buy[i] == -1 and buy[i - 1] == 1:buy_exit.append(lowest[i-1] - 1)
​
Sellshort_entry = []
Sellshort_exit = []
for i in range(len(df)):
​if Sellshort[i]==-1 and Sellshort[i-1] == 0:Sellshort_entry.append(lowest[i]-1)
​if Sellshort[i]==-1 and Sellshort[i-1] == 1:Sellshort_entry.append(lowest[i]-1)
​if Sellshort[i] == 1 and Sellshort[i - 1] == -1:Sellshort_exit.append(highest[i-1] + 1)

代码(四):对交易结果进行统计并展示

"-----统计空头累积、单笔盈亏、盈亏次数-----"
for i in range(min(len(Sellshort_entry),len(Sellshort_exit) )):
​S = S + (Sellshort_entry[i] - Sellshort_exit[i]) #-------"空总盈亏"sellshort_profit.append(Sellshort_entry[i] - Sellshort_exit[i]) #-------"空单笔盈亏"
​if sellshort_profit[i]>0:sellshort_win_times = sellshort_win_times + 1 #-------"空盈利次数"sellshort_win_profit = sellshort_win_profit + sellshort_profit[i]
​if sellshort_profit[i]<=0:sellshort_fail_times = sellshort_fail_times + 1 #-------"空亏损次数"sellshort_fail_profit = sellshort_fail_profit + sellshort_profit[i]

"-----统计多头累积、单笔盈亏、盈亏次数-----"
for i in range(min(len(buy_entry),len(buy_exit) )):
​B = B + (-buy_entry[i] + buy_exit[i]) #-------"多总盈亏"buy_profit.append(-buy_entry[i] + buy_exit[i]) #-------"多单笔盈亏"
​if buy_profit[i]>0:buy_win_times = buy_win_times + 1 #-------"多盈利次数"buy_win_profit = buy_win_profit + buy_profit[i]
​if buy_profit[i]<=0:buy_fail_times = buy_fail_times + 1 #-------"多亏损次数"buy_fail_profit = buy_fail_profit + buy_profit[i]

win_times_all = sellshort_win_times+buy_win_times
fail_times_all = sellshort_fail_times+buy_fail_times
​
win_profit_all =sellshort_win_profit+buy_win_profit
fail_profit_all =sellshort_fail_profit+buy_fail_profit
​
胜率 = win_times_all/(win_times_all+fail_times_all)
盈亏比 = win_profit_all /-fail_profit_all
​
print('累积盈亏:', win_profit_all+fail_profit_all)
print('胜率:', 胜率)
print('盈亏比:', 盈亏比)
print('盈利次数:', win_times_all)
print('亏损次数:', fail_times_all)
print('总盈利:', win_profit_all)
print('总亏损:', fail_profit_all)

总结

此模型仅仅让读者学习其思路并不能作为实盘模型。

本文所提到的观点仅代表个人的意见,所涉及标的不作推荐,据此买卖,风险自负。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ISSCC34.7解析一种具备内存编码与刷新功能的eDRAM查找表数字存内计算芯片

一、引言 1. DCIM概述 数字存内计算&#xff08;Digital Computing-in-Memory, DCIM&#xff09;是一种将计算操作直接集成到存储单元中的新兴计算架构。传统计算模型&#xff08;冯诺依曼架构&#xff09;中的计算和存储是分离的&#xff0c;数据必须频繁在存储器和处理单元…

FastDFS的docker部署及实现头像上传

FastDFS的使用并实现头像上传 一、FastDFS概述二、安装FastDFS1. 拉取镜像2. 安装tracker3. 安装storage4. NGINX服务启动三、配置和依赖配置依赖四、头像上传一、FastDFS概述 概述 上传交互过程 两个服务:Tracker Server 和Storage Server Tracker Server 跟踪服务,负责调…

UNRAID系统忘记密码解决办法

前言 unraid系统自己通过命令修改密码以后&#xff0c;怎么也进不去了。 这次带来如何重置密码 操作

着色器 简介

着色器&#xff08;Shader&#xff09;是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序&#xff0c;因为它们之间不能相互通信&#xff1b;它们之间…

C语言进阶【5】---数据在内存中的存储【2】(小数存储很难吗?)

本章概述 本章引要练习 浮点数的存储浮点数的取出小补充题目解析彩蛋时刻&#xff01;&#xff01;&#xff01; 本章引要 常见的浮点数&#xff1a;3.1415&#xff0c;1E10等。其中&#xff0c;1E10是科学计数法的形式&#xff0c;它也就等于1*10^10。小数数据类型&#xff1…

猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案

&#x1f42f; 猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案 今天猫头虎带您探讨一个开发中常见但让人头疼的错误&#xff1a;Uncaught (in promise) ReferenceError: proxy is not defined。 很多前端开发者在工作中都会遇…

中国书法—孙溟㠭浅析碑帖《爨宝子碑》

中国书法——孙溟㠭浅析碑帖《爨宝子碑》 《爨宝子碑》 全称是《晋故振威将军建宁太守爨宝子之墓》&#xff0c;此碑刻于东晋大亨四年&#xff08;公元405年&#xff09;属楷书体。 《爨宝子碑》 《爨宝子碑》 至清朝乾隆四十三年&#xff08;1778年&#xff09;在云南南宁&…

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

Σ-Δ模数转换器(ADC)揭秘(2)

5. Maxim的Σ-Δ ADC 新型高度集成Σ-Δ ADC以最少数量的外部元件处理小信号。例如&#xff0c;MAX1402芯片包括众多功能&#xff0c;被作为片上系统(图12)。器件在工作模式下的静态电流低至250A(关断模式下为2A)&#xff0c;480sps速率时的精度为16位&#xff0c;4800sps速率…

英语六级-学习

01 英语分值比例 02听力学习 听力练习&#xff0c;基础好选择标准VOA和BBC。基础差选择VOA慢速。 听力内容包括不受政治争议的内容&#xff0c;社会生活类(奇闻趣事、日常生活)、经济类(商务、职场相关)、环保类、互联网类---------根据各类主题快速找到录音材料中心点。 研…

基于YOLOv8的RTSP视频流实时目标检测与告警系统设计与实现(超详细)

前言 在训练模型完成后&#xff0c;想把模型应用起来&#xff0c;比如模型可以部署到项目中&#xff0c;实时接收RTSP视频流进行识别检测&#xff0c;一旦达到自己所设置的置信度阈值&#xff08;例如大于0.5&#xff09;&#xff0c;系统就会实时把报警信息发送给服务端&…

让银河麒麟桌面操作系统V10(SP1)允许ping测

银河麒麟桌面操作系统V10&#xff08;SP1&#xff09;使用的防火墙是kylin-firewall&#xff0c;默认情况下“公用网络”是禁ping的&#xff0c;如下图&#xff1a; 可以在“安全中心”->“网络保护”->“配置访问规则”->“专网规则”->找到“icmp”这条规则&…

减少代码错误的方法

最重要的是在写之前多举几个刁钻的例子来理解问题和代码的正确性 如果你给不出反例就说明你还没有理解&#xff08;有的反例会后来会被证明是错的&#xff09; 由于递归是把自己的和别人的相关的混合在一起来了&#xff0c;所以举反例的时候要从不同的角度出发。 求割点的&a…

二、电源滤波器

电源滤波器 1、电源滤波的过程分析! 波形形成过程: 2、计算: 滤波电容的容量和耐压值选择。 学习心得

【算法】最长公共子序列(C/C++)

最长公共子序列&#xff08;LCS&#xff0c;Longest Common Subsequence&#xff09;问题简称&#xff08;LCS&#xff09;&#xff0c;是动态规划里面里面的基础算法。它的所解决的问题是&#xff0c;在两个序列中找到一个序列&#xff0c;使得它既是第一个序列的子序列&#…

【计算机网络 - 基础问题】每日 3 题(十三)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

阿里史上最大规模开源发布,超GPT-4o 、Llama-3.1!

今天凌晨&#xff0c;阿里巴巴官宣了史上最大规模的开源发布&#xff0c;推出了基础模型Qwen2.5、专用于编码Qwen2.5-Coder和数学的Qwen2.5-Math。 这三大类模型一共有10多个版本&#xff0c;包括0.5B、1.5B、3B、7B、14B、32B和72B&#xff0c;适用于个人、企业以及移动端、P…

数字化转型的策略与执行路径

企业在明确数字化转型的目标并评估自身数字化能力之后&#xff0c;必须前瞻性地识别出实现这些目标所需的关键数字化能力。基于这些能力&#xff0c;企业应制定出一套数字化转型战略&#xff0c;确立短期和中长期的转型目标&#xff0c;确保数字技术投资带来价值&#xff0c;而…

vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总

在利用vulhub靶场搭建环境进行漏洞复现时&#xff0c;我们通常要使用这一步命令&#xff1a; docker-compose up -d 但是经常报错&#xff0c;今天我们来说几个常见的报错以及解决方法&#xff1a; 1.报错提示&#xff1a; ERROR: Couldnt connect to Docker daemon at httpdoc…

MySQL_图形管理工具简介、下载及安装(超详细)

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…