判断当日是否为当月第一个交易日——时间相关函数3

news2024/11/25 14:26:01

本文介绍的函数用于判断当前交易日是否为当月的第一个交易日。

在某些策略中,可能会在每月的第一个交易日进行调仓换股。这时,就可以使用本文介绍的函数判断当日是否为当月的第一个交易日。

源码

def is_first_trading_day_of_month():
    """
    判断当日是否为当月第一个交易日
    
    :return: 如果当日为当月第一个交易日返回True,否则返回False
    """
    
    return get_trading_day().month != get_trading_day(-1).month

源码分析

函数的实现主要使用了ptrade提供的get_trading_day(),详细的介绍可以参考链接。

实现逻辑上主要是考虑周末、长假期等因素的影响,当月第一个交易日并不一定是1号。

使用当前交易日的月份数和前一交易日的月份数进行比较,若不同,则当前交易日就是当月的第一个交易日。

示例

def before_trading_start(context, data):
    log.info(is_first_trading_day_of_month())
    
    
def is_first_trading_day_of_month():
    """
    判断当日是否为当月第一个交易日
    
    :return: 如果当日为当月第一个交易日返回True,否则返回False
    """
    
    return get_trading_day().month != get_trading_day(-1).month
    

def initialize(context):
    pass
    
    
def handle_data(context, data):
    pass

这里在before_trading_start()函数内调用is_first_trading_day_of_week(),并打印出当日是否为当月第一个交易日。

ptrade提供的before_trading_start()函数,在回测中,会在每个回测交易日8:30分执行,在交易中,该函数在开启交易时立即执行,从隔日开始每天9:10分(默认)执行。

在回测模式下,我们将回测日期设置为2022-12-30(周五)至2023-01-06(周五),中间覆盖了元旦假期,输出结果如下:

2022-12-30 08:30:00 - INFO - False
2023-01-03 08:30:00 - INFO - True
2023-01-04 08:30:00 - INFO - False
2023-01-05 08:30:00 - INFO - False
2023-01-06 08:30:00 - INFO - False

从输出结果可以看到,2023-01-03(周二)是当月的第一个交易日(2022-12-31至2023-01-02是假期)。


博客内容只用于交流学习,不构成投资建议,盈亏自负!

个人博客:http://coderx.com.cn/(优先更新)
项目最新代码:https://gitee.com/sl/quant_from_scratch
欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!
如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

微信二维码微信捐赠二维码
在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

老虎证券当前股价已严重背离基本面,下半年收入将下滑

来源:猛兽财经 作者:猛兽财经 老虎证券近期股价表现优异 在过去的一个月里,老虎证券(TIGR)的股价表现令人惊叹,其估值也大幅上升。 在过去一个月里,老虎证券的股价上涨了45.0%,而同期以标普500指数为代表的…

VMWare Vcenter Server克隆虚拟机所用端口

Vcenter server 管理ESXi主机时需要用到的端口主要有443和902端口,很多文档都要求双向通信,实际上可以通过查看ESXI主机的防火墙配置了解相关端口。 1. ESXi 对外提供的端口 主要是有 vsphere Web client 服务的入站端口: TCP 902 和 TCP 4…

Javascript之Object、Array

Object.keys 对象的键转化为数组 Object.values 对象的属性值转化为数组 Object.assign 对象的合并 Array.from() 伪数组对象的属性值转化为数组。类似Object.values Array. reduce(function(prev, currentValue, currentIndex, arr), initialValue) 数组多个元素的值合并减为单…

平板第三方电容笔怎么样?便宜的ipad触控笔推荐

苹果原装的电容笔与国产的平替电容笔最大的区别在于,平替电容笔只有一个斜面压力感应,而苹果电容笔既有斜面压力感应,又有重力压力感应。但是,如果你不经常使用它来进行绘画的话,你也不必买选择这款苹果电容笔&#xf…

Acwing.800 数组元素的目标和

题目 给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i]Bi]x的数对(i, j)。 数据保证有唯一解。 输入格式 第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行…

awk 命令

语法格式: awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2}...’ filename pattern:表示 awk 在数据中查找的内容,就是匹配模式 action:在找到匹配内容时所执行的一系列命令awk常见参数选项: awk常见内置变…

❋JQuery的快速入门2 jq鼠标滚轮

