crypto Alert to matrix

This commit is contained in:
Arne Baeumler 2021-02-07 19:28:55 +01:00
parent c50b54182b
commit ba1113d21b

56
scripts/cryptoAlert.pl Executable file
View File

@ -0,0 +1,56 @@
#!/usr/bin/perl
#
use strict;
use warnings;
use RRDs;
use Data::Dumper;
use Template;
my $file = $ARGV[0] or die("Usage: $0 csv\n");
my $rrdpath = "/var/www/localhost/rrd";
my $cryptoMap = {
"AAVE" => "AAVE",
"ALGO" => "Algorand",
"BTC" => "Bitcoin",
"CVC" => "Civic",
"DNT" => "district0x",
"EGLD" => "Elrond eGold",
"ETH" => "Etherium",
"LRC" => "Loopring",
"REN" => "REN",
"SNX" => "Synthetix",
"XLM" => "Stellar Lumen",
"XTZ" => "Tezos"
};
my $v;
my $alarmThresh = 15;
sub getCurrentPrice {
my ($symbol) = @_;
my ($start,$step,$name,$data) = RRDs::fetch("${rrdpath}/crypto-${symbol}.rrd","LAST","--start","-10m");
return($data->[0]->[0]);
}
sub getLast4hAverage {
my ($symbol) = @_;
my ($start,$step,$name,$data) = RRDs::fetch("${rrdpath}/crypto-${symbol}.rrd","AVERAGE","--start","-4h","-r",'4h');
return($data->[0]->[0]);
}
open(CSV,"<$file") or die("open($file): $!\n");
while (<CSV>) {
chomp($_);
my ($date,$currency,$coin,$price,$fee,$buyrate,$sellthres) = split /;/;
my $curPrice = sprintf("%.4f",&getCurrentPrice($currency));
my $avg4hPrice = sprintf("%.4f",&getLast4hAverage($currency));
if($avg4hPrice > ((1 + int($alarmThresh)/100) * $curPrice)) {
$v->{$currency} = "current price dropped by more than ${alarmThresh}% from $avg4hPrice Euro/$currency to $curPrice Euro/$currency within 4h";
}
}
close(CSV);
foreach my $c (sort keys %{$v}) {
print "<b>$cryptoMap->{$c}</b>: $v->{$c}<br/>\n";
}