CryptoHopper è un bot di trading automatizzato di criptovalute che consente di automatizzare il trading e la gestione del portafoglio per Bitcoin, Ethereum, Litecoin e altro.
Richiede un Account sviluppatore e una volta approvato è possibile iniziare a creare una nuova App. L'API utilizza OAuth2 per l'autenticazione, quindi è possibile recuperare client_id e client_secret dalla propria App.
oCryptoHopper := TsgcHTTP_Cryptohopper.Create(nil);
oCryptoHopper.CryptoHopperOptions.OAuth2.ClientId := 'client_id';
oCryptoHopper.CryptoHopperOptions.OAuth2.ClientSecret := 'client_secret';
oCryptoHopper.CryptoHopperOptions.OAuth2.LocalIP := '127.0.0.1';
oCryptoHopper.CryptoHopperOptions.OAuth2.LocalPort := 8080;
oCryptoHopper.CryptoHopperOptions.OAuth2.Scope.Text := "read,notifications,manage,trade";
CryptoHopper utilizza HTTPs come protocollo per inviare richieste all'API. Alcuni metodi richiedono autenticazione (effettuare ordini, recuperare dati utente...) mentre altri sono pubblici (ad esempio ottenere dati di exchange).
Le funzioni restituiscono la risposta di CryptoHopper e, in caso di errore, verrà sollevata un'eccezione.
Hoppers
Gestire le operazioni di base dell'Hopper.
| Method | Argomenti | Description |
| GetHoppers | Ottieni i Hopper degli utenti. | |
| CreateHopper | aBody: testo JSON di configurazione. | Crea un nuovo Hopper. |
| GetHopper | aId: id dell'hopper | Recupera Hopper |
| DeleteHopper | aId: id dell'hopper | Elimina Hopper |
| UpdateHopper | aId: id dell'hopper aBody: testo json della configurazione. | Aggiorna Hopper |
Ordini
Gestisce gli ordini del proprio Hopper.
| Method | Argomenti | Description |
| GetOpenOrders | aId: id dell'hopper | Recupera tutti gli ordini aperti dell'hopper. |
| CreateNewOrder | aId: id dell'hopper aOrder: istanza di TsgcHTTPCTHOrder | Crea un nuovo ordine di acquisto o vendita. Per la vendita, preferire l'endpoint sell. |
| PlaceMarketOrder | aId: id dell'hopper aOrderSide: cthosBuy o cthosSell. aCoin: nome della moneta, esempio: EOS aAmount: dimensione dell'ordine. | Inserisce un ordine di mercato. |
| PlaceLimitOrder | aId: id dell'hopper aOrderSide: cthosBuy o cthosSell. aCoin: nome della moneta, esempio: EOS aAmount: dimensione dell'ordine. aPrice: prezzo limite. |
Inserisci un Ordine Limite |
| DeleteOrder | aId: id dell'hopper aOrderId: id dell'ordine | Elimina l'ordine per l'hopper selezionato. |
| DeleteAllOrders | aId: id dell'hopper | Elimina tutti gli ordini aperti per l'hopper selezionato. |
| GetOpenOrder | aId: id dell'hopper aOrderId: id dell'ordine | Ottieni ordine aperto nell'hopper tramite ID. |
| CancelOrder | aId: id dell'hopper aOrderId: id dell'ordine | Annulla un ordine aperto. |
Position
Gestire le posizioni del proprio Hopper.
| Method | Argomenti | Description |
| GetPosition | aId: id dell'hopper | Ottieni le posizioni aperte dell'hopper. |
Trade
Cronologia dei trade dal proprio Hopper.
| Method | Argomenti | Description |
| GetTradeHistory | Recupera la cronologia delle operazioni dell'hopper. | |
| GetTradeHistoryById | aId: id dell'hopper aTradeId: id dell'operazione | Recupera un trade tramite l'id dell'hopper. |
Exchange
Recupera informazioni dagli exchange disponibili su CryptoHopper
| Method | Argomenti | Description |
| GetExchange | Ottiene tutti gli exchange disponibili su Cryptohopper. | |
| GetAllTickers | aExchange: nome dell'exchange | Ottiene il ticker per tutte le coppie |
| GetMarketTicker | aExchange: nome dell'exchange aPair: nome della coppia | Ottieni il ticker dalla coppia di mercato. |
| GetOrderBook | aExchange: nome dell'exchange aPair: nome della coppia aDepth: profondità del book degli ordini |
Ottiene l'orderbook per l'exchange, il mercato e la profondità dell'orderbook selezionati. |
Webhook
Cronologia dei trade dal proprio Hopper.
| Method | Argomenti | Description |
| CreateWebhook | aURL: url del webhook aMessageTypes: tipi di messaggio separati da virgola. | Aggiorna o crea un Webhook |
| DeleteWebhook | aURL: url del webhook | Elimina un Webhook esistente. |
Segnali
Inviare segnali all'API CryptoHopper.
| Method | Argomenti | Description |
| SendSignal | aSignal: è la classe con tutti i campi necessari per inviare un segnale. | Invia un Segnale |
| SendTestSignal | aSignal: è la classe con tutti i campi necessari per inviare un segnale. | Invia un Segnale di Test |
| GetSignalStats | aSignalId: id del segnale. aExchange: opzionale, nome dell'exchange. | Recupera alcune statistiche del segnale. |
Utilizzare il metodo UpdateHopper per aggiornare la configurazione dell'Hopper. Il metodo è sovraccaricato, quindi è possibile passare la stringa JSON o utilizzare l'oggetto TsgcHTTPCTHopper e usare le proprietà per abilitare o disabilitare le proprietà dell'Hopper.
function EnableHopper: string;
var
oHopper: TsgcHTTPCTHopper;
begin
oHopper := TsgcHTTPCTHopper.Create;
Try
if Cryptohopper.GetHopper('1234', oHopper) then
begin
oHopper.Enabled := 1;
result := Cryptohopper.UpdateHopper('1234', oHopper);
end;
Finally
FreeAndNil(oHopper);
End;
end;
Il webhook consente di ricevere notifiche quando accade qualcosa in un hopper. I webhook richiedono un server HTTPs pubblico che ascolti su un indirizzo URL tutti i messaggi inviati da cryptohopper. Il server pubblico deve essere protetto con un certificato SSL (i certificati autofirmati non sono consentiti).
È necessario innanzitutto creare un webhook: configurare la proprietà Webhook del client Cryptohopper impostando l'Host e la Porta su cui il server sarà in ascolto. Quindi configurare il certificato nella proprietà SSLOptions.
Esempio: L'indirizzo IP pubblico sarà 1.1.1.1 e la porta di ascolto sarà 443. Il certificato è memorizzato come file PEM con il nome file sgc.pem e senza password.
/* OAuth2 */
cryptohopper.CryptohopperOptions.OAuth2.ClientId = 'client_id';
cryptohopper.CryptohopperOptions.OAuth2.ClientSecret := 'client_secret';
cryptohopper.CryptohopperOptions.OAuth2.LocalIP := '127.0.0.1';
cryptohopper.CryptohopperOptions.OAuth2.LocalPort := 8080;
/* Webhook */
cryptohopper.CryptohopperOptions.Webhook.Enabled := True;
cryptohopper.CryptohopperOptions.Webhook.Host := '1.1.1.1';
cryptohopper.CryptohopperOptions.Webhook.Port := 443;
cryptohopper.CryptohopperOptions.Webhook.ValidationCode := '1234';
cryptohopper.CryptohopperOptions.Webhook.SSLOptions.CertFile := 'sgc.pem';
cryptohopper.CryptohopperOptions.Webhook.SSLOptions.KeyFile := 'sgc.pem';
cryptohopper.CryptohopperOptions.Webhook.SSLOptions.RootCertFile := 'sgc.pem';
cryptohopper.CryptohopperOptions.Webhook.SSLOptions.Password := '';
cryptohopper.StartWebhook;