`
samjavaeye
  • 浏览: 188072 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

太极线当值计算

阅读更多
# -*- coding: UTF-8 -*-    
# taiji_calc.py  
import datetime  
import sys  
  
holiday_file = '节假日.txt'
scale = 2  #默认保留两位小数点
holiday_list = []  
  
def read_holiday():  
    fobj = open(holiday_file, 'r')  
    for each_line in fobj:  
        line_list = each_line.split(',')  
        for one_day in line_list:  
            holiday_list.append(one_day.strip())  
  
def convert_date(str_date):  
    "将%Y%m%d或%m%d格式的字符串转换成Date对象,如果%m%d格式的月份大于当前月,则年份默认为去年,否则为今年"  
    today = datetime.date.today()  
    if len(str_date) == 4:  
        if int(str_date[0:2]) > today.month:  
            str_date = str(today.year - 1) + str_date  
        else:  
            str_date = str(today.year) + str_date  
    return datetime.datetime.strptime(str_date, '%Y%m%d')  
  
def workday_count(start_date, end_date):  
    "计算两个日期之间(含)包含的工作日个数"  
    date3 = start_date  
    delta1 = 0  
    while date3 < end_date:  
        date3 = date3 + datetime.timedelta(days=1)  
        if is_workday(date3):  
            delta1 += 1  
    return delta1  
  
def is_workday(theDate):  
    "判断某个日期是否是工作日"  
    str_date = datetime.date.strftime(theDate, '%Y%m%d')  
    return theDate.weekday() < 5 and holiday_list.count(str_date) == 0  
  
def covert_float2str(float_value):  
    "将浮点数转换为字符串,保留的小数位数默认为2,可以由命令行参数覆盖"  
    float_value = round(float_value, scale)
    template = '%.' + str(scale) + 'f'
    return template % float_value  

def next_day(current_day, is_forward):
    if is_forward:
        current_day = current_day + datetime.timedelta(days=1)
    else:
        current_day = current_day - datetime.timedelta(days=1)
    return current_day

def next_workday(current_day, is_forward):
    current_day = next_day(current_day, is_forward)
    while not is_workday(current_day):
        current_day = next_day(current_day, is_forward)
    return current_day

def is_same_day(day1, day2):
    return day1.year == day2.year and day1.month == day2.month and day1.day == day2.day
    
if __name__ == '__main__':  
    read_holiday()
    if len(sys.argv) >= 5:  
        date1 = convert_date(sys.argv[1])  
        va = float(sys.argv[2])  
        date2 = convert_date(sys.argv[3])  
        vb = float(sys.argv[4]) 
    else:  
        str_input = input('请依次输入A点日期、A点值、B点日期、B点值,用空格隔开(例如:1205 36.16 1213 40.28):\r\n')  
        values = str_input.split(' ')  
        date1 = convert_date(values[0])  
        va = float(values[1])  
        date2 = convert_date(values[2])  
        vb = float(values[3])  
    if len(sys.argv) >=6 :
        scale = int(sys.argv[5])  #输出的数据中,要保留的小数位数,不给参数则默认为2
    current_workday = datetime.datetime.today()
    if not is_workday(current_workday):
        current_workday = next_workday(current_workday, False)
    pre_workday = next_workday(current_workday, False)
    next_workday = next_workday(current_workday, True)
    recent_list = []
    delta1 = workday_count(date1, date2)  
    list1 = []  
    date3 = date2
    delta2 = 1  
    for i in range(1, 60):  
        date3 = date3 + datetime.timedelta(days=1)  
        if is_workday(date3):  
            vc = (vb - va) * (delta1 + delta2) / delta1 + va  
            vc1 = vc * 0.999  
            vc2 = vc * 1.001  
            str_date = date3.strftime('%Y-%m-%d')  
            output = str_date + '当值:' + covert_float2str(vc) + ' (' + covert_float2str(vc1) + '~' + covert_float2str(vc2) + ')'  
            print(output)  
            delta2 += 1
            if (is_same_day(date3, pre_workday) or is_same_day(date3, current_workday)
                or is_same_day(date3, next_workday)):
                recent_list.append(output)
    print('-----------------------------------')
    for out_info in recent_list:
        print(out_info)


分享到:
评论

相关推荐

    通达信指标公式源码 筹码趋势太极主图指标.doc

    通达信指标公式源码 筹码趋势太极主图指标.doc

    太极基于IBM WAS 数字档案系统简介

    数字档案系统是太极公司研发的以内容管理为基础的专业性档案管理系统,太极数字档案系统采用IBM WebSphere Application Server作为基础的运行支撑框架,有效保证系统整体架构的先进性、灵活性和安全性。太极数字档案...

    太极_python_太极python代码_

    用于绘画太极图像,通过代码便于了解绘画太极的代码,对于初始接触python的同学能很好;了解其中语句含义

    太极框架-模块集合下载

    太极模块的一些小功能模块的下载,如WXred包助手,改步数,企鹅红包助手,网抑模块等

    32式太极拳口令音乐mp3.mp3

    32式太极拳口令音乐mp3 《32式太极拳》所演述的即是中国武术段位制太极拳“四段”的规定套路。全套32个动作。

    太极拳理及太极拳技术分析.ppt

    太极拳理及太极拳技术分析.ppt

    太极图VB源代码

    太极图VB源代码。 用VB编写的简易太极图。

    太极计算机公司企业EAM系统简-供电侧

    太极计算机公司企业资产管理系统(EAM)解决方案-供电侧

    48式太极拳口令音乐mp3.mp3

    48式太极拳口令音乐mp3 48式太极拳是在继承与发展传统太极拳特点的同时,本着提高与普及的理念,取其精华,更加体现了动作柔和,圆活饱满,虚实分明,连绵不断的运动特点及心静体松,柔中寓刚的基本。要求,展现了它的优美,...

    太极图的二维方程描述方法

    一种用二维方程描述太极图的方法

    chirunning 太极跑

    非常难下的介绍跑步的书,有人称之为太极跑。祝IT人员多多跑步,摆脱亚健康! 长跑跑步姿势很重要。跑步姿势是一切跑步技巧的基础。在这儿,我自己总结了太极跑的思想,但是一直没法清晰化、系统化。突然,我发现了...

    基于OpenPose的太极拳姿态识别系统

    点击上传视频文件将文件传入,系统统计人数,并输出太极拳...视频中的各单位的姿势分别计算。 std.txt为标准姿态数据,ProcessImage.py用来获取图片姿态数据,Classifier.py用来实现姿态分类,GUI2-3.py为GUI界面代码

    陈氏太极拳图说简体版(陈鑫)

    有兴趣的人可以了解一下,是陈氏拳的权威拳理及解说...陈鑫(1849-1929),字品三,陈仲牲三子,陈氏第十六世,陈氏太极拳第八代传人。清末岁贡生,近代中国武术史上著名的太极拳理论家。 如是有缘人,可下载来看看。

    画太极图的C++代码实现

    绘制太极图的原理简单来说就是画两个半圆一黑一白 拼成一个正圆 再在大圆的左侧和右侧画两个恰好相切的黑圆和白圆作为突出端 最后分别在这两个突出端里面画两个一黑一白的小洞 MFC里利用void CDrawView::OnDraw CDC ...

    太极越狱工具

    1. 太极越狱Mac版V1.1.0修复了在OS X 10.9系统上部分界面无图标的问题。 2. 太极越狱V2.4.3版集成了最新Cydia1.1.23版,同时进一步优化了越狱程序。具体情况,请 查看更新日志。 3. 已使用太极V2.0.0版越狱的用户...

    迷你简太极迷你简太极

    太极。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    太极拳介绍ppt模板.rar

    太极拳ppt模板,太极拳的介绍,太极拳,武术,体育运动,太极拳介绍ppt模板。

    Android-太极·Magisk是增强版的太极

    普通版的 太极 无法作用于系统APP,并且创建 APP 需要先卸载。太极·Magisk 借助一个 magisk 模块注入系统,从而可以作用所有的 APP;可以实现 Xposed 框架的完整功能。

    高校太极拳双语教材翻译研究

    高校太极拳双语教材不仅是中华优秀传统文化国际传播的特色战略需要,也是教育服务当代社会发展功能的实践诉求。高校太极拳双语教材建设应该充分重视翻译的社会属性和文化的传播功能,其内容体系建构和翻译策略选择应以...

    四十八式太极拳教学视频.zip

    四十八式太极拳教学视频

Global site tag (gtag.js) - Google Analytics