Example #1
0
 public function actionTest()
 {
     $start = time();
     Yii::app()->cache->flush();
     Yii::app()->db->createCommand()->truncateTable(Buy::model()->tableName());
     Yii::app()->db->createCommand()->truncateTable(Sell::model()->tableName());
     Yii::app()->db->createCommand()->truncateTable(Order::model()->tableName());
     Yii::app()->db->createCommand()->truncateTable(Balance::model()->tableName());
     // Тест на 10 000 руб.
     Status::setParam('balance', 10000);
     Status::setParam('balance_btc', 0);
     $exs = Exchange::getAllByDt('btc_rur', '2013-12-16', '2014-01-06');
     $cnt = 0;
     foreach ($exs as $exchange) {
         $obj = new stdClass();
         $obj->dtm = $exchange['dt'];
         $obj->buy = $exchange['buy'];
         $obj->sell = $exchange['sell'];
         $cnt++;
         $bot = new Bot($obj);
         $bot->run();
     }
     $end = time();
     echo '<b>Elapsed time: ' . ($end - $start) / 60 . ' min.<br/>';
     echo '<b>Steps count: ' . $cnt . '<br/>';
 }
Example #2
0
 /**
  * Протестировать бота на старых данных
  */
 public function runTest()
 {
     // Получаем статистику за период
     $period_from = date('Y-m-d H:i:s', time() - $this->analize_period);
     $exdata = Exchange::getDataFrom($period_from);
     // Получаем данные биржи
     //$this->balance = 1000;
     //$exdata = Exchange::getTestData();
     Log::Add(0, 'ПОКУПАЕМ: ');
     $this->AnalizeBuy($exdata);
     Log::Add(0, 'ПРОДАЕМ: ');
     $this->AnalizeSell($exdata);
     Status::setParam('balance', $this->balance);
     Status::setParam('balance_btc', $this->balance_btc);
     if ($this->order_cnt > 0) {
         Log::Add(0, 'Баланс (руб.): ' . $this->balance, 1);
         Log::Add(0, 'Всего заработано: ' . $this->total_income, 1);
         Log::Add(0, 'Остаток btc: ' . round($this->balance_btc, 5), 1);
     }
 }
Example #3
0
 public function actionOrders()
 {
     if ($_SERVER['HTTP_HOST'] !== 'btcbot.loc') {
         return;
     }
     $btc_rur = Exchange::updatePrices('btc_rur');
     $bot = new Bot($btc_rur);
     $info = $bot->api->getInfo();
     if ($info) {
         $bot->setBalance($info['funds']['rur']);
         $bot->setBalanceBtc($info['funds']['btc']);
         Status::setParam('balance', $info['funds']['rur']);
         Status::setParam('balance_btc', $info['funds']['btc']);
         Balance::actualize('rur', $bot->balance);
         Balance::actualize('btc', $bot->balance_btc);
     }
     $bot->checkOrders();
 }
Example #4
0
 public function run()
 {
     $info = $this->api->getInfo();
     $start_balance = 0;
     $start_balance_btc = 0;
     if ($info) {
         $this->balance = $info['funds']['rur'];
         $this->balance_btc = $info['funds']['btc'];
         Status::setParam('balance', $info['funds']['rur']);
         Status::setParam('balance_btc', $info['funds']['btc']);
         $start_balance = $this->balance;
         $start_balance_btc = $this->balance_btc;
         Balance::actualize('rur', $this->balance);
         Balance::actualize('btc', $this->balance_btc);
     }
     $this->tomail = array();
     $this->NeedBuy();
     $this->NeedSell();
     $this->checkOrders();
     if (sizeof($this->tomail) > 0) {
         $this->sendMail();
     }
     Status::setParam('balance', $this->balance);
     Status::setParam('balance_btc', $this->balance_btc);
     if ($this->order_cnt > 0) {
         Log::Add('Баланс на начало');
         Log::Add('Руб: ' . $start_balance, 1);
         Log::Add('Btc: ' . $start_balance_btc, 1);
         Log::Add('Баланс на конец');
         Log::Add('Руб: ' . $this->balance, 1);
         Log::Add('Btc: ' . $this->balance_btc, 1);
         Log::Add('Всего заработано: ' . $this->total_income, 1);
     }
 }