python操作csv文档记录账户回撤

一. 实现内容

将历史最高资产余额记录在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))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值