onmousewheelscript当鼠标滚轮正在被滚动时运行的脚本。 主要是利用top与left进行上下移动和左右移动 【使用获取的角度正值还是负值,判断是向上还是上下滚动】 $(element).on("mousewheel", function(event){var de event.originalEvent.deltaY; //需要…

机器学习之旅-从Python 开始

你想知道如何开始机器学习吗?在这篇文章中,我将简要概括一下使用 Python 来开始机器学习的一些步骤。Python 是一门流行的开源程序设计语言,也是在人工智能及其它相关科学领域中最常用的语言之一。机器学习简称 ML,是人工智能的一…

Swift SwiftUI CoreData 过滤数据 2

预览 Code import SwiftUI import CoreDatastruct HomeSearchView: View {Environment(\.dismiss) var dismissState private var search_value ""FetchRequest(entity: Bill.entity(),sortDescriptors: [NSSortDescriptor(keyPath: \Bill.c_at, ascending: false)…

redis(4)-hiredis-API函数的调用

1.下载安装编译 windowslinuxredis下载 redis-plus-plus-master.zip文件的下载 http://download.redis.io/releases/redis-7.2.0.tar.gz tar -zxvf redis-7.2.0.tar.gz //-z:gzip属性 ;-x:解压;-v:显示;-f:文件 make make install //m…

华为2023鲲鹏应用创新大赛,实在智能“信创RPA”再获殊荣

近期,面向全球开发者的顶级赛事鲲鹏应用创新大赛2023成功举办,旨在鼓励广大开发者基于鲲鹏全栈根技术,围绕产业真实难题,共同打造基础软/硬件解决方案,吸引了1400多支团队同台竞技,贡献了一场精彩纷呈的创新…

Java小白找工作必须领悟的修仙秘籍(一)

当我们走出校园,步入社会,必须得找工作,那么作为it小白你必须拥有过硬的基础应用知识,才能慢慢的适应工作的节奏,以下内容则都是基础中的基础,需要全部进行掌握,因为这里可能有你面试时需要回答…

极坐标系下的交换积分次序

极坐标系下的交换积分次序 我把极坐标系下的交换积分次序总结为动静与静动之间的转换,下面通过一个例子感受一下 ρ 1 、 ρ 1 cos ⁡ θ \rho1、\rho1\cos\theta ρ1、ρ1cosθ ∫ 0 π / 2 d θ ∫ 1 1 cos ⁡ θ f ( ρ cos ⁡ θ , ρ sin ⁡ θ ) ρ d…

openAI发布基于ChatGPT的AI绘画模型DALL·E3,话说stable-diffusion还香吗?

前期的文章,我们介绍过stable-diffusion的相关操作,stable diffusion模型是Stability AI开源的一个text-to-image的扩散模型,其模型在速度与质量上面有了质的突破,玩家们可以在自己消费级GPU上面来运行此模型,本模型基…

2023年能跨平台同步的笔记软件

对于当今的职场人士来说,记录和管理大量的信息已经成为了日常工作中不可或缺的一部分。无论是会议笔记、读书笔记、重要工作任务还是工作注意事项,如何高效地记录和管理这些内容,成为了职场人士关注的焦点。 如何记录这些笔记内容更加简单方…

定时器的基本原理和应用

题目背景 利用51单片机的定时/计数器T0的模式1实现间隔定时,每隔1秒L1指示灯闪烁一下,也就是亮0.5秒,熄灭0.5秒;每隔10秒L8指示灯闪烁一下,也就是也就是亮5秒,熄灭5秒。 分析 计数初值。 定时/计数器&…

《C++ Primer》第5章 语句

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 5.1 简单语句(P154) 在一个表达式的末尾加上 ; 就构成了表达式语句,其作用是执行表达式并丢弃结果。 空语句 由单独的 ; 构成的语句为空语句。空语句常用于语法上需要一…

Nuget 镜像源地址过期,腾旭镜像源地址替换

Nuget过期 国内镜像源地址ssl认证过期了。Nuget无法搜索,一直还原报错 解决方法,替换腾旭镜像源地址 tencent_mirrors https://mirrors.cloud.tencent.com/nuget/

婴幼儿腹泻的原因与应对

引言: 腹泻是婴幼儿常见的健康问题之一,尤其在早期生活阶段,由于他们的消化系统尚未完全发育,容易受到各种因素的影响。腹泻不仅给婴幼儿带来不适,还可能导致脱水和营养不良。因此,了解婴幼儿腹泻的原因是…

【LeetCode刷题笔记】排序

905. 按奇偶排序数组 解题思路: 1)额外数组 两次遍历,第一遍将所有的 偶数 放到结果数组 res 的前面,第二遍将所有的 奇数 接着放到结果数组 res 的后面。也可以使用 对撞指针 往结果数组里存,在 一次遍历 内搞定。 2…