use lib '/home/steffen/scripte/nicehash'; use Nicehashapi; use Data::Printer; use File::Slurp; use Mojo::UserAgent; use Time::Piece; # use Term::ANSIColor; use File::Copy; my $einsatzhenner = 150; my $api = Nicehashapi->new( key => '8bcbda58-5a26-4ce4-8e61-3a0fd894cfbb', secret => '59dc1ee5-a0e6-4ba6-9a9c-a043c350b88b84266786-2d14-4b9f-9ae5-d168ed8376b7', organisation_id => '4c615374-bf85-42fd-860d-b1bf4568c01f' ); my $data = $api->get_payouts(0, 10_000); my @trading = read_file('/home/steffen/scripte/nicehash/investment.csv'); my %washabich; my %washabichwoanders; my %avgineuro; my %count4avgineuro; # my %kleinstekurse = { # "" # } for my $l ( @trading ) { next if ( $l =~ /^buy/ ); chomp $l; $l = $l =~ s/\s//gr; my @sp = split(/;/, $l ); if ( $sp[0] eq 'BTC' && $sp[2] eq 'EUR' ) { $washabich{'EUR'} += $sp[3] ; $washabich{$sp[0]} += ($sp[1] * $sp[8] ); $avgineuro{$sp[0]} += $sp[8]; $count4avgineuro{$sp[0]} += 1; } elsif ( $sp[0] eq 'BTC' && $sp[2] ne 'EUR' ) { if ( $sp[8] eq 'sellout' ) { $avgineuro{$sp[2]} = 0; $count4avgineuro{$sp[2]} = 0; $washabich{$sp[2]} = 0; } else { $washabich{$sp[2]} -= (($sp[1]- $sp[7] ) * $sp[8] ); } } elsif ( $sp[0] eq 'EUR' ) { $washabich{'EUR'} -= $sp[1]; $washabichwoanders{$sp[9]} += $sp[1]; } else { $washabich{$sp[0]} += (($sp[1]- $sp[7] ) * $sp[8] ); $avgineuro{$sp[0]} += $sp[8]; $count4avgineuro{$sp[0]} += 1; $washabich{'BTC'} -= (($sp[1]- $sp[7] ) * $sp[8] ); } } p $count4avgineuro{'FTM'}; p $washabich{'FTM'}; for my $k ( keys %avgineuro ) { next if ( $count4avgineuro{$k} == 0 ); $avgineuro{$k} = $avgineuro{$k} / $count4avgineuro{$k}; } $washabich{'EUR'} = $washabich{'EUR'} - $einsatzhenner; my $get_accounts2 = $api->get_accounts2('true', 'EUR'); my %btcwerte; my %curwerte; for my $li (@{$get_accounts2->{currencies}}) { if ( $li->{totalBalance} > 0 ) { $btcwerte{$li->{currency}} = $li->{fiatRate}; $curwerte{$li->{currency}} = $li->{totalBalance}; } } my $othercurrbtc = $maxbtc - $btcwerte{'BTC'}; my $cur = $api->get_prices; my $gesamtgebuehr = 0; my $gesamt = 0; # write_file('/mnt/h/Download/nicehashmining.csv', "Type,Buy Amount,Buy Currency,Sell Amount,Sell Currency,Fee,Fee Currency,Exchange,Trade-Group,Comment,Date\n"); my $min; my $max; # mining for my $line (@{$data->{list}}) { my $date = localtime($line->{created} / 1000); if ( not defined $min ) { $min = $line->{created}; } if ( not defined $max ) { $max = $line->{created}; } if ( $min > $line->{created} ) { $min = $line->{created}; } if ( $max < $line->{created} ) { $max = $line->{created}; } my $datetime = $date->ymd .' ' . $date->hms; my $currencies = $line->{currency}->{description}; my $feeamount = $line->{feeAmount}; my $amount = $line->{amount}; my $gebuehr = sprintf('%.8f', $feeamount ); $gesamtgebuehr += $gebuehr; $gesamt += $amount; #append_file('/mnt/h/Download/nicehashmining.csv', "Mining (kommerziell),$amount,$currencies,0,EUR,$gebuehr,$currencies,NiceHash,,,$datetime\n"); } $min = localtime($min / 1000); $max = localtime($max / 1000); my $eur = $btcwerte{'BTC'}; my $btchenner = 0.00307542; my $gesamteuro = sprintf('%.2f', ( $gesamt * $eur ) ); my $gebuehreuro = sprintf('%.2f', ( $gesamtgebuehr * $eur ) ); my $gesamtgebeuro = sprintf('%.2f', ( ($gesamt - $gesamtgebuehr) * $eur ) ); my $btchennereuro = sprintf('%.2f', ( $btchenner * $eur ) ); # Henner 150 Euro my $btcsteffeneuro = sprintf('%.2f', ( ($curwerte{'BTC'} - $btchenner ) * $eur ) ); # print 'von '.$min->ymd.' - '.$max->ymd."\n"; print "\n"; print "─── Mining ───────────────────────────────────────────────────────────────────────────────────\n"; print " BTC:\t$gesamt\t €: $gesamteuro\n"; print " Gebuehr:\t" . sprintf('%.8f', $gesamtgebuehr). "\t €: $gebuehreuro\n"; print "nach Gebuehr:\t". sprintf('%.8f',($gesamt - $gesamtgebuehr)). "\t €: $gesamtgebeuro\n"; print "─── Trading ────────────────────────────────────────────────────────────│\n"; print "BTC H:\t". sprintf('%.8f', $btchenner ). "\t €: $btchennereuro\t← 150\t→ ". _rotodergruen( _prozent(150,$btchennereuro)) ." %\t│───────────────│──────────────\n"; print "BTC S:\t". sprintf('%.8f', ($curwerte{'BTC'} - $btchenner - $gesamt) ). "\t €: $btcsteffeneuro". "\t← ".sprintf('%.2f', $washabich{'BTC'} - 150). "\t→ ". _rotodergruen(_prozent( $washabich{'BTC'} - 150,$btcsteffeneuro))." %\t│ ".sprintf('%.4f', $eur ). " €\t│ ".sprintf('%.2f',$avgineuro{'BTC'} ). " €\n"; my $maxsteffen = $btcsteffeneuro; my $maxsteffenbtc = sprintf('%.8f', ($btcwerte{'BTC'} - $btchenner) ); for my $cu ( sort keys %btcwerte ) { next if ( $cu eq 'BTC' ); $maxsteffen += sprintf('%.2f', ( $curwerte{$cu} * $btcwerte{$cu} ) ); $maxsteffenbtc += sprintf('%.8f', $curwerte{$cu} ); # print sprintf('%.8f', $btcwerte{$cu}). "\n"; my $pro = _prozent($curwerte{$cu} * $avgineuro{$cu}, $curwerte{$cu} * $btcwerte{$cu} ); print "$cu:\t".sprintf('%.8f', $curwerte{$cu} ). "\t €: ".sprintf('%.2f', ( $curwerte{$cu} * $btcwerte{$cu} ) ). "\t← ".sprintf('%.2f', $curwerte{$cu} * $avgineuro{$cu} ). "\t→ ". _rotodergruen($pro) . " %\t│ ".sprintf('%.4f',$btcwerte{$cu} )." €\t│ ".sprintf('%.4f',$avgineuro{$cu} ). " €\n"; } print "─── result ─────────────────────────────────────────────────────────────│───────────────│──────────────\n"; my $totaleuro = $get_accounts2->{total}->{totalBalance} * $eur; print "Umsatz NH:\t".sprintf('%.2f', $totaleuro)." €\n"; print "davon mining:\t$gesamtgebeuro €\n"; print "Rendite:\t". _rotodergruen( sprintf('%.2f', ($maxsteffen - $washabich{'EUR'}))) . " €\n"; print "ohne mining:\t". _rotodergruen(sprintf('%.2f', ($maxsteffen - $washabich{'EUR'} - $gesamtgebeuro))) . " €\n"; print "-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"; print "Einsatz NH:\t$washabich{'EUR'} €\n"; my $su = 0; for my $exch ( sort keys %washabichwoanders ) { print "$exch:\t$washabichwoanders{$exch} €\n"; $su += $washabichwoanders{$exch}; } $su += $washabich{'EUR'}; print "===========================\n"; print "Einsatz gesamt:\t$su €\n"; my @dateien = read_dir('./' ); for my $d ( @dateien ) { copy( '/home/steffen/scripte/nicehash/'.$d, '/mnt/e/Programmierung/Perl/NiceHash' ); } sub _prozent { my ($ist, $soll) = @_; if ( $ist ) { my $result = sprintf('%.0f', ( ($soll * 100) / $ist - 100)); if ( $result !~ /-/ ) { $result = " $result"; } return $result; } else { return 0; } } sub _rotodergruen { my ($text) = @_; if ( $text =~ /-/ ) { return "\e[31m$text\e[0m"; } else { return "\e[32m$text\e[0m"; } } 1;