`
samjavaeye
  • 浏览: 194543 次
  • 性别: 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)


分享到:
评论

相关推荐

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

    例如,可以创建一个黑色的`CPen`对象`blackPen`,设置其样式为实心线,并指定RGB颜色值(0,0,0)代表黑色;同时创建一个黑色的`CBrush`对象`blackBrush`,使用`CreateSolidBrush`函数填充黑色。同样地,为白色创建...

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

    通达信指标公式源码 筹码趋势太极主图指标 本文将详细解释通达信指标公式源码中的各个知识点,并对其进行详细的讲解。 首先,我们来看一下VAR21和VAR33这两个变量的定义: VAR21:=BACKSET(REF(HIGH,2)=HHV(HIGH,5...

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

    边界是太极图的最外层,阴阳分割线是太极图的中轴线,鱼眼是太极图的中心点。在数学上,我们可以将太极图的边界和阴阳分割线表示为零值边界,而鱼眼可以表示为无穷大极限。 为了描述太极图的二维方程,我们可以使用...

    太极_python_太极python代码_

    在Python编程语言中,"太极_python_太极python代码_"这个标题暗示了我们将探讨如何使用Python来绘制太极图,这是一种常见的图形艺术,同时也是一种很好的实践项目,可以帮助初学者更好地理解Python的基本语法和流程...

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

    陈氏太极拳图说简体版是太极拳领域的重要文献,其原作者为近代著名的太极拳理论家陈鑫(1849-1929),字品三。陈鑫是陈氏太极拳第十六世传人、第八代传人,他将自己对太极拳的深刻理解和丰富实践心得著述成书。...

    通达信指标公式源码量学经典主图指标.doc

    5. 明日太极当值1、明日太极当值2:这两个变量用于计算某些特定的技术指标,分别是太极当值1+(太极当值1-REF(太极当值1,1))和太极当值2+(太极当值2-REF(太极当值2,1))。这些指标可能与某些特定的市场事件或经济指标...

    用程序画太极

    首先,我们需要理解太极图的基本结构:一个黑白相间的圆,中间有一条S形的分界线,两侧各有一个鱼眼状的黑色和白色区域。分界线上有两个相对的点,表示阴阳交汇。编程时,我们可以通过坐标系统来定位这些元素,使用...

    太极图VB源代码

    太极图的制作还会涉及到坐标系统和几何计算,VB提供了Point、Rect等函数帮助处理这些任务。此外,可能还需要用到一些图形操作技巧,比如透明度设置,使得太极图的边缘过渡更为自然。 VB中的事件驱动编程是另一个...

    安卓自定义View:太极

    本文将深入探讨如何使用2D绘图技术来实现一个动态旋转的太极图形,这涉及到Android的Canvas、Paint以及动画原理等多个知识点。 首先,让我们了解Android中的Canvas。Canvas是Android提供的2D图形绘制的基础,它提供...

    基于Kinect 2.0的八式太极拳动作评价智能系统研发.pdf

    "基于Kinect 2.0的八式太极拳动作评价智能系统研发.pdf" Kinect 2.0是一种基于深度摄像机的motion sensing技术,可以捕捉用户的动作信息和骨架信息。基于Kinect 2.0的八式太极拳动作评价智能系统研发,旨在研发一个...

    计算机图形学(MFC)-太极图

    在MFC中,CDC类封装了DC的功能,提供了丰富的绘图方法,如画线、填充区域等。 实现太极图的第一步是创建一个CView派生类,并重写OnDraw函数。在这个函数中,我们将利用CDC类的方法来绘制太极图。可以使用MoveTo和...

    vb时尚编编程—太极图源代码

    6. 绘制太极符号:在太极图的黑白两部分,有两条相互缠绕的S形线,这需要使用DrawCurve或DrawBezier方法来实现。 7. 清理和显示:最后,清除不必要的绘图标记,显示绘制的太极图。 在VB中,图形绘制通常涉及...

    Android-Android太极Loading

    4. **性能优化**:为了保证在各种设备上都能流畅运行,可能采用了硬件加速、避免过度绘制、减少不必要的计算等方式进行性能优化。 5. **属性动画**:Android提供了Property Animation系统,使得动画更加灵活,可能...

    太极神器-全网各种资源免费爬取下载

    太极软件是一款功能全面的资源获取工具,专为追求便捷与高效的用户设计。它支持全网免费爬取图片、音乐、小说、学习资源及漫画资源,涵盖娱乐、教育与信息等多个领域。用户只需简单操作,即可快速搜索并下载所需内容...

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

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

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

    【四十八式太极拳教学视频】 四十八式太极拳是一种融合了中国传统武术精髓的健身运动,它在太极拳原有的基础上,结合了多种拳式的精妙动作,旨在提高身体的协调性、灵活性和内在力量。此套教学视频是为了帮助初学者...

    Android 太极(免Root框架)

    太极是一个能够运行 Xposed 模块的框架,模块能通过它改变系统和应用的行为。太极既能以传统的 Root/刷机方式运作,也能免 Root/ 免刷机运行;并且它支持 Android 5.0 ~ 12。 简单来说,太极就是一个 类Xposed框架...

    Android 太极工具箱 v1.1.4 吾爱出品工具软件

    现在的工具箱app也挺多,太极工具箱是一款来自吾爱大佬原创开发,完全纯净且免费,绝对好用。太极工具箱是吾爱的[nightwish12075]原创开发的安卓工具箱类app,软件大小13M左右,没有任何广告,没有任何三方链接。 ...

    数字孪生-太极开发者平台软件

    在太极开发者平台上,这种技术被广泛应用于工程设计、工业制造、城市管理等多个领域。 1. **数字孪生的概念与构成** 数字孪生是将物联网、大数据、云计算、人工智能等技术相结合,对真实物体或系统进行数字化映射...

    关于太极框架进行虚拟WIFI的使用举例飞书4.0(附带旧版本飞书链接).doc

    ### 关于太极框架进行虚拟WIFI的使用举例与飞书4.0操作指南 #### 工作原理 太极框架能够实现虚拟WIFI的功能主要是通过修改应用程序(APP)的基础架构来达到目的。它允许用户在不改变原生系统环境的情况下运行经过...

Global site tag (gtag.js) - Google Analytics