File Coverage

blib/lib/App/Chart/Suffix/AX.pm
Criterion Covered Total %
statement 15 17 88.2
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 21 23 91.3


line stmt bran cond sub pod time code
1             # Australian Stock Exchange setups.
2              
3             # Copyright 2007, 2008, 2009, 2015, 2016 Kevin Ryde
4              
5             # This file is part of Chart.
6             #
7             # Chart is free software; you can redistribute it and/or modify it under the
8             # terms of the GNU General Public License as published by the Free Software
9             # Foundation; either version 3, or (at your option) any later version.
10             #
11             # Chart is distributed in the hope that it will be useful, but WITHOUT ANY
12             # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13             # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14             # details.
15             #
16             # You should have received a copy of the GNU General Public License along
17             # with Chart. If not, see <http://www.gnu.org/licenses/>.
18              
19             package App::Chart::Suffix::AX;
20 1     1   382 use 5.006;
  1         3  
21 1     1   5 use strict;
  1         2  
  1         16  
22 1     1   4 use warnings;
  1         1  
  1         20  
23 1     1   216 use URI::Escape;
  1         1077  
  1         53  
24 1     1   310 use Locale::TextDomain ('App-Chart');
  1         17051  
  1         5  
25              
26 1     1   5520 use App::Chart;
  0            
  0            
27             use App::Chart::Sympred;
28             use App::Chart::TZ;
29             use App::Chart::Weblink;
30             use App::Chart::Weblink::SandP;
31              
32             use App::Chart::Google;
33             use App::Chart::Yahoo;
34              
35             # no good, stuck at 5 Aug 08
36             # use App::Chart::Float;
37              
38              
39             # http://au.finance.yahoo.com/indices
40             # and on the ^AT symbols must avoid ^ATX in VI.pm
41             #
42             # ^AXJO
43             # ^AXPJ -- and more ^AX
44             # ^AORD -- all ords
45             # ^ATLI -- asx 20
46             # ^AFLI -- asx 50
47             # ^ATOI -- asx 100
48             #
49             our $pred_indexes = App::Chart::Sympred::Regexp->new
50             (qr/^\^A(X|ORD|TLI|FLI|TOI)/);
51             our $pred_shares = App::Chart::Sympred::Suffix->new ('.AX');
52              
53             my $pred_any = App::Chart::Sympred::Any->new ($pred_shares, $pred_indexes);
54             App::Chart::TZ->sydney->setup_for_symbol ($pred_any);
55              
56             # App::Chart::setup_source_help
57             # ($pred_any, __p('manual-node','Australian Stock Exchange'));
58             # while nothing ASX specific ...
59             App::Chart::setup_source_help
60             ($pred_any, __p('manual-node','Yahoo Finance'));
61              
62             # ordinary shares like NAB.AX, not prefs like NABHA.AX
63             my $pred_ordinaries = App::Chart::Sympred::Regexp->new (qr/^.{0,3}\.AX$/);
64              
65             # but no "spreadsheet format" for ASX, just the weblink for now
66             $App::Chart::Google::google_web_pred->add ($pred_ordinaries);
67              
68              
69              
70              
71             # See http://www.asx.com.au/resources/education/basics/trading_hours_asx.htm
72             # SEATS takes changes only between 7am and 7pm
73             # 5pm to 7pm is only amend/cancel, no new orders, which is unlikely to be
74             # too interesting, but update during that anyway
75             # (yahoo-quote-lock! australia-symbol?
76             # #,(hms->seconds 7 0 0) #,(hms->seconds 19 0 0))
77             #
78             # ;; Yahoo index values are based on last trades, so they only update during
79             # ;; trading 10:00 to 16:06. Not sure if they update for after hours
80             # ;; broker-to-broker trades 16:06 to 17:00, allow for that by locking only
81             # ;; after 17:00.
82             # (yahoo-quote-lock! yahoo-index-symbol-australia?
83             # #,(hms->seconds 10 0 0) #,(hms->seconds 17 0 0))
84              
85              
86             #------------------------------------------------------------------------------
87             # weblink - ASX company info
88             # But is bloated by 1.5mbytes of script crap.
89             #
90             # http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode=ANZ
91              
92             App::Chart::Weblink->new
93             (pred => $pred_shares,
94             name => __('ASX _Company Information'),
95             desc => __('Open web browser at the Australian Stock Exchange page for this company (bad javascript bloat)'),
96             proc => sub {
97             my ($symbol) = @_;
98             $symbol = App::Chart::symbol_sans_suffix($symbol);
99              
100             # As of Feb 2009 the info search doesn't accept a pref or convertible
101             # note symbol like "NABHA", only the issuing company "NAB", so prune
102             # accordingly.
103             $symbol = substr($symbol,0,3);
104              
105             return
106             'http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode='
107             . URI::Escape::uri_escape($symbol);
108             });
109              
110             #------------------------------------------------------------------------------
111             # weblink - S&P index info
112              
113             my %sandp_table
114             = ('^AORD' => 'asxallo',
115             '^ATLI' => 'asx20',
116             '^AFLI' => 'asx50',
117             '^ATOI' => 'asx100',
118             '^AXJO' => 'asx200',
119             '^AXKO' => 'asx300',
120             '^AXMD' => 'asxmc50',
121             '^AXSO' => 'asxsmo',
122              
123             # sectors, only one shared page
124             '^AXEJ' => 'asxsec', # Energy
125             '^AXMJ' => 'asxsec', # Materials
126             '^AXNJ' => 'asxsec', # S&P ASX 200 Industrials
127             '^AXDJ' => 'asxsec', # S&P ASX 200 Consumer Discretionary
128             '^AXSJ' => 'asxsec', # S&P ASX 200 Consumer Staples
129             '^AXHJ' => 'asxsec', # S&P ASX 200 Health Care
130             '^AXFJ' => 'asxsec', # S&P ASX 200 Financials
131             '^AXIJ' => 'asxsec', # S&P ASX 200 Information Technology
132             '^AXTJ' => 'asxsec', # S&P ASX 200 Telecommunication Services
133             '^AXUJ' => 'asxsec', # S&P ASX 200 Utilities
134             '^AXPJ' => 'asxsec', # S&P ASX 200 Property Trusts
135             '^AXXJ' => 'asxsec', # S&P ASX 200 Financial-x-Property Trusts
136             );
137              
138             App::Chart::Weblink::SandP->new
139             (url_pattern => 'http://www2.standardandpoors.com/portal/site/sp/{lang}/page.topic/indices_{symbol}/2,3,2,8,0,0,0,0,0,0,0,0,0,0,0,0.html',
140             symbol_table => \%sandp_table);
141              
142              
143             1;
144             __END__
145              
146              
147              
148              
149              
150             # Other Sites:
151             #
152             # eoddata.com -- pay
153             # www.tradingroom.com.au -- gone to afr.com with login required
154             # findata.co.nz -- ASX past 30 days, incl prefs, but login to download more
155             #
156             # asxhistoricaldata.com
157             # week's worth of all shares zipped like (about 80 kbytes) back to 1997
158             # http://www.asxhistoricaldata.com/wp-content/uploads/week20160429.zip
159             # monthly and yearly files before recent weeks
160             # ordinaries only, no prefs
161             #
162             # http://www.cooltrader.com.au
163             # Register, free 10am next day, renew annually, daily csv files.
164             #
165             # barchart.com includes ASX, but register for historical maybe
166             #
167             # http://www.smh.com.au/business/markets/quotes/price-history/BHP/bhp-billiton-limited
168             # http://www.smh.com.au/business/markets/quotes/price-history/BHP/bhp-billiton-limited?page=2
169             # HTML table of recent prices and page to go back, about 100k each month
170             # Maybe only selected top ordinaries