Advertisement
Guest User

Untitled

a guest
Jul 10th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6.23 KB | None | 0 0
  1.   my $delay_orderbooks = Mojo::IOLoop->delay(sub{
  2.     my ($del, @args) = @_;
  3.     my $delay = shift;
  4.  
  5.     foreach my $index (0..$#_) {
  6.       @asks = ();
  7.       @bids = ();
  8.       my $host = $args[$index]->req->url->host;
  9.       my @h = split('\.', $host);
  10.       # $log->debug("$index: $host");
  11.  
  12.       my $remote_path = $args[$index]->req->url->path;
  13.       my @map = map { $_->res->body } $_[$index];
  14.       my $ex = $h[$#h-1];
  15.       $log->debug("---------------------------- ORDERBOOK - $ex -----------------------------");
  16.       # $log->debug(Dumper($_[$index]));
  17.       if ($map[0] ne "") {
  18.         my $map_plain = decode_json(@map);
  19.         # $log->info("\n\n\nmap_plain: " . Dumper($map_plain) . "\n\n\n/map_plain\n\n\n");
  20.         if ($ex eq "hitbtc") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids}; }
  21.         if ($ex eq "btc-e") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids}; }
  22.         if ($ex eq "crypto-trade") { @asks = $map_plain->{asks}; @bids = $map_plain->{bids};}
  23.         if ($ex eq "bter") {
  24.           @asks = $map_plain->{asks}; @bids = $map_plain->{bids};
  25.         }
  26.         if ($ex eq "kraken") {
  27.           my $CURR;
  28.           my $invert = ${$exchanges}{$ex}{inverted}{$basecurr . $altcurr};
  29.           if ( defined($invert) ) {
  30.             $CURR = $invert;
  31.             @asks = $map_plain->{result}->{$CURR}->{bids};
  32.             foreach my $i (keys $asks[0]) { $asks[0][$i][0] = sprintf("%0.8f", 1 / $asks[0][$i][0]); }
  33.             @bids = $map_plain->{result}->{$CURR}->{asks};
  34.             foreach my $i (keys $bids[0]) { $bids[0][$i][0] = sprintf("%0.8f", 1 / $bids[0][$i][0]); }
  35.           } else  {
  36.             $CURR = "X" . $basecurr . "Z" . $altcurr;
  37.             @asks = $map_plain->{result}->{$CURR}->{asks};
  38.             @bids = $map_plain->{result}->{$CURR}->{bids};
  39.           }
  40.         }
  41.         if ($ex eq "vircurex") { @asks = $map_plain->{"asks"}; @bids = $map_plain->{"bids"}; }
  42.         if ($ex eq "cryptsy") {
  43.           my @asks_ = $map_plain->{return}->{$basecurr}->{sellorders};
  44.           my @bids_ = $map_plain->{return}->{$basecurr}->{buyorders};
  45.          
  46.           if (defined($asks_[0])) {
  47.             foreach my $k (keys $asks_[0]) {
  48.               $asks[0][$k][0] = $asks_[0][$k]{price};
  49.               $asks[0][$k][1] = $asks_[0][$k]{quantity};
  50.             }
  51.           }
  52.           if (defined($bids_[0]) ) {
  53.             foreach my $k (keys $bids_[0]) {
  54.               $bids[0][$k][0] = $bids_[0][$k]{price};
  55.               $bids[0][$k][1] = $bids_[0][$k]{quantity};
  56.             }
  57.           }
  58.         }
  59.         if ($ex eq "bitfinex") {
  60.           my @asks_ = $map_plain->{asks};
  61.           my @bids_ = $map_plain->{bids};
  62.          
  63.           for my $k (keys @{$asks_[0]}) {
  64.             $asks[0][$k][0] = $asks_[0][$k]->{price};
  65.             $asks[0][$k][1] = $asks_[0][$k]->{amount};
  66.           }
  67.          
  68.           for my $k (keys @{$bids_[0]}) {
  69.             $bids[0][$k][0] = $bids_[0][$k]->{price};
  70.             $bids[0][$k][1] = $bids_[0][$k]->{amount};
  71.           }
  72.         }
  73.  
  74.         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; }
  75.         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;}
  76.  
  77.         $orderbooks{$ex}{'bids'} = $bids[0];
  78.         $orderbooks{$ex}{'asks'} = $asks[0];
  79.         # print "ex: $ex\n";
  80.         # $log->info("\n\n\n\norderbooks" . Dumper($orderbooks{$ex}{'asks'}) . "\n\n\n/orderbooks\n\n\n");
  81.         # my $k = <STDIN>;
  82.        
  83.         my $logline;
  84.         $logline = "we BUY|";
  85.         my $asks_no;
  86.         if ( @{$asks[0]} > 2 ) { $asks_no = 2 } else { $asks_no = @{$asks[0]} - 1 }
  87.         foreach my $index (0..$asks_no) {
  88.           $logline .= "$asks[0][$index][0] ($asks[0][$index][1])|";
  89.         }
  90.         $log->debug($logline);
  91.        
  92.         $logline = "we SELL|";
  93.         my $bids_no;
  94.         if ( @{$bids[0]} > 2 ) { $bids_no = 2 } else { $bids_no = @{$bids[0]} - 1 }
  95.         foreach my $index (0..$bids_no) {
  96.           $logline .= "$bids[0][$index][0] ($bids[0][$index][1])|";
  97.         }
  98.         $log->debug($logline);
  99.       }
  100.       print "\n\n\n1:" . $orderbooks{'bitfinex'}{'bids'}[0][0] . "\n\n\n\n";
  101.       $waldek = 1;
  102.       print "\n\n\nwaldek orderbooks: $waldek \n\n\n/waldek";
  103.     # $e->emit('orderbooks_done');
  104.     }
  105.   });
  106.   $delay_orderbooks->on(finish => check_bids_asks);
  107.  
  108.   sub get_orderb {
  109.     print "get_orderb\n";
  110.     my ($self, $delay_orderbooks) = @_;
  111.     foreach my $ex (@exs) {
  112.       my $url;
  113.       my $marketid;
  114.       my ($basec, $altc);
  115.       $basec = $basecurr;
  116.       $altc = $altcurr;
  117.       undef $inverted;
  118.       $inverted = ${$exchanges}{$ex}{inverted}{$basec . $altc};
  119.       if ( defined($inverted) ) {
  120.         $basec = $altcurr;
  121.         $altc = $basecurr;
  122.       }
  123.      
  124.       my $method1 = ${$exchanges}{$ex}{orderbook}{method};
  125.       $method1 =~ s/\{BASECURR\}/$basec/g;
  126.       $method1 =~ s/\{ALTCURR\}/$altc/g;
  127.      
  128.       my $method2 = ${$exchanges}{$ex}{orderbook}{method2};
  129.       $method2 =~ s/\{BASECURR\}/$basec/g;
  130.       $method2 =~ s/\{ALTCURR\}/$altc/g;
  131.  
  132.       my $params = ${$exchanges}{$ex}{orderbook}{params};
  133.       $params =~ s/\{BASECURR\}/$basec/g;
  134.       $params =~ s/\{ALTCURR\}/$altc/g;
  135.      
  136.       if ( $ex eq "cryptsy" ) {
  137.         $marketid = ${$exchanges}{$ex}{markets}{$basec . $altc};
  138.         $method1 =~ s/\{MARKETID\}/$marketid/g;
  139.         $method2 =~ s/\{MARKETID\}/$marketid/g;
  140.       }
  141.      
  142.       $url = ${$exchanges}{$ex}{http} . "://" . ${$exchanges}{$ex}{host} . "/" . ${$exchanges}{$ex}{uripath} . $method1 . $method2 . $params;
  143.      
  144.       if ( ( $ex eq "btc-e" ) || ( $ex eq "crypto-trade") || ( $ex eq "bter") ) {$url = lc $url}
  145.  
  146.       $log->debug("get_orderb: $url");
  147.       $self->ua->get( $url => $delay_orderbooks->begin);
  148.     }
  149.   }
  150.  
  151.   $delay_main->steps(get_orderb($self, $delay_orderbooks));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement