Chinaunix

标题: 股票机代码修改了一下 [打印本页]

作者: xti9er    时间: 2009-05-17 23:00
标题: 股票机代码修改了一下
#!/user/bin/perl -w

#By xti9er www.xtiger.net

use LWP::Simple;
use Color::Output;
Color::Output::Init;

$|=1;
my $fst=0;
my $stimeout;
my $googleq="";
my $nowsc=0;
my (@scode,@sc,@spr);

START:
system("cls");
`title  --= M y  S t o c k  S c r e e n e r =--`;
cprin("\tM y  S t o c k  S c r e e n e r\n\n",7);
cprin("_"x60,13);
if($fst==0)
{
    cprin("\n程序开始初始化",13);
    my @gettime=localtime();
&nbsp;&nbsp;&nbsp;&nbsp;if($gettime[2]>15 or $gettime[2]<9){$stimeout=1}
&nbsp;&nbsp;&nbsp;&nbsp;else{$stimeout=0}

&nbsp;&nbsp;&nbsp;&nbsp;open(ST,"st.ini") or die $!;
&nbsp;&nbsp;&nbsp;&nbsp;while(my $info=<ST>)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chomp($info);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next if $info=~/^#/;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($scode,$sc,$spr)=split(/=/,$info);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(@scode,$scode);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(@sc,$sc);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(@spr,$spr);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;$allst=scalar(@scode);
&nbsp;&nbsp;&nbsp;&nbsp;$fst=1;

for(@scode)
{
&nbsp;&nbsp;&nbsp;&nbsp;if(my $nowcode=getcode($_))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$googleq=$googleq."id-$nowcode,";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print ".";
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;else{next;}
}
&nbsp;&nbsp;&nbsp;&nbsp;#print "$googleq\n";

&nbsp;&nbsp;&nbsp;&nbsp;goto START;
}

sub getcode
{
&nbsp;&nbsp;&nbsp;&nbsp;my $newst=shift;
&nbsp;&nbsp;&nbsp;&nbsp;my $nowcode=get("http://www.google.cn/finance?q=$newst");
&nbsp;&nbsp;&nbsp;&nbsp;if($nowcode=~/<span\sclass=\"pr\"\sid=\"ref_(\d+)_l\"\>/)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $1;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;
}

print "
\n当前时间:".scalar(localtime())."\n";
cprin("
_"x60,13);

if(my $googled=get("
http://www.google.cn/finance/info?q=$googleq&infotype=infoquoteall&hl=zh-CN&gl=cn"))
{
&nbsp;&nbsp;&nbsp;&nbsp;my @info=split(/\,/,$googled);
&nbsp;&nbsp;&nbsp;&nbsp;print "
\n股票码\t开盘价\t成本价\t持有量\t",$stimeout=0?"当前价\t":"收盘价\t","涨跌\t盈亏\t名称\n";
&nbsp;&nbsp;&nbsp;&nbsp;for my $newinfo(@info)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#print "
$newinfo\n";&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$nowsc=0 if $nowsc>$allst-1;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($newinfo=~/\"(.*)\"\s\:\s\"(.*)\"/)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $infot=$1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $infoc=$2;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next if $infot=~/avvo|ccol|l_cur|lt|fwpe|beta|lo52|hi52/;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#print "
$infot=$infoc\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($infot eq "
t"){$t=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($infot eq "
op"){$op=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if($infot eq "
hi"){$hi=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if($infot eq "
lo"){$lo=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($infot eq "
l"){$l=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($infot eq "
cp"){$cp=$infoc}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($infot eq "
lname"){$lname=$infoc}&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($infot eq "
type")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
$t\t";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
$op\t";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#cprin("
$hi\t",($hi-$op)>0?5:7);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#cprin("
$lo\t",($lo-$op)>0?5:7);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
$spr[$nowsc]\t";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
$sc[$nowsc]\t";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cprin("
$l\t",($l-$op)>0?5:7);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cprin("
$cp\t",$cp>0?5:7);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $gl=int($sc[$nowsc] * ($l-$spr[$nowsc]));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cprin("
$gl\t",$gl>0?5:7);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
$lname\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print "
-----------\n";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$nowsc++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}
else
{
&nbsp;&nbsp;&nbsp;&nbsp;cprin("
\n[!] GetInfo Fail\n",5);
}

sleep 10;
goto START;

sub cprin
{
&nbsp;&nbsp;&nbsp;&nbsp;($str,$i)=@_;
&nbsp;&nbsp;&nbsp;&nbsp;cprint("
\x03" . $i . " $str\x030
);}


##############################


新增加功能:
1、配置文件st.ini
内容格式如下:
##########################
#股票代码=成本价=持有量
600000=****=39.513
600022=****=4.169
600690=****=10.186
##########################

2、根据配置文件中的关注股票和持有信息,计算当前盈利状况


上次发的代码,很多朋友提了不少建议。有些呢实现起来不现实,比如K线图,那是需要长期的数据作为支持的。
还有些功能,也懒得写,因为我不需要。说实话,没多少时间搞这些没什么产出的东西。大家如果觉得合适用呢,可以拿去用。我不会再改了。

[ 本帖最后由 xti9er 于 2009-5-17 23:07 编辑 ]
作者: hindos512    时间: 2009-06-16 10:59
标题: 回复 #1 xti9er 的帖子
程序有个小错误,修改了一下
第60行。
    if($nowcode=~/<span\sclass=\"pr\"><span\sid=\"ref_(\d+)_l\"\>/)
作者: gaochong    时间: 2009-06-16 11:05
标题: 回复 #1 xti9er 的帖子
顶!!!学习!!!


但你也用了goto,很多人不建议用goto,不知道为什么。
作者: xti9er    时间: 2009-06-16 22:48
原帖由 gaochong 于 2009-6-16 11:05 发表
顶!!!学习!!!


但你也用了goto,很多人不建议用goto,不知道为什么。



才懒得矫情那些呢,我不是程序员不在乎,不是商用以及企业用的代码不在乎。
作者: hitsubunnu    时间: 2009-06-17 00:06
方便的话 能提供一下google股票api的说明或链接吗?
作者: xti9er    时间: 2009-06-17 14:27
没有文档和链接,估计google暂时也未必愿意提供,这个好像还是试验性质的。

我做的过程,都是自己抓包分析的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2