判断年内的某一天A股是否休市

本文介绍了如何确定一年中特定日期中国A股市场是否休市,涵盖了节假日与交易日的规则解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断年内的某一天A股是否休市


/*
作者:liuyukuan
微信:sunwind1576157
最新版:https://blog.csdn.net/liuyukuan/article/details/114335904
功能:判断年内某日期是否是A股开市的日子
isTrdDate(test)输入位 20210101这样格式的日期,返回值为-1,0,1 其中-1为数据错误,0为休市,1为开市
getOpeningState(test)是对isTrdDate的调用示范
*/
;示范
FormatTime,today,,yyyyMMdd
getOpeningState(today)	;今天
getOpeningState(20210101)	;休市
getOpeningState(20210104)	;开市
getOpeningState(20201231)	;数据错误
Return

getOpeningState(test)
{
	OpeningState:=isTrdDate(test)  ;不是今年的日期报错
	MsgBox  ,,%test%,% OpeningState=-1?"数据错误":OpeningState?"开市":"休市"
}


isTrdDate(day)
{
	if(day="")
		FormatTime,today,,yyyyMMdd
	else
		today:=day

	FormatTime, year,%today%,yyyy
	if(year!=A_Year)
		return -1	;不是今年的日期报错
	FormatTime, weekDay,%today%,WDay
	;weekDay 1 位数表示的当前星期经过的天数 (1-7). 在所有区域设置中 1 都表示星期天.
	if(weekDay=1 Or weekDay=7)
		return false
	;1是星期日
	;2是星期一
	;3是星期二
	;4是星期三
	;5是星期四
	;6是星期五
	;7是星期六

	isHoliday=0
	For k,v in getHoliday()
	{
		if(today=v)
		isHoliday=1
	}

	if(isHoliday=1)
		return false
	else
		return true
}

getHoliday()
{
	url:="https://www.tdx.com.cn/url/holiday/"
	source:=UrlDownloadToVar(url,"GBK")
	get=<textarea id="data" style="display:none;">
	table:=GetNestedTag(source,get)
	holiday:=[]
	loop, Parse, table, `r`n
	{
	 if InStr(A_LoopField,"深圳市场")
	 {
	  arr:= StrSplit(A_LoopField, "|")
	  holiday.push(arr[1])
	 }
	}
	return holiday
}

GetNestedTag(data,tag,occurrence="1")
{
	Start:=InStr(data,tag,false,1,occurrence)
	RegExMatch(tag,"i)<([a-z]*)",basetag)
	loop
	{
		until:=InStr(data, "</" basetag1 ">", false, Start, A_Index) + StrLen(basetag1) + 3
		Strng:=SubStr(data, Start, until - Start)
		StringReplace, strng, strng, <%basetag1%, <%basetag1%, UseErrorLevel
		OpenCount:=ErrorLevel
		StringReplace, strng, strng, </%basetag1%, </%basetag1%, UseErrorLevel
		CloseCount:=ErrorLevel
		if (OpenCount = CloseCount)
			break
		if (A_Index > 250)
		{
			strng=
			break
		}
	}
	if (StrLen(strng) < StrLen(tag))
		strng=
	return strng
}
UrlDownloadToVar(URL,Charset="",URLCodePage="",Proxy="",ProxyBypassList="",Cookie="",Referer="",UserAgent="",EnableRedirects="",Timeout=-1)
{
	ComObjError(0)
	WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	if (URLCodePage<>"")
		WebRequest.Option(2):=URLCodePage
	if (EnableRedirects<>"")
		WebRequest.Option(6):=EnableRedirects
	if (Proxy<>"")
		WebRequest.SetProxy(2,Proxy,ProxyBypassList)
	WebRequest.Open("GET", URL, true)
	if (Cookie<>"")
	{
		WebRequest.SetRequestHeader("Cookie","tuzi")
		WebRequest.SetRequestHeader("Cookie",Cookie)
	}
	if (Referer<>"")
		WebRequest.SetRequestHeader("Referer",Referer)
	if (UserAgent<>"")
		WebRequest.SetRequestHeader("User-Agent",UserAgent)
	WebRequest.Send()
	WebRequest.WaitForResponse(Timeout)
	if (Charset="")
		return,WebRequest.ResponseText()
	else
	{
		ADO:=ComObjCreate("adodb.stream")
		ADO.Type:=1
		ADO.Mode:=3
		ADO.Open()
		ADO.Write(WebRequest.ResponseBody())
		ADO.Position:=0
		ADO.Type:=2
		ADO.Charset:=Charset
		return,ADO.ReadText()
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyukuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值