Página 1 de 1

Utilizar las API de Deribit

Publicado: 16 Ago 2018 10:39
por mcebers
Hola a todos. Tengo un problema que no se como resolver. Se trata de ingresar los datos de mi cuenta en Deribit en una hoja de Excel. He consultado al soporte y en la respuesta me dicen que debo utilizar vba y me mandaron tres funciones que pego a continuacion:

Private Function ConvToBase64String(vIn As Variant) As Variant

Dim oD As Object

Set oD = CreateObject("MSXML2.DOMDocument")
With oD
.LoadXML "<root />"
.DocumentElement.DataType = "bin.base64"
.DocumentElement.nodeTypedValue = vIn
End With
ConvToBase64String = Replace(oD.DocumentElement.Text, vbLf, "")

Set oD = Nothing

End Function

Public Function SHA256(sIn As String) As String
'Set a reference to mscorlib 4.0 64-bit

'Test with empty string input:
'44 Base-64: 47DEQpj8HBSa+/...etc

Dim oT As Object, oSHA256 As Object
Dim TextToHash() As Byte, bytes() As Byte

Set oT = CreateObject("System.Text.UTF8Encoding")
Set oSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")

TextToHash = oT.GetBytes_4(sIn)
bytes = oSHA256.ComputeHash_2((TextToHash))

SHA256 = ConvToBase64String(bytes)

Set oT = Nothing
Set oSHA256 = Nothing
End Function

Public Function GetDeribitAccount()

Dim xmlhttp As New MSXML2.XMLHTTP60
Dim myUrl As String, apiKey As String, apiSecret As String, sigBase As String
Dim sig As String
Dim hash64 As String

myUrl = "https://test.deribit.com/api/v1/private/account"
apiKey = "API_KEY"
apiSecret = "API_SECRET"
sigBase = "_=1530860845050&_ackey=" + apiKey + "&_acsec=" + apiSecret + "&_action=/api/v1/private/account"
hash64 = SHA256(sigBase)
sig = apiKey + ".1530860845050." + hash64

xmlhttp.Open "GET", myUrl, False
xmlhttp.setRequestHeader "x-deribit-sig", sig
xmlhttp.send
MsgBox (xmlhttp.responseText)
End Function

Realmente esto supera mis conocimientos sobre vba. Pensé que colocando en la celda (A1) "=GetDeribitAccount()" iba a lograr algo pero lo único que consigo es un error en la primer linea:
Dim xmlhttp As New MSXML2.XMLHTTP60
Aclaro que utilizo Excel 2016 si eso sirve para algo.
Por supuesto se que para que realmente entre en mi cuenta debo reemplazar las API por las verdaderas que dispongo.
Realmente no se como sigue, porque de esto no entiendo ni jota pero no creo que sea muy dificil conectar estos codigos en una hoja de excel.
Desde ya agradezco a todos los que me puedan echar una mano al respecto.

Re: Utilizar las API de Deribit

Publicado: 16 Ago 2018 12:25
por Cacho R
.
Dentro de VBA ve a: Herramientas ---> Referencias.

Localiza (están por orden alfabético) y cliquea la siguiente: Microsoft XML, v6.0
.

Re: Utilizar las API de Deribit

Publicado: 16 Ago 2018 12:54
por mcebers
Gracias Cacho, el camino es correcto. Solo que ahora me sale un largo mensaje marcandome un error 1000 en el msgbox y al cerrarlo me sale "MEMORIA INSUFICIENTE" para colmo.
Supongo que el error esta ahora en los datos de ingreso, tendre que seguir probando e insistir ante el soporte. En la celda "A1" luego tiene valor= 0
Un saludo desde Berlin a mi ciudad natal, Buenos Aires
Miguel

Re: Utilizar las API de Deribit

Publicado: 18 Ago 2018 14:37
por mcebers
Hola nuevamente, la macro se soluciono, funciona correctamente pero solo al arrancar Excel, es decir la primera vez. Luego se "congela", me devuelve siempre los mismos datos. Si apago Excel y lo vuelvo a cargar, los resultados se actualizan. Hay alguna forma de evitar esto y que los datos se actualizen tras cada llamada?
Ojalá alguien tenga la respuesta. Saludos a todos
mcebers escribió:Hola a todos. Tengo un problema que no se como resolver. Se trata de ingresar los datos de mi cuenta en Deribit en una hoja de Excel. He consultado al soporte y en la respuesta me dicen que debo utilizar vba y me mandaron tres funciones que pego a continuacion:

Private Function ConvToBase64String(vIn As Variant) As Variant

Dim oD As Object

Set oD = CreateObject("MSXML2.DOMDocument")
With oD
.LoadXML "<root />"
.DocumentElement.DataType = "bin.base64"
.DocumentElement.nodeTypedValue = vIn
End With
ConvToBase64String = Replace(oD.DocumentElement.Text, vbLf, "")

Set oD = Nothing

End Function

Public Function SHA256(sIn As String) As String
'Set a reference to mscorlib 4.0 64-bit

'Test with empty string input:
'44 Base-64: 47DEQpj8HBSa+/...etc

Dim oT As Object, oSHA256 As Object
Dim TextToHash() As Byte, bytes() As Byte

Set oT = CreateObject("System.Text.UTF8Encoding")
Set oSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")

TextToHash = oT.GetBytes_4(sIn)
bytes = oSHA256.ComputeHash_2((TextToHash))

SHA256 = ConvToBase64String(bytes)

Set oT = Nothing
Set oSHA256 = Nothing
End Function

Public Function GetDeribitAccount()

Dim xmlhttp As New MSXML2.XMLHTTP60
Dim myUrl As String, apiKey As String, apiSecret As String, sigBase As String
Dim sig As String
Dim hash64 As String

myUrl = "https://test.deribit.com/api/v1/private/account"
apiKey = "API_KEY"
apiSecret = "API_SECRET"
sigBase = "_=1530860845050&_ackey=" + apiKey + "&_acsec=" + apiSecret + "&_action=/api/v1/private/account"
hash64 = SHA256(sigBase)
sig = apiKey + ".1530860845050." + hash64

xmlhttp.Open "GET", myUrl, False
xmlhttp.setRequestHeader "x-deribit-sig", sig
xmlhttp.send
MsgBox (xmlhttp.responseText)
End Function

Realmente esto supera mis conocimientos sobre vba. Pensé que colocando en la celda (A1) "=GetDeribitAccount()" iba a lograr algo pero lo único que consigo es un error en la primer linea:
Dim xmlhttp As New MSXML2.XMLHTTP60
Aclaro que utilizo Excel 2016 si eso sirve para algo.
Por supuesto se que para que realmente entre en mi cuenta debo reemplazar las API por las verdaderas que dispongo.
Realmente no se como sigue, porque de esto no entiendo ni jota pero no creo que sea muy dificil conectar estos codigos en una hoja de excel.
Desde ya agradezco a todos los que me puedan echar una mano al respecto.

Re: Utilizar las API de Deribit

Publicado: 08 Jul 2019 11:24
por mcebers
Hola Miguel, el problema de que se te congela el programa es porque el programa usa el deribit time que cambia continuamente. Necesitas hacer unas macros que te actualicen el mismo. Estas conectado con la API V.2.00?
Yo tengo un programa de Excel que se conecta con la API V1 y lo tengo que actualizar. Te paso mi email para que podamos charlar un rato. Miguel, tambien de Buenos Aires pero resido en Berlin. mcebers(arroba)yahoo.de
Saludos