chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.db-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Show canonical strings in printable form
[ypp-sc-tools.db-test.git]
/
yarrg
/
web
/
routetrade
diff --git
a/yarrg/web/routetrade
b/yarrg/web/routetrade
index 9660094532aa1544fb5db23092546991c098ee75..1b7c8c945bb312b0c7073eb5de1e8361910cd148 100644
(file)
--- a/
yarrg/web/routetrade
+++ b/
yarrg/web/routetrade
@@
-39,6
+39,8
@@
$dbh
@archipelagoes
$qa
$routeparams
@archipelagoes
$qa
$routeparams
+$reset_suppressions
+$quri
</%args>
<& query_age:pageload &>
</%args>
<& query_age:pageload &>
@@
-48,6
+50,8
@@
my $loss_per_league= defined $routeparams->{LossPerLeaguePct}
? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
my $loss_per_delay_slot= 1e-8;
? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
my $loss_per_delay_slot= 1e-8;
+my $minprofit= $routeparams->{MinProfit} || 0;
+
my $now= time;
my @flow_conds;
my $now= time;
my @flow_conds;
@@
-275,13
+279,19
@@
Searched for arbitrage trades only, in <% $archipelagoes[0] |h %>
<%perl>
<%perl>
-my @sail_total;
-
if (!@flows) {
print 'No profitable trading opportunities were found.';
return;
}
if (!@flows) {
print 'No profitable trading opportunities were found.';
return;
}
+my @sail_total;
+my %opportunity_value;
+
+my $oppo_key= sub {
+ my ($f) = @_;
+ return join '_', map { $f->{$_} } qw(org_id dst_id commodid);
+};
+
foreach my $f (@flows) {
$f->{MaxQty}= $f->{'org_qty_agg'} < $f->{'dst_qty_agg'}
foreach my $f (@flows) {
$f->{MaxQty}= $f->{'org_qty_agg'} < $f->{'dst_qty_agg'}
@@
-306,6
+316,8
@@
foreach my $f (@flows) {
$dists{'org_id'}{'dst_id'}= $f->{'dist'};
$dists{'org_id'}{'dst_id'}= $f->{'dist'};
+ $opportunity_value{ $oppo_key->($f) } += $f->{MaxProfit};
+
my @uid= $f->{commodid};
foreach my $od (qw(org dst)) {
push @uid,
my @uid= $f->{commodid};
foreach my $od (qw(org dst)) {
push @uid,
@@
-368,11
+380,20
@@
foreach my $f (@flows) {
$f->{UidLong} eq $recons_long or
die "$f->{UidLong} = $f->{UidShort} = $recons_long ?";
}
$f->{UidLong} eq $recons_long or
die "$f->{UidLong} = $f->{UidShort} = $recons_long ?";
}
+}
+
+foreach my $f (@flows) {
- if (defined $qa->{"R$f->{UidShort}"} &&
- !defined $qa->{"T$f->{UidShort}"}) {
- $f->{Suppress}= 1;
+ if ($reset_suppressions || !defined $qa->{"R$f->{UidShort}"}) {
+ if ($opportunity_value{ $oppo_key->($f) } < $minprofit) {
+ $f->{Suppress}= 1;
+ }
} else {
} else {
+ if (!defined $qa->{"T$f->{UidShort}"}) {
+ $f->{Suppress}= 1;
+ }
+ }
+ if (!$f->{Suppress}) {
my $sfis= $ipair2subflowinfs{$f->{'org_id'},$f->{'dst_id'}};
foreach my $sfi (@$sfis) {
my $subflow= {
my $sfis= $ipair2subflowinfs{$f->{'org_id'},$f->{'dst_id'}};
foreach my $sfi (@$sfis) {
my $subflow= {
@@
-715,6
+736,7
@@
Generated by YARRG at <strong><%
orgArbitrage => 0,
dstArbitrage => 0,
} unless $$todo;
orgArbitrage => 0,
dstArbitrage => 0,
} unless $$todo;
+ $$todo->{'commodid'}= $f->{'commodid'};
$$todo->{'commodname'}= $f->{'commodname'};
$$todo->{'posinclass'}= '';
my $incl= $f->{'posinclass'};
$$todo->{'commodname'}= $f->{'commodname'};
$$todo->{'posinclass'}= '';
my $incl= $f->{'posinclass'};
@@
-802,9
+824,13
@@
END
% $total += $t->{Total};
% my $span= 0 + keys %{ $t->{Stalls} };
% my $td= "td rowspan=$span";
% $total += $t->{Total};
% my $span= 0 + keys %{ $t->{Stalls} };
% my $td= "td rowspan=$span";
+% my %linkqf= (%{ $qa->{'baseqf'} }, %{ $qa->{'queryqf'} });
+% $linkqf{'query'}= 'commod';
+% $linkqf{'commodstring'}= $t->{'commodname'};
+% $linkqf{'commodid'}= $t->{'commodid'};
% tr_datarow($m,$dline);
<<% $td %>><% $collectdeliver %>
% tr_datarow($m,$dline);
<<% $td %>><% $collectdeliver %>
-<<% $td %>><
% $t->{'commodname'} |h %
>
+<<% $td %>><
a href="<% $quri->(%linkqf) %>"><% $t->{'commodname'} |h %></a
>
<<% $td %>><% $t->{'posinclass'} %>
%
% my @stalls= sort keys %{ $t->{Stalls} };
<<% $td %>><% $t->{'posinclass'} %>
%
% my @stalls= sort keys %{ $t->{Stalls} };