Мистер tails - IT блог

Проявляю IT активность в пределах третей от солнца планеты!

Главная страница » Решил написать бота для пампа на бирже YoBit

Решил написать бота для пампа на бирже YoBit


Как будет работать бот для пампа на YoBit? Да очень просто, он будет скупать указанную монету, но делать это будет очень быстро, по следующей схеме.

Одна покупка в одну секунду, и так 5 раз. То есть бот проводит по 5 сделок подряд раз в секунду, после ждёт, например, 4 секунды чтобы не схлопотать БАН от YoBit после чего снова проводит 5 сделок. И вот получается такой круговорот…

Так же, нужно позаботится о том, что бы бот не вы-хлопал весь баланс фиатного бабла. Значит нужно поставить ограничение. Например, Если осталось 300 рублей то перестать скупать монету. По-моему, прикольно, ну поехали писать бота и тестить что получится.

Бот для пампа на бирже криптовалют YoBit

Так-то громко сказано «для пампа», обычный скупщик монеты мелкими частями… да и на срать… Пусть будет для пампа.

Что понадобится для написания бота:

1 – Документация по API с самой биржи YoBit.
2 – Файл настроек, предлагаю использовать JSON формат.
3 – Ну и не много баблишка на фиатном счете или пох на каком.

Да, писать будем на PHP так что, чтобы заюзать бота нужно установить PHP. Под винду это OpenServer там и консоль есть нормальная. Под Linux первая попавшаяся ссылка по запросу «Установка php linux» и проблем не будет.

Начнём всю движуху с создания файла «config.json» сюда засунем API, Секретный ключ и ещё немного инфы.

{
  "api_key" : "api",
  "api_secret" : "secret",
  "budget" : "0.002",
  "coin_1" : "ltc",
  "coin_2" : "rur"
}

budget – это по сколько будем скупать монету за одну сделку.

Биржа требует отправлять в HTTP заголовках уникальное число от «1» до «2147483646» поэтому удобнее будет создать файл для хранения этого числа, с каждым запросом к бирже из него будет браться новое значение и отправляться на биржу. Файл так и назовём – «nonce» (У меня без расширения)

Предлагаю для удобства создать отдельный файл под несколько функций, для собственного удобства. Назову его «Yobit-Functions.php»

Первая функция, которую я туда запихну будет считывать свежее значение из «nonce» для последующей его отправки на сервер…

    /*
    * Get_Config()
    * Получить номер запроса......
    */

    function Nonce() {
      $nonce_num = file_get_contents(__DIR__ . '/nonce');

      if ( $nonce_num == '' ) { $nonce_num == 0; }

          $fp = fopen(__DIR__ . '/nonce', "w+");
          $rez_nonce_num = fwrite($fp, $nonce_num = $nonce_num + 1);

      return $nonce_num;
    }

Теперь нужно научить бота общаться с биржей, что бы он мог отправлять нужные нам запросы на биржу, а мы радовались и улыбались… В этот же файл в след за предыдущей функцией кидаем это. Так сказать – сердце бота)))

    /*
    * Yobit_Api()
    * Общение с биржей
    */

    function Yobit_Api($method, $req = array()) { // Yobit_Api

        $config     = Get_Config();
        $nonce_num  = Nonce();

        $req['method'] = $method;
        $req['nonce'] = $nonce_num;
        $post_data = http_build_query($req, '', '&');
        $sign = hash_hmac("sha512", $post_data, $config->api_secret);

            $headers = array(
                'Sign: '. $sign,
                'Key: '. $config->api_key,
            );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36');
        curl_setopt($ch, CURLOPT_URL, 'https://yobit.net/tapi/');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $res = curl_exec($ch);

              if($res === false) {
                  curl_close($ch);
                  return null;
              }

        curl_close($ch);
        $result = json_decode($res, true);
        return $result;

    } // END Yobit_Api

Что бы скупать монету «Со стакана» а именно так и нужно скупать, нам нужно узнать цену по которой торгуется монета, то есть ту цену по которой можно купить сразу без выставления ордера. Пишем функцию.

    /*
    * price_top($coins, $type)
    * Получим самую первую цену на Продажу
    * [$type] asks        = ордера на продажу
    * [$type] bids        = ордера на покупку
    */

    function Price_Top($coins, $type) {

      $depth= json_decode(file_get_contents('https://yobit.net/api/3/depth/' . $coins . '?limit=1'));
      $depth_array = json_decode(json_encode($depth), True);

      foreach ($depth_array as $key => $depth_value) {
        if ( $type == 'asks' ) {
          return $price_top_asks = $depth_value['asks'][0][0]; // Новая цена Продажи
        }
        if ( $type == 'bids' ) {
          return $price_top_bids = $depth_value['bids'][0][0]; // Новая цена Покупки
        }
      }
    }

Теперь бот умеет узнавать цену покупки и отправлять запросы на сервер биржи. Осталось самая малость, реализовать логику работы Бота для пампа на YoBit.

В отдельный файлик, назовём его «yobit-Pamp.php» кидаем сам код бота.

<?php
    $R = "\r\n";
    $RR = "\r\n\r\n";

    error_reporting(0);
    require_once __DIR__ . '/yobit-functions.php';
    $Config = Get_Config();

    define("__COINS_1__",       $Config->coin_1 );
    define("__COINS_2__",       $Config->coin_2);
    define("__COINS_PARA__",    $Config->coin_1 . '_' . $Config->coin_2);

    $a = 0;
    while ($a <= 999999) { // while

      $Price_top    = Price_Top(__COINS_PARA__, 'asks');
      $GetInfo      = Yobit_Api('getInfo');
      $Rur          = $GetInfo['return']['funds'][__COINS_2__];
      $Ltc          = $GetInfo['return']['funds'][__COINS_1__];

      if( $Rur < 300) { break; } // Если на балансе останется 300 или меньше рублей то хватит скупать

            $Trade = Yobit_Api('Trade', array(
              'pair'    => __COINS_PARA__,                           // пара (пример: ltc_btc)
              'type'    => 'buy',                                    // тип операции (пример: buy или sell)
              'rate'    => $Price_top,                               // курс, по которому необходимо купить
              'amount'  => $Config->budget . rand(10000, 90000)      // количество, которое необходимо купить
            ));


            echo ' ================================= '  . $R;
            echo ' Остаток Руб      : ' . $Rur . $R;
            echo ' Куплено манет    : ' . $Ltc . $R;
            echo ' Покупаю по цене  : ' . $Price_top    . $R;
            echo ' ================================= '  . $RR;


      $a++;
      sleep(1);         // Покупать 1 раз в 1 секунду

      if ( $a == 5 ) {  // Делаем по 5 закупок за 1 заход
        $a = 0;
        sleep(4);       // После первых пяти закупок ждём 4 секунды, что бы в БАН не свалить
      }

    } // while

Как работает, сказал уже выше, топает бот на биржу делает 5 сделок, встаёт на 4 секунды и снова идёт скупать… Все эти параметры можете подстроить под себя, но учтите, что получить по хребтине банным веником от биржи можно вообще легко. Примерно минут на 10 – 15. У них там просто «cloudflare» врублена, так что все серьёзно пацаны!)))

Бот в запущенном виде.

Пампер для биржи YoBit

На самой же бирже можно видеть что-то подобное.

Можно и продавать..

Массовая продажа монет на YoBit

Вот такой Бот для пампа на YoBit, со скромным функционалом, можно и по умнее его сделать, но мне в лом…  Да, этот бот легко перенастраивается для продажи монеты, если кому нужно пишите. Сейчас расписывать не буду либо задолбался печатать. Я лучше потопаю писать торгового бота, все для той же бирже.


Оставить комментарий