NAME
Finance::Shares::greater_less - Compare two lines, value by value
SYNOPSIS
Two examples of how to specify a comparison line, one showing the minimum required and the other illustrating all the possible fields.
use Finance::Shares::Model;
use Finance::Shares::greater_less;
my @spec = (
...
lines => [
...
minimal => {
function => 'greater_less',
lines => ['line1', 'line2'],
},
full = {
function => 'greater_less',
graph => 'Stock Prices',
gtype => 'price',
lines => ['line1', 'line2'],
key => 'line 1 > line 2',
style => { ... },
shown => 1,
order => -99,
min => 300,
max => 400,
decay => 0.9,
ramp => -10,
},
...
],
samples => [
...
one => {
lines => ['full', 'minimal'],
...
}
],
);
my $fsm = new Finance::Shares::Model( @spec );
$fsm->build();
DESCRIPTION
This module is depreciated
Use test code instead. The following example highlights price lows where the closing price > opening price.
lines => [
result => {
function => 'mark',
}
],
tests => [
gt => 'mark($result, $low) if $close > $open;'
],
sample => {
test => gt
}
The next example draws lines at 0 and 100 on a level
graph, simulating the result of this module. [Note the seperating comma after the test END.]
lines => [
result => {
function => 'mark',
gtype => 'level',
style => {
line => {
width => 2,
},
},
},
],
tests => <<'END'
if (defined $close) {
if ($close > $open) {
mark($result, 100);
} else {
mark($result, 0);
}
}
END
,
sample => {
test => 'default',
}
If you really need it
Two lines are compared and a results line is produced showing high where the value of the first is greater than the second and low where it is not. If one of the values is undefined, the result is undefined.
By default the result line will be placed on the level
graph, but it can appear anywhere. Normally the high and low levels are given suitable positions on the axis, but these can be specified.
Where the comparison stays the same, the resulting line can be made to decrease over time.
OPTIONS
To get the line to appear, there must be an entry within the lines block of a Finance::Shares::Model specification. See SYNOPSYS for examples.
The entry must have a function field, greater_less
, and a line or lines field indicating two source lines.
function
Required. Must be greater_less
.
line or lines
Required. An array ref listing two lines. The result is high if the first line is greater than the second.
graph
If present, this should be a tag declared as a charts
resource. It identifies a particular graph within a chart page. A gtype is implied.
gtype
This specifies the type of graph the function lines should appear on. It should be one of price
, volume
, analysis
or level
. (Default: level
)
key
This provides the opportunity to identify the line in the Key panel, next to the style.
order
The entries on the graph are sorted according to this value, which defaults to the order required for calculation. A large integer will bring the line to the front and a negative number will put it behind all the rest.
Examples
- -1
-
The line goes behind the data.
- 0.5
-
In front of the data, but only just.
- 999
-
Probably the top line.
shown
1 for the line to be shown, 0 hides it. (Default: 1)
style
This is normally a hash ref defining the data's appearance. See PostScript::Graph::Style for full details, or "Lines" in Finance::Shares::Model for an example.
min
The Y axis value used for 'false'. (Default: depends on gtype
)
max
The Y axis value used for 'true'. (Default: depends on gtype
)
decay
A decimal factor applied to the result line for each date while the result is still 'true'. A value of 0.9 makes a shallow decay curve, while 0.1 keeps just 10% of the previous value so falls rapidly. (Default: 1.0)
ramp
A number added to the result line for each date while the result is still 'true'. A value of -10 produces a shallower straight line than a value of -100. (Default: 0)
Depending on other values, ramp
and decay
can be combined to form various curves.
BUGS
Please let me know when you suspect something isn't right. A short script working from a CSV file demonstrating the problem would be very helpful.
AUTHOR
Chris Willmot, chris@willmot.org.uk
LICENCE
Copyright (c) 2002-2003 Christopher P Willmot
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A copy can be found at http://www.gnu.org/copyleft/gpl.html
SEE ALSO
Finance::Shares::Overview provides an introduction to the suite, and fsmodel is the principal script.
Modules involved in processing the model include Finance::Shares::Model, Finance::Shares::MySQL, Finance::Shares::Chart. Chart and file details may be found in PostScript::File, PostScript::Graph::Paper, PostScript::Graph::Key, PostScript::Graph::Style.
Functions are invoked from their own modules, all with lower-case names such as Finance::Shares::moving_average. The nitty-gritty on how to write each line specification are found there.
The quote data is stored in a Finance::Shares::data object. For information on writing additional line functions see Finance::Share::Function and Finance::Share::Line. Also, Finance::Share::test covers writing your own tests.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 244:
Expected text after =item, not a number