判断年内的某一天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()
}
}