一. 实现内容:
将历史最高资产余额记录在csv文档中,每日余额收盘前进行对比,
1.如果大于历史数据,则写入csv文档记录,返回“new high”;
2.如果小于历史数据,则计算回撤比例,返回具体百分数;
输入今日余额,返回对应结果。
二. 实现效果:
效果截图如下:
三. 所需环境:
python环境+windows
代码+csv文件
代码如下:
#实现文本写入,文本读取,
#实现定期写入日期及剩余金额,以及max日期和金额,
#写入日期金额时,打印最大回撤百分比,或者突破新高。
def highDrawdown(today):
import csv,time
#1.读取文件内历史高位数据
with open(r'./test.csv', encoding='utf-8')as f:
reader = csv.reader(f)
next(reader)
for row in reader:
max = float(row[1])
#2.对比当前余额,更新数据or计算回撤
if (today > max):
#末尾追加写入,文件必须已存在
with open(r'./test.csv',mode='a',newline='',encoding='utf-8') as cfa:
wf = csv.writer(cfa)
wf.writerow([time.strftime('%Y-%m-%d',time.localtime(time.time())), today])
return ('new high')
else:
data = 1-(today/max)
return ('%.2f%%' % (data * 100))
if __name__ == "__main__":
today = 260
print(highDrawdown(today))
# =============================================================================
# #初始化模拟
# #对csv文件进行写入操作,mode='w'表示操作模式为只写,如文件不存在则自动创建文件覆盖写入
# with open(r'./test.csv',mode='w',newline='',encoding='utf-8') as cf:
# wf=csv.writer(cf)
# wf.writerow(['date', 'money'])
# data = [['16:33:52', '100'], ['16:33:53', '120']]
# for i in data:
# wf.writerow(i)
# =============================================================================
csv截图:
大概就是这样子啦,可以复用到一键清仓,实现自动止损功能。
补:
#实现文本写入,文本读取,
def highDrawdown(today):
import csv,time
#1.读取文件内历史高位数据
with open(r'./test.csv', encoding='utf-8')as f:
reader = csv.reader(f)
next(reader)
for row in reader:
max = float(row[1])
#2.对比当前余额,更新数据or计算回撤
if (today > max):
#末尾追加写入,文件必须已存在
with open(r'./test.csv',mode='a',newline='',encoding='utf-8') as cfa:
wf = csv.writer(cfa)
wf.writerow([time.strftime('%Y-%m-%d',time.localtime(time.time())), today])
return ('new high')
else:
data = 1-(today/max)
return '距离前高'+row[0]+'已回撤'+('%.2f%%' % (data * 100))
if __name__ == "__main__":
today = 280
print(highDrawdown(today))