这个脚本其实很简单,使用了PS V2.0的New-WebServiceProxy命令,然后调用一个免费的股票在线查询交易平台WSDL接口,可惜免费的始终是免费的,24小时内这个免费的平台接口对多使用次数不能超过250次。
脚本对交易的数据作了美化修饰以此达到接近传统股票交易软件的数据信息界面。例如凡是涨幅用红色,跌幅用绿色显示。方法很简单只需要提取需要比较的数据然后与昨日该股票的收盘价格比较。 另外需要稍加注意的是关于对数字的处理,因为股票价格包含百分比,负数等,需要做合适的转型处理。
最后写了一个方法将股票查询代号传入方法即可,需要注意的是,股票分深圳,上证等,所以需要以类似sh000001,sz000001前缀开头。最后脚本会以设定的时间每个20秒刷新一次信息。
$stockName="sh600546","sz000998"
#****************************************************
# Desgin by: Anders Wang
# Description: Check stock information.
#****************************************************
#============Defined Output Color============
function OutGreen
{process{Write-Host $_ -ForegroundColor Green}}
function OutRed
{process{Write-Host $_ -ForegroundColor Red}}
#============================================
function Search-Stock($number)
{
$Stock = New-WebServiceProxy -Uri http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl
$info=$Stock.getStockInfoByCode($number)
Write-Host "证劵:"$info[1]"("$info[0].Substring(2,6)")"
Write-Host "时间:"([datetime]$info[2]).GetDateTimeFormats()[-23]
Write-Host "最新:" -NoNewline
if($info[3] -lt $info[4])
{$info[3]|OutGreen}
else
{$info[3]|OutRed}
Write-Host "开盘:" -NoNewline
if($info[5] -lt $info[4])
{$info[5]|OutGreen}
else
{$info[5]|OutRed}
Write-Host "昨收:"$info[4]
Write-Host "涨跌:" -NoNewline
if([double]$info[6] -gt 0)
{$info[6]|OutRed}
else
{$info[6]|OutGreen}
Write-Host "涨幅:" -NoNewline
$percent = $info[9]
if([double]($percent.SubString(0,$percent.length-1)) -lt 0)
{$info[9]|OutGreen}
else
{$info[9]|OutRed}
Write-Host "最低:" -NoNewline
if($info[7] -lt $info[4])
{$info[7]|OutGreen}
else
{$info[7]|OutRed}
Write-Host "最高:" -NoNewline
if($info[8] -lt $info[4])
{$info[8]|OutGreen}
else
{$info[8]|OutRed}
Write-Host "委比:" -NoNewline
$percent = $info[14]
if([double]($percent.SubString(0,$percent.length-1)) -lt 0)
{$info[14]|OutGreen}
else
{$info[14]|OutRed}
Write-Host
Write-Host "卖⑤:" -NoNewline
$sell5 = $info[24] -split "/ "
if($sell5[0] -lt $info[4])
{$sell5[0]|OutGreen}
else
{$sell5[0]|OutRed}
Write-Host "卖④:" -NoNewline
$sell4 = $info[23] -split "/ "
if($sell4[0] -lt $info[4])
{$sell4[0]|OutGreen}
else
{$sell4[0]|OutRed}
Write-Host "卖③:" -NoNewline
$sell3 = $info[22] -split "/ "
if($sell3[0] -lt $info[4])
{$sell3[0]|OutGreen}
else
{$sell3[0]|OutRed}
Write-Host "卖②:" -NoNewline
$sell2 = $info[21] -split "/ "
if($sell2[0] -lt $info[4])
{$sell2[0]|OutGreen}
else
{$sell2[0]|OutRed}
Write-Host "卖①:" -NoNewline
$sell1 = $info[20] -split "/ "
if($sell1[0] -lt $info[4])
{$sell1[0]|OutGreen}
else
{$sell1[0]|OutRed}
Write-Host
Write-Host "买①:" -NoNewline
$buy1 = $info[15] -split "/ "
if($buy1[0] -lt $info[4])
{$buy1[0]|OutGreen}
else
{$buy1[0]|OutRed}
Write-Host "买②:" -NoNewline
$buy2 = $info[16] -split "/ "
if($buy2[0] -lt $info[4])
{$buy2[0]|OutGreen}
else
{$buy2[0]|OutRed}
Write-Host "买③:" -NoNewline
$buy3 = $info[17] -split "/ "
if($buy3[0] -lt $info[4])
{$buy3[0]|OutGreen}
else
{$buy3[0]|OutRed}
Write-Host "买④:" -NoNewline
$buy4 = $info[18] -split "/ "
if($buy4[0] -lt $info[4])
{$buy4[0]|OutGreen}
else
{$buy4[0]|OutRed}
Write-Host "买⑤:" -NoNewline
$buy5 = $info[19] -split "/ "
if($buy5[0] -lt $info[4])
{$buy5[0]|OutGreen}
else
{$buy5[0]|OutRed}
}
$stockName="sh600546","sz000998"
for($s=0;$s -le 600;$s++)
{
Start-Sleep -Seconds 30
foreach($i in $stockName)
{
Search-Stock ("$i")
Write-Host ===============
}
}
运行界面如下: