-
-
Save learntheropes/abb5dd9fab96c7c2990a23ef12138778 to your computer and use it in GitHub Desktop.
// work in progress | |
// you need a bittrex API key and secret with read account option enabled | |
// I assume that all the keys are in the "keys" spreadsheet. The key is in cell B5 and the secret in cell C5 | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("keys"); | |
var key = sheet.getRange("B5").getValue() | |
var secret = sheet.getRange("C5").getValue(); | |
var baseUrl = 'https://bittrex.com/api/v1.1/'; | |
var nonce = Math.floor(new Date().getTime()/1000); | |
/** | |
* Used to retrieve all balances from your account. | |
* @return the balance of any currency that is not 0. | |
*/ | |
function bittrexGetbalances() { | |
var finals = []; | |
var results = bittrexPrivateRequest("account/getbalances"); | |
Logger.log(results) | |
results.forEach(function(result,index) { | |
finals.push({'currency': result.Currency, 'balance': result.Balance}) | |
}); | |
Logger.log(finals) | |
return json2array_(finals); | |
}; | |
/** | |
* Used to retrieve the balance from your account for a specific currency. | |
* @param {string} a string literal for the currency (ex: LTC). | |
* @return the currency balance. | |
* @customfunction | |
*/ | |
function bittrexGetbalance(currency) { | |
var payload = { "currency" : currency }; | |
var results = bittrexPrivateRequest("account/getbalance",payload); | |
return results.Balance; | |
}; | |
function bittrexPublicRequest(command,payload){ | |
var uri = uriCreator_(command,payload); | |
var response = UrlFetchApp.fetch(uri); | |
var dataAll = JSON.parse(response.getContentText()); | |
if (dataAll.success = true) { | |
return dataAll.result | |
} else { | |
return dataAll.message | |
} | |
} | |
function bittrexPrivateRequest(command,payload){ | |
var uri = uriCreator_(command,payload,true) | |
var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, uri, secret); | |
// Signature copied from comments: | |
var apisign = signature.map(function(byte) { | |
return ('0' + (byte & 0xFF).toString(16)).slice(-2); | |
}).join(''); | |
var headers = { | |
"apisign": apisign | |
} | |
var params = { | |
"method": "get", | |
"headers": headers, | |
"payload": payload | |
} | |
var response = UrlFetchApp.fetch(uri, params); | |
var dataAll = JSON.parse(response.getContentText()); | |
if (dataAll.success = true) { | |
return dataAll.result | |
} else { | |
return dataAll.message | |
} | |
}; | |
function uriCreator_(command,payload,private){ | |
if (payload) { | |
var payloadEncoded = Object.keys(payload).map(function(param) { | |
return encodeURIComponent(param) + '=' + encodeURIComponent(payload[param]); | |
}).join('&'); | |
} | |
if (private) { | |
uri = baseUrl.concat(command + "?apikey=" + key + "&nonce=" + nonce + "&" + payloadEncoded) | |
} else { | |
uri = baseUrl.concat("public/" + command + "?" + payloadEncoded) | |
} | |
return uri | |
}; | |
function json2array_(data){ | |
var results = []; | |
var keys = []; | |
var values = []; | |
for (var i in data){ | |
for (var key in data[i]){ | |
if (i == 0) keys.push(key); | |
values.push(data[i][key]); | |
} | |
if (i == 0){ | |
results.push(keys); | |
keys = []; | |
} | |
results.push(values); | |
values = []; | |
} | |
return results; | |
}; |
You shouldn't you just in the cell place =bittrexGetbalances and it should go out and download all your balances? Is there more to it. Please let me understand when i do this I get
Error
Unknown range name: 'BITTREXGETBALANCES'
ok so looks like
=bittrexGetbalances()
and
=bittrexGetOrderHistoryV1()
is all that working for this script am I correct. Sorry I am learning
@leejie8008 looks like it pulls everything you have a wallet on BTW
Thanks. Pretty helpful
None of you unfortunately answered, how the sheet itself can be generated? I added the keys to key sheet, but don't get any results being displayed. Please help!
Hey could somebody clarify how I would send a buy order with this code?
Ive tried:
bittrexPrivateRequest("Buy",)
but I do not know what to insert in the field "Payload".
I am aware that i have to insert the currency, the amount and the rate; but do not know in which format
Many thanks!
I feel a bit lost here I put the code in and I am use to telling it to post results to a set page. What do you put in the Dell for it to use that section