Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- my $delay_orderbooks = Mojo::IOLoop->delay(sub{
- my ($del, @args) = @_;
- my $delay = shift;
- foreach my $index (0..$#_) {
- @asks = ();
- @bids = ();
- my $host = $args[$index]->req->url->host;
- my @h = split('\.', $host);
- # $log->debug("$index: $host");
- my $remote_path = $args[$index]->req->url->path;
- my @map = map { $_->res->body } $_[$index];
- my $ex = $h[$#h-1];
- $log->debug("---------------------------- ORDERBOOK - $ex -----------------------------");
- # $log->debug(Dumper($_[$index]));
- if ($map[0] ne "") {
- my $map_plain = decode_json(@map);
- # $log->info("\n\n\nmap_plain: " . Dumper($map_plain) . "\n\n\n/map_plain\n\n\n");
- if ($ex eq "hitbtc") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids}; }
- if ($ex eq "btc-e") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids}; }
- if ($ex eq "crypto-trade") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids};}
- if ($ex eq "bter") {
- @asks = $map_plain->{asks}; @bids = $map_plain->{bids};
- }
- if ($ex eq "kraken") {
- my $CURR;
- my $invert = ${$exchanges}{$ex}{inverted}{$basecurr . $altcurr};
- if ( defined($invert) ) {
- $CURR = $invert;
- @asks = $map_plain->{result}->{$CURR}->{bids};
- foreach my $i (keys $asks[0]) { $asks[0][$i][0] = sprintf("%0.8f", 1 / $asks[0][$i][0]); }
- @bids = $map_plain->{result}->{$CURR}->{asks};
- foreach my $i (keys $bids[0]) { $bids[0][$i][0] = sprintf("%0.8f", 1 / $bids[0][$i][0]); }
- } else {
- $CURR = "X" . $basecurr . "Z" . $altcurr;
- @asks = $map_plain->{result}->{$CURR}->{asks};
- @bids = $map_plain->{result}->{$CURR}->{bids};
- }
- }
- if ($ex eq "vircurex") { @asks = $map_plain->{"asks"}; @bids = $map_plain->{"bids"}; }
- if ($ex eq "cryptsy") {
- my @asks_ = $map_plain->{return}->{$basecurr}->{sellorders};
- my @bids_ = $map_plain->{return}->{$basecurr}->{buyorders};
- if (defined($asks_[0])) {
- foreach my $k (keys $asks_[0]) {
- $asks[0][$k][0] = $asks_[0][$k]{price};
- $asks[0][$k][1] = $asks_[0][$k]{quantity};
- }
- }
- if (defined($bids_[0]) ) {
- foreach my $k (keys $bids_[0]) {
- $bids[0][$k][0] = $bids_[0][$k]{price};
- $bids[0][$k][1] = $bids_[0][$k]{quantity};
- }
- }
- }
- if ($ex eq "bitfinex") {
- my @asks_ = $map_plain->{asks};
- my @bids_ = $map_plain->{bids};
- for my $k (keys @{$asks_[0]}) {
- $asks[0][$k][0] = $asks_[0][$k]->{price};
- $asks[0][$k][1] = $asks_[0][$k]->{amount};
- }
- for my $k (keys @{$bids_[0]}) {
- $bids[0][$k][0] = $bids_[0][$k]->{price};
- $bids[0][$k][1] = $bids_[0][$k]->{amount};
- }
- }
- if ( ! defined($bids[0][0][0]) ) { $bids[0][0][0] = 0; $bids[0][1][0] = 0; $bids[0][2][0] = 0; $bids[0][3][0] = 0; $bids[0][4][0] = 0; $bids[0][0][1] = 0; $bids[0][1][1] = 0; $bids[0][2][1] = 0; $bids[0][3][1] = 0; $bids[0][4][1] = 0; }
- if ( ! defined($asks[0][0][0]) ) { $asks[0][0][0] = 99999999; $asks[0][1][0] = 99999999; $asks[0][2][0] = 99999999; $asks[0][3][0] = 99999999; $asks[0][4][0] = 99999999; $asks[0][0][0]; $asks[0][0][1] = 99999999; $asks[0][1][1] = 99999999; $asks[0][2][1] = 99999999; $asks[0][3][1] = 99999999; $asks[0][4][1] = 99999999;}
- $orderbooks{$ex}{'bids'} = $bids[0];
- $orderbooks{$ex}{'asks'} = $asks[0];
- # print "ex: $ex\n";
- # $log->info("\n\n\n\norderbooks" . Dumper($orderbooks{$ex}{'asks'}) . "\n\n\n/orderbooks\n\n\n");
- # my $k = <STDIN>;
- my $logline;
- $logline = "we BUY|";
- my $asks_no;
- if ( @{$asks[0]} > 2 ) { $asks_no = 2 } else { $asks_no = @{$asks[0]} - 1 }
- foreach my $index (0..$asks_no) {
- $logline .= "$asks[0][$index][0] ($asks[0][$index][1])|";
- }
- $log->debug($logline);
- $logline = "we SELL|";
- my $bids_no;
- if ( @{$bids[0]} > 2 ) { $bids_no = 2 } else { $bids_no = @{$bids[0]} - 1 }
- foreach my $index (0..$bids_no) {
- $logline .= "$bids[0][$index][0] ($bids[0][$index][1])|";
- }
- $log->debug($logline);
- }
- print "\n\n\n1:" . $orderbooks{'bitfinex'}{'bids'}[0][0] . "\n\n\n\n";
- $waldek = 1;
- print "\n\n\nwaldek orderbooks: $waldek \n\n\n/waldek";
- # $e->emit('orderbooks_done');
- }
- });
- $delay_orderbooks->on(finish => check_bids_asks);
- sub get_orderb {
- print "get_orderb\n";
- my ($self, $delay_orderbooks) = @_;
- foreach my $ex (@exs) {
- my $url;
- my $marketid;
- my ($basec, $altc);
- $basec = $basecurr;
- $altc = $altcurr;
- undef $inverted;
- $inverted = ${$exchanges}{$ex}{inverted}{$basec . $altc};
- if ( defined($inverted) ) {
- $basec = $altcurr;
- $altc = $basecurr;
- }
- my $method1 = ${$exchanges}{$ex}{orderbook}{method};
- $method1 =~ s/\{BASECURR\}/$basec/g;
- $method1 =~ s/\{ALTCURR\}/$altc/g;
- my $method2 = ${$exchanges}{$ex}{orderbook}{method2};
- $method2 =~ s/\{BASECURR\}/$basec/g;
- $method2 =~ s/\{ALTCURR\}/$altc/g;
- my $params = ${$exchanges}{$ex}{orderbook}{params};
- $params =~ s/\{BASECURR\}/$basec/g;
- $params =~ s/\{ALTCURR\}/$altc/g;
- if ( $ex eq "cryptsy" ) {
- $marketid = ${$exchanges}{$ex}{markets}{$basec . $altc};
- $method1 =~ s/\{MARKETID\}/$marketid/g;
- $method2 =~ s/\{MARKETID\}/$marketid/g;
- }
- $url = ${$exchanges}{$ex}{http} . "://" . ${$exchanges}{$ex}{host} . "/" . ${$exchanges}{$ex}{uripath} . $method1 . $method2 . $params;
- if ( ( $ex eq "btc-e" ) || ( $ex eq "crypto-trade") || ( $ex eq "bter") ) {$url = lc $url}
- $log->debug("get_orderb: $url");
- $self->ua->get( $url => $delay_orderbooks->begin);
- }
- }
- $delay_main->steps(get_orderb($self, $delay_orderbooks));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement