通达信公式02-攻击&力量Python化代码
off999 2024-10-14 12:16 42 浏览 0 评论
1.公式
```python
TYP:=(HIGH+LOW+CLOSE)/3;
攻击:(TYP-MA(TYP,10))/(0.015*AVEDEV(TYP,10)),LINETHICK1;
力量:(TYP-MA(TYP,30))/(0.015*AVEDEV(TYP,30)),COLORYELLOW,LINETHICK2;
通达信翻译:
TYP赋值:(最高价+最低价+收盘价)/3
输出攻击:(TYP-TYP的10日简单移动平均)/(0.015*TYP的10日平均绝对偏差),线宽为1
输出力量:(TYP-TYP的30日简单移动平均)/(0.015*TYP的30日平均绝对偏差),画黄色,线宽为2
```
2.代码化处理
```python
#1.该策略数据来源于baostock
#2.相关的计算与通达信的不同,由于对于计算机等常识的不懂,所以无法调用通达信数据进行分析
#但是实际计算的结果和通达信展示的不同,故而先进行计算,看看效果。
#3.重要的一点是,该数据貌似不是用前复权数据,因为从通达信的公式导出来的数据完全没有。
#4.先用回测看一下,所以将数据导入接入进来了。
import baostock as bs
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option('expand_frame_repr',False)
#py文本名字:AttackPower.py
def dfload(code="sh.600789",startday='1990-01-01',endday='2020-01-01'):
#导入数据
lg=bs.login()
rs = bs.query_history_k_data_plus(code,
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date=startday, end_date=endday,
frequency="d", adjustflag="2")
data_list = []
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
return result
#5.由于baostock的数据导出均为object,所以需要转化
def astypedata(df):
df['high'] = df['high'].astype(float)
df['low'] = df['low'].astype(float)
df['open'] = df['open'].astype(float)
df['close'] = df['close'].astype(float)
df['date'] = pd.to_datetime(df['date'])
return df
#6.计算绝对误差值
def avedev(df):
'''
TYP:=(HIGH+LOW+CLOSE)/3;
攻击:(TYP-MA(TYP,10))/(0.015*AVEDEV(TYP,10)),LINETHICK1;
力量:(TYP-MA(TYP,30))/(0.015*AVEDEV(TYP,30)),COLORYELLOW,LINETHICK2;
金钻突破:力量-REF(力量,1)>90 OR 攻击-REF(攻击,1)>90;
由于金钻突破只有买点,没有买点,所以选择忽视,只以攻击和力量的交叉点进行判断买点卖点。
:param df:
:return:
'''
df['typ'] = (df['high'] + df['low'] + df['close']) / 3
df['avedev'] = abs(df['typ'] - sum(df['typ']) / len(df))
df['avedev10'] = df['avedev'].rolling(10).mean()
df['avedev30'] = df['avedev'].rolling(30).mean()
df['attack'] = (df['typ'] - df['typ'].rolling(10).mean()) / (0.015 * df['avedev10'])
df['power'] = (df['typ'] - df['typ'].rolling(30).mean()) / (0.015 * df['avedev30'])
df=df.fillna(0)
df=round(df,2)
return df
def sign(df):
for i in range(df.shape[0]):
if df['attack'][i]>df['power'][i] and df['attack'][i-1]<=df['power'][i-1]:
df.ix[i,'signal']=1
if df['attack'][i]<df['power'][i] and df['attack'][i-1]>df['power'][i-1]:
df.ix[i,'signal']=-1
return df
def position(df):
df['position'] = df['signal'].shift()
df['position'].fillna(method='ffill', inplace=True)
# 不能买的信号
cond_cannot_buy = df['open'] > df['close'].shift(1) * 1.097
# 将开盘涨停日、并且当天position为1时的'pos'设置为空值
df.loc[cond_cannot_buy & (df['position'] == 1), 'position'] = None
# 不能卖的信号
# 找出开盘跌停的日期
cond_cannot_sell = df['open'] < df['close'].shift(1) * 0.903 # 今天的开盘价相对于昨天的收盘价下得了9.7%
# 将开盘跌停日、并且当天position为0时的'pos'设置为空值
df.loc[cond_cannot_sell & (df['position'] == -1), 'position'] = None
# position为空的日期,不能买卖。position只能和前一个交易日保持一致。
df['position'].fillna(method='ffill', inplace=True)
# 在position为空值的日期,将position补全为0
df['position'].fillna(value=-1, inplace=True)
return df
#后面就是回测阶段,写到这里就可以了。
```
相关推荐
- 手机铃声最好听的歌(手机铃声最好听的歌曲有哪些)
-
Everythingisnotwhatitseems超喜欢这首的,绝对不会撞见跟你铃声一样的Push艾薇儿的新歌,很好听,也很适合做铃声Foreverandalways钢琴版副歌部分很好听布兰妮的3也...
- 千千静听官网(十大免费音乐网站)
-
千千静听起源于2002年,千千静听是一款完全免费的音乐播放软件,集播放、音效、转换、歌词等众多功能于一身。其小巧精致、操作简捷、功能强大的特点,深得用户喜爱,被网友评为中国十大优秀软件之一,并且成为目...
- 成品ppt网站国外(免费生成ppt的网站)
-
免费ppt成品怎么下载?不确定您要下载哪类的ppt。如果想要下载初中语文课件的话,免费成品ppt可以通过无忧无虑中学语文网下载,上面按照年级,教材版本分门别类的课件资源,教案参考,还有相应的练习题,甚...
- 免费的连连看游戏大全(连连看游戏app推荐)
-
在4399小游戏里,点击儿童小游戏,里面就有不及时的连连看。《连连看》只要将相同的两张牌用三根以内的直线连在一起消除即可。连连看,又称对对卡,是指图案配对的一种益智游戏,有多种形式,如卡片游戏、电子...
- 图片文字提取免费工具(图片文字提取免费工具在线)
-
1.打开手机,进入图库,点击打开一张图片。2.点击【分享】图标进入页面。3.点击【提取文字】。注意,只有手机已安装WPS才会出现此图标。第一种方法需要用到我们的聊天神器:QQ,进入任一聊天框并给...
-
- 一键群发500微信群软件(有没有微信一键群发5000人的软件)
-
1/8进入设置打开微信进入个人页面后,点击【设置】。2/8进入通用点击【通用】。3/8进入辅助功能点击【辅助功能】。4/8进入群发助手点击【群发助手】。5/8开始群发点击【开始群发】。6/8新建群发点击下方【新建群发】。7/8选择好友在这里...
-
2026-01-23 06:43 off999
- 万能驱动离线安装包(万能驱动离线版win10)
-
一、驱动人生()1、驱动人生为了针对用户的离线使用需求,专门推出了离线版的软件,能够在没有网络的情况下使用。2、通过内置的网卡驱动程序,帮助用户优先安装网卡驱动,进而可以连接网络并继续在网上下载安装驱...
- 中国象棋天天象棋(中国象棋天天象棋手机版)
-
天天象棋中的专区对局就是ai区,也就是软件区,专门给引擎下棋的,以前3.0版本里有,我玩过,没啥特别的,一开始匹配的都是新手,因为那个模式有独立的段位机制,后面更新之后就给禁掉了,跟ai对局没意思,还...
- 苹果恢复大师(苹果恢复大师收费吗)
-
苹果恢复大师是可靠的苹果手机数据恢复软件,兼容Windows和Mac平台,支持iOS设备上的多种数据恢复和备份,如微信聊天记录,短信,通讯录,照片等,具体操作也是十分简单。苹果恢复大师一共有三种恢复模...
- gg修改器下载安装(gg修改器下载安装免root)
-
OPPO手机下载gg修改器方法如下:可以打开在桌面找的浏览器,我们打开进入,然后再浏览器上面搜索框,搜索GG修改器,找到之后,我们点击GG修改器官网,然后就可以在GG修改器里面的官网下载了,之后我们点...
- 磁力吧最佳的磁力(磁力吧最佳的磁力是多少)
-
磁力片玩具是一种可以激发儿童创造力和想象力的玩具,市面上有许多品牌可以选择。在选择磁力片玩具时,可以考虑以下因素:品牌信誉:选择知名品牌,可以更加放心地使用。质量:质量好的磁力片玩具可以使用更长时间,...
- 文件恢复(文件恢复大师是真的吗)
-
方法一:从回收站恢复删除文件回收站是操作系统提供的一个文件夹,用来临时存放用户删除的各种数据。存放于回收站中的资料,可以被还原到删除之前的原始位置,也可以从回收站中删除。因此,回收站给用户提供了一个&...
-
- 世界公认十大手游排行榜(全球排名第一的游戏)
-
传奇十大金牌指挥:霸气王者战犯、布拉格佛祖、乱世征战英豪、传奇人物深蓝、湖北焦点、傲天メ皇霸道、湖南小三、湖南鱼刺、湖南求剑客、江西小毛拓展资料:《热血传奇》是盛趣游戏2001年推出的一款大型多人在线角色扮演游戏(MMO...
-
2026-01-23 04:15 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
linux软件(linux软件图标)
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
