百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

通达信公式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人的软件)
一键群发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

取消回复欢迎 发表评论: