chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.web-live.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Minimum trade value feature
[ypp-sc-tools.web-live.git]
/
yarrg
/
web
/
routetrade
diff --git
a/yarrg/web/routetrade
b/yarrg/web/routetrade
index 9660094532aa1544fb5db23092546991c098ee75..9cd57122d66b8fd421fd040dc00ee45abbf66422 100644
(file)
--- a/
yarrg/web/routetrade
+++ b/
yarrg/web/routetrade
@@
-39,6
+39,7
@@
$dbh
@archipelagoes
$qa
$routeparams
@archipelagoes
$qa
$routeparams
+$reset_suppressions
</%args>
<& query_age:pageload &>
</%args>
<& query_age:pageload &>
@@
-48,6
+49,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
+278,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
+315,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
+379,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= {