免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xti9er
打印 上一主题 下一主题

我的股票机 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2010-02-23 16:42 |只看该作者
good,但是有一点不明白

my @info=split(/\,/,$googled->as_string);

\,为什么能够匹配到{,,,,,},{,,,,,}两个花括号之间的","呢?

论坛徽章:
0
42 [报告]
发表于 2010-02-24 15:43 |只看该作者
楼主的程序很好很强大。

不过google的链接好像修改了,该程序我不能正常运行。

把楼主的程序做了一点修改,可以正常使用,如图。如果大家有兴趣,我可以编译成可执行程序分发给大家作用。

论坛徽章:
0
43 [报告]
发表于 2010-02-24 16:09 |只看该作者
呵呵,挺有心的。

分享的话,可以直接贴代码

再搞这个就快成开源项目了

论坛徽章:
0
44 [报告]
发表于 2010-02-24 16:47 |只看该作者
回复 42# iamlimeng
我现在试了一下没有问题,不知道楼主说的不能用是什么状况。

论坛徽章:
0
45 [报告]
发表于 2010-02-25 09:02 |只看该作者
http://www.google.cn/finance/info?q=id-690158,id-684321,id-684268,id-697176,id-702734,id-684353,id-709933,id-706853,id-690427,id-697980&infotype=infoquoteall&hl=zh-CN&gl=cn

我运行时,从这个链接获得的反馈是Bad Request,而不是希望得到的股票信息。但可以改为直接输股票代码正确获取反馈。

http://www.google.cn/finance/info?q=000100,600502,&infotype=infoquoteall&hl=zh-CN&gl=cn

我没弄清GOOGLE的指令,望达人指教。

论坛徽章:
0
46 [报告]
发表于 2010-02-25 09:07 |只看该作者
还有一个问题,股票名称因为是中文,在我的平台上无法正常显示,需要ENCODE处理才能正常。

XP+ACTIVE PERL 5.10

论坛徽章:
0
47 [报告]
发表于 2010-02-25 11:52 |只看该作者
做了一点小的修改,增加计算总盈利额功能,版面按我的审美观调整了一下,运行结果见我上一贴的图,希望楼主别介意:

#!/usr/bin/perl -w

use LWP::Simple;
use Color::Output;
use Encode qw/ encode /;

Color::Output::Init;

my $refresh = 15;      #设置刷新频率,单位为秒
my $width = 77;        #设置横线宽度
$|=1;
my $fst=0;
my $stimeout;
my $googleq="";
my $nowsc=0;
my (@scode,@sc,@spr);

START:
system("cls";
&gettime;
`title 股市行情`;
cprin("\n\t\t\t\t\    股 市 行 情\n",7);
cprin("-"x$width,13);
if($fst==0)
{
    cprin("\n 程序初始化...",13);
    $stimeout = ($time>1500 || $time<915)?1:0;

    open(ST,"MyStock.ini" or die $!;
    while(my $info=<ST>
    {
        chomp($info);
        next if $info=~/^#/;
        my ($scode,$sc,$spr)=split(/=/,$info);
        push(@scode,$scode);
        push(@sc,$sc);
        push(@spr,$spr);
        $googleq .= "$scode,";
        print ".";
    }
    $allst=scalar(@scode);
    $fst=1;
    goto START;
}

print "\n\t\t\t当前时间: $now\n";
cprin("-"x$width,13);

if(my $googled=get("http://www.google.cn/finance/info?q=$googleq&infotype=infoquoteall&hl=zh-CN&gl=cn")
{
    my @info=split(/\,/,$googled);
    print "\n\n 股票码\t开盘价\t最高价\t涨跌(%)\t",$stimeout==0?"当前价\t":"收盘价\t","成本价\t持有量\t盈利额\t股票名称\n";
    my $profit = 0;
    for my $newinfo(@info)
    {
        #print "$newinfo\n";
        $nowsc=0 if $nowsc>$allst-1;
        if ($newinfo=~/\"(.*)\"\s\:\s\"(.*)\"/)
        {
            my $infot=$1;
            my $infoc=$2;
            next if $infot=~/avvo|ccol|l_cur|lt|fwpe|beta|lo52|hi52/;
            #print "$infot=$infoc\n";
            if($infot eq "t"{$t=$infoc}
            if($infot eq "op"{$op=$infoc}
            if($infot eq "hi"{$hi=$infoc}
            #if($infot eq "lo"{$lo=$infoc}
            if($infot eq "l"{$l=$infoc}
            if($infot eq "cp"{$cp=$infoc}
            if($infot eq "lname"){$lname= encode("gb2312",$infoc)}

            if ($infot eq "type")
            {
                print " $t\t";
                print "$op\t";
                cprin("$hi\t",($hi-$op)>0?5:7);
                #cprin("$lo\t",($lo-$op)>0?5:7);
                cprin("$cp\t",$cp>0?5:7);
                cprin("$l\t",($l-$op)>0?5:7);
                print "$spr[$nowsc]\t";
                print "$sc[$nowsc]\t";
                my $gl=int($sc[$nowsc] * ($l-$spr[$nowsc]));
                cprin("$gl\t",$gl>0?5:7);
                print "$lname\n";
                $profit += $gl;
                $nowsc++;
            }
        }
    }
    print "\n";
    cprin("-"x$width,13);
    cprin("\n 总盈利额:  $profit 元\n\n ",($profit)>0?5:7);
}
else
{
    cprin("\n [!] GetInfo Fail\n",5);
}

my $n = $refresh;
while ($n-- > 0) {
        print ".";
        sleep 1;
}
goto START;

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

sub gettime {
        my @days = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
        my ($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$savinglightday) = (localtime(time));
        $sec = ($sec < 10)? "0$sec"sec;
        $min = ($min < 10)? "0$min"min;
        $hour = ($hour < 10)? "0$hour"hour;
        $day = ($day < 10)? "0$day"day;
        $mon = ($mon < 9)? "0".($mon+1)$mon+1);
        $year += 1900;
        $now = "$year.$mon.$day $hourminsec $days[$weekday]";
        $time = "$hour$min";
}

需要一个配置文件MyStock.ini,放在程序所在目录,格式如下例:

#股票代码=持有量=成本价
600004=6200=11.07
600359=900=16.95
600507=4700=11.35
600673=11600=9.36
000598=1200=13.06
000998=2000=21.6
002345=0=39

论坛徽章:
0
48 [报告]
发表于 2010-03-10 17:00 |只看该作者
    ;   )
    :    (
:$   

论坛徽章:
0
49 [报告]
发表于 2010-03-10 19:04 |只看该作者
本帖最后由 Ray001 于 2010-03-11 11:58 编辑

http://www.google.cn/finance/info?q=id-690158,id-684321,id-684268,id-697176,id-702734,id-684353,id-709933,id-706853,id-690427,id-697980&infotype=infoquoteall&hl=zh-CN&gl=cn

这个访问不了啊?仙子救命!

论坛徽章:
0
50 [报告]
发表于 2010-03-10 19:45 |只看该作者
一堆&nbsp;换个代码框试试?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP