├── .gitignore ├── DATA ├── secrets_sample.ini └── tofy.dat ├── LOGS └── .gitignore ├── README.md ├── TMP └── .gitignore ├── admindb.sh ├── composer.json ├── config.ini ├── dba ├── adminer.php └── index.php ├── exchanges └── okc │ ├── Example.php │ ├── OKCoin │ ├── ApiKeyAuthentication.php │ ├── Authentication.php │ ├── Base.php │ ├── Exception.php │ ├── OKCoin.php │ ├── Requestor.php │ ├── Rpc.php │ └── SimpleApiKeyAuthentication.php │ └── ReadMe ├── imgs └── output.gif ├── run.sh ├── src ├── algorithm.cry └── brain.cry ├── start.php ├── update.sh └── w /.gitignore: -------------------------------------------------------------------------------- 1 | composer.lock 2 | vendor 3 | DATA/secrets.ini 4 | src/brain.php 5 | src/algorithm.php -------------------------------------------------------------------------------- /DATA/secrets_sample.ini: -------------------------------------------------------------------------------- 1 | ;; 2 | ; TOFY - bitcoin trader bot (former HAL10K) 3 | ; 4 | ; @package intrd/bitcoin-tofybot 5 | ; @version 1.0 6 | ; @tags bitcoin, bot, eggdrop, php, okcoin 7 | ; @link http://github.com/intrd/bitcoin-tofybot 8 | ; @author intrd (Danilo Salles) - http://dann.com.br 9 | ; @author Rafael (Rafael Def) - http://nosite.xxx 10 | ; @copyright (proprietary) 2016, intrd 11 | ; @license Proprietary software - https://en.wikipedia.org/wiki/Proprietary_software 12 | ; Dependencies: 13 | ; - php >=5.3.0 14 | ; - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev 2 | 3 | TOFY - bitcoin trader bot (former HAL10K) 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 |
Packageintrd/bitcoin-tofybot
Version1.0
Tagsbitcoin, bot, eggdrop, php, okcoin
Project URLhttp://github.com/intrd/bitcoin-tofybot
Authorintrd (Danilo Salles) - http://dann.com.br 24 |
AuthorRafael (Rafael Def) - http://nosite.xxx
Copyright(proprietary) 2016, intrd
LicenseProprietary software
Dependencies • php >=5.3.0 • intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev 38 |
40 |
41 | 42 | 43 | A reboot of my old HAL10K traderbot that was deprecated on MTGox crash. (new algos, new approach) 44 | 45 | ![running_win](/imgs/output.gif?raw=true "sample") 46 | 47 | * Working on OKCoin Futures 48 | 49 | Installation 50 | ============ 51 | 52 | System requiriments & dependencies 53 | 54 | ``` 55 | $ sudo apt-get update & sudo apt-get upgrade 56 | $ sudo apt-get install curl git php5-curl php5-cli php5-mcrypt 57 | $ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 58 | 59 | Now download the package (Composer automatically install all dependencies) 60 | $ git clone https://github.com/intrd/bitcoin-tofybot && cd bitcoin-tofybot 61 | $ composer install -o 62 | $ composer update -o 63 | 64 | ``` 65 | ## Usage 66 | 67 | 1. Rename `secrets_sample.ini` to `secrets.ini`. 68 | 2. Open secrets.ini and change `ENCRYPTION_KEY` to serial number given to you (Request it from developers. Yes, its needed to decrypt/run this bot) 69 | 3. Review `config.ini`, and.. 70 | 71 | ``` 72 | Backtesting # Cryptowat.ch - okcoinUSDfutures (1min interval), 24 hours ago 73 | $ ./run.sh backtesting cryptowat_okcoinUSDfutures 0 74 | 75 | Backtesting # INTRD Records - okcoinUSDfutures (custom interval or 10s minimum), since 10/28/2016 01:43:19 76 | $ ./run.sh backtesting intrd_okcoinUSDfutures 0 77 | 78 | Paper # OkCoinUSDfutures LIVE API 79 | $ ./run.sh paper live_okcoinUSDfutures 0 80 | * Set the last argument to 1, to reset balance/orders/positions. 81 | ``` 82 | 83 | ## Update 84 | 85 | ``` 86 | $ ./update.sh 87 | $ composer update -o 88 | 89 | ``` 90 | -------------------------------------------------------------------------------- /TMP/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | */ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /admindb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ## 3 | # TOFY - bitcoin trader bot (former HAL10K) 4 | # 5 | # @package intrd/bitcoin-tofybot 6 | # @version 1.0 7 | # @tags bitcoin, bot, eggdrop, php, okcoin 8 | # @link http://github.com/intrd/bitcoin-tofybot 9 | # @author intrd (Danilo Salles) - http://dann.com.br 10 | # @author Rafael (Rafael Def) - http://nosite.xxx 11 | # @copyright (proprietary) 2016, intrd 12 | # @license Proprietary software - https://en.wikipedia.org/wiki/Proprietary_software 13 | # Dependencies: 14 | # - php >=5.3.0 15 | # - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev =5.3.0", 23 | "intrd/php-common": ">=1.0.x-dev =1.0.x-dev =1.0.x-dev =5.3.0 14 | ; - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev =5.3.0 15 | * - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev 26 | -------------------------------------------------------------------------------- /exchanges/okc/Example.php: -------------------------------------------------------------------------------- 1 | 'ltc_usd'); 16 | $result = $client -> tickerApi($params); 17 | print_r($result); 18 | 19 | //获取OKCoin市场深度 20 | $params = array('symbol' => 'btc_usd', 'size' => 5); 21 | $result = $client -> depthApi($params); 22 | print_r($result); 23 | 24 | 25 | //获取OKCoin历史交易信息 26 | //$params = array('symbol' => 'btc_usd'); 27 | //$result = $client -> tradesApi($params); 28 | 29 | //获取比特币或莱特币的K线数据 30 | //$params = array('symbol' => 'btc_usd', 'type' => '1day', 'size' => 5); 31 | //$result = $client -> klineDataApi($params); 32 | 33 | //获取用户信息 34 | //$params = array('api_key' => API_KEY); 35 | //$result = $client -> userinfoApi($params); 36 | 37 | //下单交易 38 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'type' => 'buy', 'price' => 1, 'amount' => 1); 39 | //$result = $client -> tradeApi($params); 40 | //var_dump($result); 41 | 42 | //批量下单 43 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'type' => 'buy', 'orders_data' => "[;price:3,amount:5,type:'sell'var_dump($result);,;price:3,amount:3,type:'buy'var_dump($result);,;price:3,amount:3var_dump($result);]"); 44 | //$result = $client -> batchTradeApi($params); 45 | 46 | //撤销订单 47 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'order_id' => '546,456,998,65656'); 48 | //$result = $client -> cancelOrderApi($params); 49 | 50 | //获取用户的订单信息 51 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'order_id' => -1); 52 | //$result = $client -> orderInfoApi($params); 53 | 54 | //批量获取用户订单 55 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'status' => 0, 'current_page' => '1', 'page_length' => '1'); 56 | //$result = $client -> ordersInfoApi($params); 57 | 58 | //获取历史订单信息,只返回最近七天的信息 59 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'type' => 0, 'order_id' => '123,123,555'); 60 | //$result = $client -> orderHistoryApi($params); 61 | 62 | //提币BTC/LTC 63 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'chargefee' => '0.0001', 'trade_pwd' => '123456', 'withdraw_address' => '405sdsdsdsdsdsds', 'withdraw_amount' => 1); 64 | //$result = $client -> withdrawApi($params); 65 | 66 | //取消提币BTC/LTC 67 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'withdraw_id' => 301); 68 | //$result = $client -> cancelWithdrawApi($params); 69 | 70 | //获取OKCoin期货行情(期货盘口) 71 | //$params = array('symbol' => 'btc_usd', 'contract_type' => 'this_week'); 72 | //$result = $client -> tickerFutureApi($params); 73 | 74 | //获取OKCoin期货深度信息 75 | //$params = array('symbol' => 'btc_usd', 'contract_type' => 'this_week', 'size' => 5); 76 | //$result = $client -> depthFutureApi($params); 77 | 78 | //获取OKCoin期货交易记录信息 79 | //$params = array('symbol' => 'btc_usd', 'contract_type' => 'this_week'); 80 | //$result = $client -> tradesFutureApi($params); 81 | 82 | //获取美元人民币汇率 83 | //$result = $client -> getUSD2CNYRateFutureApi(null); 84 | 85 | //获取交割预估价 86 | //$params = array('symbol' => 'btc_usd'); 87 | //$result = $client -> getEstimatedPriceFutureApi($params); 88 | 89 | //获取OKCoin期货交易历史 90 | //$params = array('symbol' => 'btc_usd', 'date' => '2014-10-31', 'since' => '0'); 91 | //$result = $client -> futureTradesHistoryFutureApi($params); 92 | 93 | //获取期货合约的K线数据 94 | //$params = array('symbol' => 'btc_usd', 'type' => '1day', 'contract_type' => 'this_week', 'size' => 5); 95 | //$result = $client -> getFutureIndexFutureApi($params); 96 | 97 | //获取OKCoin期货账户信息 (全仓) 98 | //$params = array('api_key' => API_KEY); 99 | //$result = $client -> userinfoFutureApi($params); 100 | 101 | //获取用户持仓获取OKCoin期货账户信息 (全仓) 102 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'contract_type' => 'this_week'); 103 | //$result = $client -> positionFutureApi($params); 104 | 105 | //期货下单 106 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'contract_type' => 'this_week', 'price' => '400', 'amount' => '1', 'type' => '1', 'lever_rate' => '10'); 107 | //$result = $client -> tradeFutureApi($params); 108 | 109 | //期货批量下单 110 | //$params = array('api_key' => API_KEY, 'orders_data' => '[;price:5,amount:2,type:1,match_price:1var_dump($result);,;price:2,amount:3,type:1,match_price:1var_dump($result);]', 'symbol' => 'btc_usd', 'contract_type' => 'this_week', 'lever_rate' => '10'); 111 | //$result = $client -> batchTradeFutureApi($params); 112 | 113 | //获取期货订单信息 114 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'order_id' => '173126', 'contract_type' => 'this_week'); 115 | //$result = $client -> getOrderFutureApi($params); 116 | 117 | //取消期货订单 118 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'order_id' => '173126', 'contract_type' => 'this_week'); 119 | //$result = $client -> cancelFutureApi($params); 120 | 121 | //获取逐仓期货账户信息 122 | //$params = array('api_key' => API_KEY); 123 | //$result = $client -> fixUserinfoFutureApi($params); 124 | 125 | //逐仓用户持仓查询 126 | //$params = array('api_key' => API_KEY, 'symbol' => 'btc_usd', 'contract_type' => 'this_week', 'type' => 1); 127 | //$result = $client -> singleBondPositionFutureApi($params); 128 | 129 | } catch (Exception $e) { 130 | $msg = $e -> getMessage(); 131 | error_log($msg); 132 | } 133 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/ApiKeyAuthentication.php: -------------------------------------------------------------------------------- 1 | _apiKey = $apiKey; 11 | $this->_apiKeySecret = $apiKeySecret; 12 | } 13 | 14 | public function getData() 15 | { 16 | $data = new stdClass(); 17 | $data->apiKey = $this->_apiKey; 18 | $data->apiKeySecret = $this->_apiKeySecret; 19 | return $data; 20 | } 21 | } -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/Authentication.php: -------------------------------------------------------------------------------- 1 | _authentication = $authentication; 28 | } else { 29 | // Here, $authentication was not a valid authentication object, so 30 | // analyze the constructor parameters and return the correct object. 31 | // This should be considered deprecated, but it's here for backward compatibility. 32 | // In older versions of this library, the first parameter of this constructor 33 | // can be either an API key string or an OAuth object. 34 | if ($tokens !== null) { 35 | $this -> _authentication = new OKCoin_OAuthAuthentication($authentication, $tokens); 36 | } else if ($authentication !== null && is_string($authentication)) { 37 | $apiKey = $authentication; 38 | if ($apiKeySecret === null) { 39 | // Simple API key 40 | $this -> _authentication = new OKCoin_SimpleApiKeyAuthentication($apiKey); 41 | } else { 42 | $this -> _authentication = new OKCoin_ApiKeyAuthentication($apiKey, $apiKeySecret); 43 | } 44 | } else { 45 | throw new OKCoin_Exception('Could not determine API authentication scheme'); 46 | } 47 | } 48 | 49 | $this -> _rpc = new OKCoin_Rpc(new OKCoin_Requestor(), $this -> _authentication); 50 | } 51 | 52 | // Used for unit testing only 53 | public function setRequestor($requestor) { 54 | $this -> _rpc = new OKCoin_Rpc($requestor, $this -> _authentication); 55 | return $this; 56 | } 57 | 58 | public function get($path, $params = array()) { 59 | return $this -> _rpc -> request("GET", $path, $params); 60 | } 61 | 62 | public function post($path, $params = array()) { 63 | return $this -> _rpc -> request("POST", $path, $params); 64 | } 65 | 66 | public function delete($path, $params = array()) { 67 | return $this -> _rpc -> request("DELETE", $path, $params); 68 | } 69 | 70 | public function put($path, $params = array()) { 71 | return $this -> _rpc -> request("PUT", $path, $params); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/Exception.php: -------------------------------------------------------------------------------- 1 | http_code = $http_code; 9 | $this->response = $response; 10 | } 11 | 12 | public function getResponse() 13 | { 14 | return $this->response; 15 | } 16 | 17 | public function getHttpCode() 18 | { 19 | return $this->http_code; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/OKCoin.php: -------------------------------------------------------------------------------- 1 | get("/api/v1/ticker.do", $params); 14 | } 15 | 16 | //获取OKCoin市场深度 17 | public function depthApi($params = null) { 18 | return $this -> get("/api/v1/depth.do", $params); 19 | } 20 | 21 | //获取OKCoin历史交易信息 22 | public function tradesApi($params = null) { 23 | return $this -> get("/api/v1/trades.do", $params); 24 | } 25 | 26 | //获取比特币或莱特币的K线数据 27 | public function klineDataApi($params = null) { 28 | return $this -> get("/api/v1/kline.do", $params); 29 | } 30 | 31 | //获取用户信息 32 | public function userinfoApi($params = null) { 33 | return $this -> post("/api/v1/userinfo.do", $params); 34 | } 35 | 36 | //下单交易 37 | public function tradeApi($params = null) { 38 | return $this -> post("/api/v1/trade.do", $params); 39 | } 40 | 41 | //批量下单 42 | public function batchTradeApi($params = null) { 43 | return $this -> post("/api/v1/batch_trade.do", $params); 44 | } 45 | 46 | //撤销订单 47 | public function cancelOrderApi($params = null) { 48 | return $this -> post("/api/v1/cancel_order.do", $params); 49 | } 50 | 51 | //获取用户的订单信息 52 | public function orderInfoApi($params = null) { 53 | return $this -> post("/api/v1/order_info.do", $params); 54 | } 55 | 56 | //批量获取用户订单 57 | public function ordersInfoApi($params = null) { 58 | return $this -> post("/api/v1/orders_info.do", $params); 59 | } 60 | 61 | //获取历史订单信息,只返回最近七天的信息 62 | public function orderHistoryApi($params = null) { 63 | return $this -> post("/api/v1/order_history.do", $params); 64 | } 65 | 66 | //提币BTC/LTC 67 | public function withdrawApi($params = null) { 68 | return $this -> post("/api/v1/withdraw.do", $params); 69 | } 70 | 71 | //取消提币BTC/LTC 72 | public function cancelWithdrawApi($params = null) { 73 | return $this -> post("/api/v1/cancel_withdraw.do", $params); 74 | } 75 | 76 | //获取OKCoin期货行情(期货盘口) 77 | public function tickerFutureApi($params = null) { 78 | 79 | return $this -> get("/api/v1/future_ticker.do", $params); 80 | } 81 | 82 | //获取OKCoin期货深度信息 83 | public function depthFutureApi($params = null) { 84 | return $this -> get("/api/v1/future_depth.do", $params); 85 | } 86 | 87 | //获取OKCoin期货交易记录信息 88 | public function tradesFutureApi($params = null) { 89 | return $this -> get("/api/v1/future_trades.do", $params); 90 | } 91 | 92 | //获取美元人民币汇率 93 | public function getUSD2CNYRateFutureApi($params = null) { 94 | return $this -> get("/api/v1/exchange_rate.do", $params); 95 | } 96 | 97 | //获取交割预估价 98 | public function getEstimatedPriceFutureApi($params = null) { 99 | return $this -> get("/api/v1/future_estimated_price.do", $params); 100 | } 101 | 102 | //获取OKCoin期货交易历史 103 | public function futureTradesHistoryFutureApi($params = null) { 104 | return $this -> get("/api/v1/future_trades_history.do", $params); 105 | } 106 | 107 | //获取期货合约的K线数据 108 | public function getFutureIndexFutureApi($params = null) { 109 | return $this -> get("/api/v1/future_index.do", $params); 110 | } 111 | 112 | //获取OKCoin期货账户信息 (全仓) 113 | public function userinfoFutureApi($params = null) { 114 | return $this -> post("/api/v1/future_userinfo_4fix.do", $params); 115 | } 116 | 117 | //获取用户持仓获取OKCoin期货账户信息 (全仓) 118 | public function positionFutureApi($params = null) { 119 | return $this -> post("/api/v1/future_position_4fix.do", $params); 120 | } 121 | 122 | //期货下单 123 | public function tradeFutureApi($params = null) { 124 | return $this -> post("/api/v1/future_trade.do", $params); 125 | } 126 | 127 | //期货批量下单 128 | public function batchTradeFutureApi($params = null) { 129 | return $this -> post("/api/v1/future_batch_trade.do", $params); 130 | } 131 | 132 | //获取期货订单信息 133 | public function getOrderFutureApi($params = null) { 134 | return $this -> post("/api/v1/future_order_info.do", $params); 135 | } 136 | 137 | public function getOrdersFutureApi($params = null) { 138 | return $this -> post("/api/v1/future_orders_info.do", $params); 139 | } 140 | 141 | //取消期货订单 142 | public function cancelFutureApi($params = null) { 143 | return $this -> post("/api/v1/future_cancel.do", $params); 144 | } 145 | 146 | //获取逐仓期货账户信息 147 | public function fixUserinfoFutureApi($params = null) { 148 | return $this -> post("/api/v1/future_userinfo_4fix.do", $params); 149 | } 150 | 151 | //逐仓用户持仓查询 152 | public function singleBondPositionFutureApi($params = null) { 153 | return $this -> post("/api/v1/future_position_4fix.do", $params); 154 | } 155 | 156 | } 157 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/Requestor.php: -------------------------------------------------------------------------------- 1 | $statusCode, "body" => $response ); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/Rpc.php: -------------------------------------------------------------------------------- 1 | _requestor = $requestor; 9 | $this -> _authentication = $authentication; 10 | } 11 | 12 | public function request($method, $url, $params) { 13 | // $url = OKCoinBase::API_BASE . $url; 14 | // Initialize CURL 15 | $ch = curl_init(); 16 | // $curl = curl_init(); 17 | $curlOpts = array(); 18 | 19 | // Headers 20 | $headers = array('User-Agent: OKCoinPHP/v1'); 21 | 22 | //GET USER APIKEY 23 | $auth = $this -> _authentication -> getData(); 24 | 25 | // Get the authentication class and parse its payload into the HTTP header. 26 | 27 | // HTTP method 28 | $method = strtolower($method); 29 | if ($method == 'get') { 30 | curl_setopt($ch, CURLOPT_HTTPGET, 1); 31 | if ($params != null) { 32 | $queryString = http_build_query($params); 33 | $url .= "?" . $queryString; 34 | } 35 | } else if ($method == 'post') { 36 | $authenticationClass = get_class($this -> _authentication); 37 | 38 | switch ($authenticationClass) { 39 | 40 | case 'OKCoin_ApiKeyAuthentication' : 41 | //OKCoin POST请求加密流程 42 | ksort($params); 43 | $sign = ""; 44 | while ($key = key($params)) { 45 | $sign .= $key . "=" . $params[$key] . "&"; 46 | next($params); 47 | } 48 | $sign = $sign . "secret_key=" . $auth -> apiKeySecret; 49 | $sign = strtoupper(md5($sign)); 50 | $params['sign'] = $sign; 51 | break; 52 | default : 53 | throw new OKCoin_Exception("Invalid authentication mechanism"); 54 | break; 55 | } 56 | 57 | curl_setopt($ch, CURLOPT_POST, 1); 58 | // $curlOpts[CURLOPT_POST] = 1; 59 | 60 | // Create query string 61 | curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); 62 | 63 | // $curlOpts[CURLOPT_POSTFIELDS] = json_encode($params); 64 | //$params; 65 | } 66 | 67 | // CURL options 68 | curl_setopt($ch, CURLOPT_URL, substr(OKCoinBase::WEB_BASE, 0, -1) . $url); 69 | curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 70 | curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); 71 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 72 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 73 | 74 | // $curlOpts[CURLOPT_URL] = substr(OKCoinBase::WEB_BASE, 0, -1) . $url; 75 | // $curlOpts[CURLOPT_HTTPHEADER] = $headers; 76 | // $curlOpts[CURLOPT_SSL_VERIFYHOST] = FALSE; 77 | // $curlOpts[CURLOPT_SSL_VERIFYPEER] = FALSE; 78 | 79 | // curl_setopt_array($curl, $curlOpts); 80 | 81 | // Do request 82 | $response = $this -> _requestor -> doCurlRequest($ch); 83 | // Decode response 84 | try { 85 | $body = $response['body']; 86 | $json = json_decode($body); 87 | } catch (Exception $e) { 88 | echo "Invalid response body" . $response['statusCode'] . $response['body']; 89 | } 90 | if ($json === null) { 91 | echo "Invalid response body" . $response['statusCode'] . $response['body']; 92 | } 93 | if (isset($json -> error)) { 94 | throw new OKCoin_Exception($json -> error, $response['statusCode'], $response['body']); 95 | } else if (isset($json -> errors)) { 96 | throw new OKCoin_Exception(implode($json -> errors, ', '), $response['statusCode'], $response['body']); 97 | } 98 | 99 | return $json; 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /exchanges/okc/OKCoin/SimpleApiKeyAuthentication.php: -------------------------------------------------------------------------------- 1 | _apiKey = $apiKey; 8 | } 9 | 10 | public function getData() { 11 | $data = new stdClass(); 12 | $data -> apiKey = $this -> _apiKey; 13 | return $data; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /exchanges/okc/ReadMe: -------------------------------------------------------------------------------- 1 | 2 | OKCOIN REST API PHP DEMO 3 | 4 | 环境: 5 | 1.PHP 5.5.19 6 | 2.要在php.ini里启用curl模块;php.ini里搜extension=php_curl.dll 把这行前面的分号去掉 7 | 8 | 9 | 说明: 10 | 1.如果不需要部署在SERVER 端 不需安装APACHE,使用 PHP 命令就可以运行代码 11 | 2.入口函数 OKCoinApi.php 12 | 3.遵循OKCOIN 官网REST API 使用 MD5加密规则 13 | 具体加密流程在:Rpc.php 39 - 50 行 14 | 15 | 4.Base.php 中 WEB_BASE 参数,配置访问OKCoin国际中国站地址 16 | PS: OKCoin API 技术群 334662836 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /imgs/output.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intrd/bitcoin-tofybot/56d6fadc14cf5f03ab01caa7c8b2fc05061083b1/imgs/output.gif -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | ## 2 | # TOFY - bitcoin trader bot (former HAL10K) 3 | # 4 | # @package intrd/bitcoin-tofybot 5 | # @version 1.0 6 | # @tags bitcoin, bot, eggdrop, php, okcoin 7 | # @link http://github.com/intrd/bitcoin-tofybot 8 | # @author intrd (Danilo Salles) - http://dann.com.br 9 | # @author Rafael (Rafael Def) - http://nosite.xxx 10 | # @copyright (proprietary) 2016, intrd 11 | # @license Proprietary software - https://en.wikipedia.org/wiki/Proprietary_software 12 | # Dependencies: 13 | # - php >=5.3.0 14 | # - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev > $LOGFILE 42 | 43 | while true 44 | do 45 | php start.php $1 $2 $3 2>&1 | tee -a $LOGFILE 46 | #sleep 5 47 | done 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/algorithm.cry: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /src/brain.cry: -------------------------------------------------------------------------------- 1 | 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 -------------------------------------------------------------------------------- /start.php: -------------------------------------------------------------------------------- 1 | =5.3.0 15 | * - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev $secrets["t_oauth_access_token"], 55 | 'oauth_access_token_secret' => $secrets["t_oauth_access_token_secret"], 56 | 'consumer_key' => $secrets["t_consumer_key"], 57 | 'consumer_secret' => $secrets["t_consumer_secret"] 58 | ); 59 | $t_users=$secrets["t_users"]; 60 | $twitter = new TwitterAPIExchange($settings); 61 | 62 | $tele_token=$secrets["tele_token"]; 63 | $tele_chatid=$secrets["tele_chatid"]; 64 | 65 | if (!defined('ENCRYPTION_KEY')) define('ENCRYPTION_KEY', $secrets["ENCRYPTION_KEY"]); 66 | 67 | if (!file_exists($brain)){ 68 | $fil=file_get_contents($brain_cry); 69 | $cry = cry::mc_decrypt($fil, ENCRYPTION_KEY); 70 | file_put_contents($brain, $cry); 71 | }else{ 72 | $fil=file_get_contents($brain); 73 | $fil = cry::mc_encrypt($fil, ENCRYPTION_KEY); 74 | file_put_contents($brain_cry, $fil); 75 | } 76 | 77 | if (!file_exists($algorithm)){ 78 | $fil=file_get_contents($algorithm_cry); 79 | $cry = cry::mc_decrypt($fil, ENCRYPTION_KEY); 80 | file_put_contents($algorithm, $cry); 81 | }else{ 82 | $fil=file_get_contents($algorithm); 83 | $fil = cry::mc_encrypt($fil, ENCRYPTION_KEY); 84 | file_put_contents($algorithm_cry, $fil); 85 | } 86 | 87 | require_once($algorithm); 88 | 89 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | ## 2 | # TOFY - bitcoin trader bot (former HAL10K) 3 | # 4 | # @package intrd/bitcoin-tofybot 5 | # @version 1.0 6 | # @tags bitcoin, bot, eggdrop, php, okcoin 7 | # @link http://github.com/intrd/bitcoin-tofybot 8 | # @author intrd (Danilo Salles) - http://dann.com.br 9 | # @author Rafael (Rafael Def) - http://nosite.xxx 10 | # @copyright (proprietary) 2016, intrd 11 | # @license Proprietary software - https://en.wikipedia.org/wiki/Proprietary_software 12 | # Dependencies: 13 | # - php >=5.3.0 14 | # - intrd/php-common >=1.0.x-dev =1.0.x-dev =1.0.x-dev