Цитировать по имени
цитировать ответ
|
Re: [BOUNTY] просто .php продать-бот для mtgox и intersango
так получается, что один член бросить курить, потому что я, очевидно, не сделал его достаточно ясно, что я хотел, и как я хочу. поэтому любые берущие? я обеспечу передачу файлов доступ к моему серверу, так что вы можете проверить его. я также предоставит вам с моими учетными данными API (с необходимыми разрешениями и очень немногие BTC), так что вы можете убедиться, что он действительно делает то, что должен. хитрый пункт был расчет распространения, кажется. так сказать, вы идете http://bitcoin.clarkmoody.com/и вы посмотрите на колонку "сумма" Я хочу, чтобы бот использовать порядок ставки в сторону торгов спреда где "сумма > Икс" Х = 20 цена BTC сумма 8,85212 1,1325 1,1 8,86147 0,0136 1,1 8,88159 1,5413 2,7 8,88234 25,0000 27,7 в этом примере, цена попросить распространения будет 8.88234 Х = 30 цена BTC сумма 8,85150 1,1325 1,1 8,85212 1,1325 2,3 8,88159 1,5413 3,8 8,88234 25,0000 28,8 8,88362 0,0192 28,8 8,89000 8,8900 37,7 в этом примере, цена попросить распространения будет 8.89000 так это цена, где я могу торговать X биткоен. Х = 50 просуммировать цена BTC 10,2 10,2245 8,67497 20,4 10,2249 8,67466 80,4 59,9540 8,64670 140,4 59,9524 8,64615 154,2 13,8541 8,64570
В данном примере цена предложений для бота будет 8.64670, так что здесь я могу торговать 50 Bitcoins. код intersango PHP требуют ("Settings.php"); если(INTERSANGOAPIKEY==«») { эхо «Вы не поставить ключ апи<бр />"; убийство; } для($ язнак равно0; $ я<2; $ я++) { $ currentfundsзнак равноgetfunds(); эхо «Монета в счете».$ currentfunds."<бр />"; если($ currentfunds > MINAMOUNTOFBTC) { $ тикерзнак равноjson_decode(запрос("Https://intersango.com/api/ticker.php?currency_pair_id=2"), правда); $ спроситьзнак равно$ тикер[«Продать»]; $ ставказнак равно$ тикер['купить']; если($ ставка-$ спросить>знак равно0 && ($ ставка-$ спросить)>знак равноРАСПРОСТРАНЕНИЕ) { $ размерзнак равно$ currentfunds* (PERCENTTOTRADE/100); $ midspreadзнак равно$ ставка-$ спросить) /2; эхо «Размер заказа».$ размер."<бр />"; разместить заказ($ размер,$ midspread); эхо «Размещенный заказ».$ размер." для ".$ midspread."<бр />"; } Еще { эхо «Spread был отрицательным<бр />"; } } Еще { cancelAllOrders(); эхо «Отменены все заказы»."<бр />"; } } функция getAcountid() { $ данных= Массив ('Api_key'знак равно>INTERSANGOAPIKEY); $ счетазнак равноjson_decode(запрос('Https://intersango.com/api/authenticated/v0.1/listAccounts.php',$ данных),правда); вернуть $ счета[0] ['Я бы']; } функция getfunds() { $ данных= Массив ('Api_key'знак равно>INTERSANGOAPIKEY); $ счетазнак равноjson_decode(запрос('Https://intersango.com/api/authenticated/v0.1/listAccounts.php',$ данных),правда); для($ язнак равно0; $ я<размер($ счета); $ я++) { если($ счета[$ я] ['Currency_id'] ==1) вернуть $ счета[$ я] ['баланс']; } вернуть ноль; } функция разместить заказ($ количество, $ ставка) { $ данных= Массив ('Api_key'знак равно>INTERSANGOAPIKEY); $ данных['Account_ID'знак равноgetAcountid(); $ данных[«Продажа»знак равноправда; $ данных['тип'знак равно'GTC'; $ данных['количество'знак равно$ количество; $ данных['ставка'знак равно$ ставка; $ данных['Base_account_id'знак равно«»; $ данных['Quote_account_id'знак равно«»; запрос('Https://intersango.com/api/authenticated/v0.1/placeLimitOrder.php', $ данных); } функция cancelAllOrders() { $ данных= Массив ('Api_key'знак равно>INTERSANGOAPIKEY); $ данных['Account_ID'знак равноgetAcountid(); $ заказовзнак равноjson_decode(запрос('Https://intersango.com/api/authenticated/v0.1/listOrders.php', $ данных)); снята с охраны ($ данных['фильтр']); для($ язнак равно0; $ я<подсчитывать($ заказов); $ я++) { $ данных['номер заказа'знак равно$ заказов[$ я] ['Я бы']; запрос('Https://intersango.com/api/authenticated/v0.1/requestCancelOrder.php', $ данных); } } функция запрос($ URL, $ PostDataзнак равноноль) { $ ч знак равно curl_init($ URL); curl_setopt($ ч, CURLOPT_RETURNTRANSFER, правда); curl_setopt($ ч,CURLOPT_CONNECTTIMEOUT, 30); если($ PostData!знак равноноль) { curl_setopt($ ч,CURLOPT_POST, подсчитывать($ PostData)); $ fields_string; для каждого($ PostData в виде $ ключзнак равно>$ значение) { $ fields_string .знак равно $ ключ.знак равно.$ значение.'&'; } RTRIM($ fields_string,'&'); curl_setopt($ ч, CURLOPT_POSTFIELDS, $ fields_string); } $ возвратзнак равноcurl_exec($ ч); curl_close($ ч); вернуть $ возврат; } ?> код mtgox PHP требуют ("Settings.php"); если(MTGOXSECRET==«» || MTGOXAPIKEY==«») { эхо «Вы не поставить ключ апи<бр />"; убийство; } для($ язнак равно0; $ я<2; $ я++) { $ currentfundsзнак равноgetfunds(); эхо «Монета в счете».$ currentfunds."<бр />"; если($ currentfunds > MINAMOUNTOFBTC) { $ тикерзнак равноmtgox_query('1 / BTCEUR / тикер'); $ спроситьзнак равно$ тикер['вернуть'] [«Продать»] ['стоимость']; $ ставказнак равно$ тикер['вернуть'] ['купить'] ['стоимость']; если($ ставка-$ спросить>знак равно0 && ($ ставка-$ спросить)>знак равноРАСПРОСТРАНЕНИЕ) { $ размерзнак равно$ currentfunds* (PERCENTTOTRADE/100); $ midspreadзнак равно$ ставка-$ спросить) /2; эхо «Размер заказа».$ размер."<бр />"; подтвердить заказ('просить', $ midspread, $ размер); эхо «Размещенный заказ».$ размер." для ".$ midspread."<бр />"; } Еще { эхо «Spread был отрицательным<бр />"; } } Еще { cancelAllOrders(); эхо «Отменены все заказы»."<бр />"; } }
функция getfunds() { $ темпзнак равноmtgox_query('0 / getFunds.php'); вернуть $ темп['BTCS']; } функция cancelAllOrders() { $ заказовзнак равноmtgox_query('1 / общие / частные / заказы', массив ('тип'знак равно>'1', 'положение дел'знак равно>'1')); для($ язнак равно0; $ я<подсчитывать($ заказов['вернуть']); $ я++) { mtgox_query('0 / cancelOrder.php', массив («Подъязычная»знак равно>$ заказать['вернуть'] [$ я] [«Подъязычная»], 'тип'знак равно>'1')); } } функция подтвердить заказ($ Тип, $ цена, $ сумма) { mtgox_query("1 / BTCEUR / частный / заказ / добавить", массив ('тип'знак равно>$ Тип,'Amount_int'знак равно>$ сумма,'Price_int'знак равно>$ цена)); } функция mtgox_query($ путь, массив $ REQ = Массив ()) {
// генерировать случайное слово как микропоры, с обработкой, как-нить, чтобы избежать проблем с системами 32бит $ т знак равно взрываться(«», микропоры()); $ REQ[«Одноразовое значение»знак равно $ т[1].зиЬзЬг($ т[0], 2, 6); // генерировать строку POST данных $ post_data знак равно http_build_query($ REQ, «», '&'); // генерировать дополнительные заголовки $ заголовки = Массив ( 'Отдых-Key:'.MTGOXAPIKEY, 'Rest-Sign:'.base64_encode(hash_hmac('Sha512', $ post_data, base64_decode(MTGOXSECRET), правда)), ); // наш завиток ручки (инициализация, если это необходимо) статический $ ч знак равно ноль; если (нулевой($ ч)) { $ ч знак равно curl_init(); curl_setopt($ ч, CURLOPT_RETURNTRANSFER, правда); curl_setopt($ ч, CURLOPT_USERAGENT, 'Mozilla / 4.0 (совместимый; MtGox PHP клиента;'.php_uname('S').«; PHP /».phpversion().')'); } curl_setopt($ ч, CURLOPT_URL, 'Https://mtgox.com/api/'.$ путь); curl_setopt($ ч, CURLOPT_POSTFIELDS, $ post_data); curl_setopt($ ч, CURLOPT_HTTPHEADER, $ заголовки); curl_setopt($ ч, CURLOPT_SSL_VERIFYPEER, ЛОЖНЫЙ); // выполнить запрос $ Рез знак равно curl_exec($ ч); если ($ Рез === ложный) Бросить новый исключение(«Не удалось получить ответ:».curl_error($ ч)); $ декабрь знак равно json_decode($ Рез, правда); если (!$ декабрь) Бросить новый исключение(«Получил недопустимые данные, пожалуйста, убедитесь, что подключение работает и запрошенный API существует»); вернуть $ декабрь; } ?> код API-настройки PHP определять("Spread",10); // эта подробность, что делает его СЛОЖНО определять("PERCENTTOTRADE",1); // Процент текущей суммы в торговлю определять("MINAMOUNTOFBTC",1); // это будет минимальное количество БТСА в АСоипе перед торговлей может иметь место // это должно быть: «Минимальный размер каждого заказа»
// mtgox Войти информация определять("MTGOXAPIKEY","-"); определять("MTGOXSECRET","-");
// interango ключ апи определять("INTERSANGOAPIKEY","-");
?>
|