Seri Binance API Bag. I - Berdagang Spot dengan Postman
Seri Binance API Bag. I - Berdagang Spot dengan Postman
BerandaArtikel

Seri Binance API Bag. I - Berdagang Spot dengan Postman

Tingkat Lanjut
Published Jul 13, 2020Updated Jun 1, 2021
13m

Pengantar

Memahami dan menggunakan API dalam perdagangan mata uang kripto dapat membuka kemungkinan-kemungkinan baru saat masuk dan keluar dari posisi. Dengan beberapa pengetahuan pengkodean sederhana, Anda dapat terhubung ke bagian dalam bursa untuk mengotomatiskan strategi perdagangan. Dengan menghindari situs web, Anda mengambil jalur yang jauh lebih cepat ke mesin pencocokan aplikasi berkinerja tinggi.

Tujuan seri ini adalah untuk memperkenalkan REST API Binance dan mengajari Anda cara berinteraksi dengan alat ini. Pada akhirnya, Anda akan yakin dengan kemampuan Anda untuk menanyakan informasi mengenai pasar dan posisi Anda, dan untuk menempatkan berbagai jenis order.

Dalam artikel ini, kita akan menggunakan Postman untuk berkomunikasi dengan bursa. Jangan khawatir – kita tidak akan menggunakan dana yang sebenarnya, jadi, tidak ada risiko.


Prasyarat

Testnet key

Untuk tujuan ini, kita akan menggunakan testnet. Akan diberikan sejumlah dana untuk dimainkan, yang tak ada nilainya di dunia nyata. Dana yang diberikan berfungsi sama dengan koin dan token nyata, jadi, setelah Anda merasa nyaman dengan API, Anda dapat mulai menggunakannya untuk memperdagangkan dana yang sebenarnya.


  1. Mulai dengan menuju ke Spot Test Network.
  2. Untuk mendapatkan akses, Anda harus masuk dengan akun GitHub. Jika Anda belum memilikinya, silakan buat akun.
  3. Klik Authenticate dan masuk via GitHub.
  4. Di bawah API Keys, akan diberitahu bahwa Anda tidak memiliki key yang terdaftar. Klik Generate HMAC_SHA256 Key untuk membuat pasangan.
  5. Di layar berikutnya, beri label key. Berikan nama semau Anda dan tekan Generate
  6. Diberikan dua kunci: API Key dan Secret Key. Sangat penting jika Anda mencatatnya sekarang. Jika tidak, Anda harus memulai proses pembuatan key lagi. Kami sarankan untuk menyimpannya di aplikasi catatan mesin Anda agar mudah disalin di lain waktu.
Catatan: memberi label pada key Anda adalah sesuatu yang layak dilakukan ketika menggunakan bursa yang sebenarnya untuk mengelola key yang berbeda. Akun Anda dapat memiliki beberapa key dengan izin berbeda. Jika Anda menjalankan beberapa bot perdagangan, menggunakan key terpisah dengan label deskriptif memudahkan mengelola izin atau menghapus masing-masing key tanpa mengubah semua bot.


Mengunduh dan menginstal Postman

Postman merupakan platform Kolaborasi API. Titik awal yang sempurna bagi kita – kita akan memiliki akses ke koleksi request Binance yang akan kita uji tanpa perlu menulis satu baris kode pun.

Program ini tersedia untuk Mac, Windows, dan Linux. Buka halaman Downloads dan unduh file .zip.

Setelah selesai, cari filenya dan instal. Nyalakan aplikasi, dan kita sudah siap! Perhatikan bahwa Anda dapat membuat akun untuk masuk, tetapi tidak perlu. Jika ingin melakukannya, cukup pilih opsi di bagian bawah jendela.


Membuat environment

Pada tahap ini, Anda harus memiliki antarmuka seperti di bawah ini.



Terlebih dahulu, kita perlu menciptakan environment. Ini hanya cara bagi kita untuk menambahkan variabel ke rangkaian request yang akan digunakan. Untuk melakukannya, pertama-tama kita perlu mengambil beberapa informasi dari repositori GitHub Binance. Buka di sini dan unduh file .zip.



Pengunduhan tidak akan memakan waktu lama. Temukan filenya dan unzip. Lalu, kita bisa kembali ke Postman.



Klik ikon gir di sudut kanan atas (diilustrasikan di atas). Anda akan disambut dengan popup Manage Environments
  1. Pilih Import, dan navigasikan ke folder yang baru saja Anda ekstrak (binance-postman-api). 
  2. Masuk, lalu masuk ke folder environments .
  3. Sekarang Anda akan melihat dua file (satu untuk mainnet dan satu untuk testnet). Yang kita butuhkan adalah binance_com_spot_testnet_api.postman_environment.json. Pastikan Anda mendapatkan file yang benar, karena key tidak akan berfungsi dengan file yang berbeda.



Hampir selesai. Klik Binance Spot Testnet API, dan Anda akan melihat variabel di bawah ini. Edit dua parameter yang diuraikan dalam warna merah dengan menempelkan key yang Anda simpan sebelumnya. Klik perbarui dan keluar dari popup.



Di layar ini, biarkan bidang timestamp dan signature kosong. Kedua nilai ini akan secara otomatis dibuat atas setiap request.

Ada satu hal lagi yang harus dilakukan. Di sebelah kanan ikon gir yang kita klik untuk menyiapkan environment sebelumnya, Anda akan melihat menu dropdown yang saat ini bertuliskan No Environment. Klik dan pilih Binance Spot Testnet API.


Mengimpor collection

Sekarang kita akan mengimpor koleksi – ini adalah berbagai macam request yang sangat membantu saat kita melakukan call. Untuk memuatnya ke environment:

  1. Klik Import di sudut kiri atas.
  2. Di popup, di bawah tab File, pilih Upload Files.
  3. Kita mencari folder binance-postman-api lagi. Temukan dan buka.
  4. Kali ini, masukkan  collection  ke subdirektori.
  5. Ada dua file di sini. Salah satunya bekerja dengan API futures. Tapi kita membutuhkan yang spot, jadi Anda harus memilih file binance_spot_api_v1.postman_collection.json.
  6. Anda sekarang akan melihat layar konfirmasi yang mengidentifikasi bahwa impor ada dalam format Postman Collection. Pilih Impor.

Di bawah tab Collections di sebelah kiri jendela, Anda sekarang akan melihat bahwa kita memiliki folder dengan lebih dari 100 request. Selamat! Kita sudah siap menggunakannya. Di bagian selanjutnya, kita akan melihat jenis request yang bisa kita buat.


Membuat Request

Jika Anda membuka folder di tab Collections, Anda akan melihat bahwa kita memiliki banyak request berbeda yang dapat dibuat. Dari pengkodean warna, Anda mungkin memperhatikan bahwa ada tiga jenis metode yang dapat kita gunakan:


  • GET: Metode GET digunakan untuk mengambil barang dari server. Kita akan menggunakan ini untuk mencari tahu informasi mengenai saldo akun Anda, harga aset, dll.
  • POST: Kita biasanya menggunakan metode POST untuk membuat informasi di server. Ini diperlukan untuk memasang order, melakukan penarikan, dll.
  • DELETE: Metode DELETE adalah permintaan server untuk menghapus informasi. Ini akan sangat berguna untuk membatalkan order.


Menemukan daftar simbol dan aturan perdagangan

Saatnya untuk membuat request pertama! Kita akan mendapatkan simbol yang dapat diperdagangkan di bursa dan aturan perdagangan:

GET /exchangeInfo


Yang ini tidak mengambil parameter tambahan apa pun –  Anda bisa menyalin dan menempelkannya ke bilah alamat, dan Anda akan mendapatkan respons. Tetapi untuk request di mana kita menyertakan beberapa parameter, Postman akan memudahkan untuk melihat dan memodifikasinya.

Untuk memuat request ini, pilih Market > Exchange Information. Tab seperti berikut ini akan muncul:



Kita tidak perlu melakukan hal lain di sini, jadi silakan tekan Send. Anda kemudian akan mendapat respons:



Di bagian yang disorot paling atas, Anda akan melihat beberapa informasi penting:

  • status respons (200 berarti kita berhasil, 400-499 berarti kita mengalami masalah)
  • waktu yang dibutuhkan untuk menerima respons (kurang dari satu detik)

  • ukuran respons (~22KB).


Di kotak kedua terdapat sejumlah besar respons. Tulisannya lebih jelas sehingga sedikit lebih mudah dilihat. Ini berisi informasi mengenai bursa itu sendiri, serta pasangan yang dapat Anda perdagangkan dan jumlah minimum/maksimumnya.

Sepertinya sangat banyak informasi yang perlu dicerna, tetapi formatnya membuat sangat mudah untuk dikerjakan secara terprogram. Saat menulis skrip untuk berinteraksi dengan alat ini, Anda akan dengan mudah memilih properti spesifik elemen tertentu dari respons.


Memeriksa saldo akun

Mari kita periksa aset apa yang kita miliki, dan berapa banyak jumlahnya:

GET /account
Yang ini dapat ditemukan di Trade > Account Information. Klik, dan Anda akan melihat tata letak yang mirip dengan yang sebelumnya. Namun, Anda juga akan melihat bahwa kita memiliki dua variabel baru: timestamp dan signature. Signature merupakan tindakan keamanan. Karena kita sekarang meminta informasi sensitif, itu akan membuktikan bahwa kita adalah pemilik akun. 
Timestamp memberi tahu server saat request dikirim. Karena jaringan mungkin tidak dapat diandalkan atau mengalami downtime, server mungkin menerima request lebih lambat dari yang dimaksudkan. Jika waktu berlalu terlalu lama, request akan ditolak. Anda dapat menentukan berapa lama Anda ingin menunggu dengan parameter recvWindow, yang standarnya adalah 5000 milidetik.
Postman menangani operasi kedua bidang ini untuk kita. Klik send, Anda akan mendapat respons. Dalam saldo, Anda akan melihat enam aset – BNB, BTC, BUSD, ETH, LTC, dan TRX. Saldo akan dibagi ke dalam free dan locked. Kita belum mengunci apa pun, jadi aset Anda semuanya free.

Selamat atas kekayaan (tak berwujud) yang baru Anda temukan!


Cara mendapatkan harga saat ini dengan simbol

Kita bisa mendapatkan harga aset saat ini dengan berbagai cara. Mungkin yang paling sederhana adalah dengan request berikut:

GET /api/v3/ticker/24hr
Seperti yang mungkin Anda pikirkan, ini akan memberikan informasi kepada kita mengenai harga aset dari dua puluh empat jam terakhir. Temukan di Market > 24hr Ticker Price Change Statistics. Pasangan default yang kita temukan sebagai variabel simbol adalah BTCUSDT
Anda dapat mengirimnya langsung untuk melihat detail informasi harga. Anda juga dapat mengubah simbolnya (menjadi BNBUSD, LTCUSDT, dll.), Atau Anda dapat menghapus centang pada variabel untuk mengembalikan data ke 40 pasangan.
Kita juga memiliki cara yang lebih sederhana (Market > Symbol Price Ticker) yang mengembalikan harga saat ini dimana aset diperdagangkan:
GET /api/v3/price

Seperti sebelumnya, Anda dapat mengubah variabel simbol atau menghapus sepenuhnya untuk mendapatkan harga terbaru dari semua simbol.


Memeriksa kedalaman order book saat ini

Kedalaman order book (juga disebut sebagai kedalaman pasar, depth of market, atau DOM) bisa memberi tahu banyak hal mengenai pasar. Kita akan melakukan panggilan untuk mendapatkan beberapa informasi yang berguna:

GET api/v3/depth

Saat kita mengirimkan ini dengan nilai default (Market > Order Book), kita mengirim kembali respons yang memberi tahu mengenai bid dan ask BTCUSDT. Server testnet tidak akan menghasilkan data sebanyak yang sebenarnya, jadi di bawah ini adalah tangkapan layar dari pasar yang sebenarnya:



Di bagian yang disorot di atas, kita dapat melihat bid pertama. Karena kita sedang melihat order book untuk BTCUSDT, angka atas adalah harga yang bersedia dibayar seseorang untuk BTC Anda. Yang di bawah adalah jumlah yang ingin ia beli. Oleh karena itu, order ini meminta 0,999 BTC dengan harga 9704,65 USDT per BTC. Jika terus menggulir ke bawah, kita akan melihat penurunan harga penawaran – mewakili pembeli yang akan membayar lebih murah. 

Penawaran teratas secara alami adalah yang paling menarik jika Anda mencari keuntungan. Karena itu, jika Anda mencoba menjual dengan market sell, katakanlah, 3 BTC, Anda hanya dapat menjual 0,999 BTC dengan harga terbaik. Anda harus mengambil penawaran berikutnya (lebih murah) hingga keseluruhan order Anda terisi.



Terus gulir ke bawah, Anda akan melihat ask. Secara fungsional, ask mirip dengan penawaran, tetapi mewakili order menjual BTC untuk mendapatkan USDT. 


Memasang order percobaan

Sekarang kita akan membuat order percobaan.

POST api/v3/order/test
Meskipun kita hanya menggunakan dana testnet, request ini sebenarnya tidak akan memasang order. Ini berguna untuk menguji order sebelum benar-benar mengirimkannya. Temukan di Trade > Test New Order (TRADE).



Anda dapat melihat kita memiliki lebih banyak parameter yang terlibat. Mari kita telusuri yang dicentang:


  • symbol – kita sudah membahas ini sebelumnya. Ini adalah pasangan yang ingin Anda perdagangkan.
  • side – di sini, Anda akan menentukan apakah Anda ingin melakukan BUY atau SELL. Dengan pasangan BTCUSDT, BUY menunjukkan bahwa Anda ingin membeli BTC dengan USDT, sedangkan SELL akan menjual BTC untuk mendapatkan USDT.
  • type – jenis order yang ingin Anda kirim. Nilai yang mungkin (detail di sini):
    • LIMIT
    • MARKET
    • STOP_LOSS
    • STOP_LOSS_LIMIT
    • TAKE_PROFIT
    • TAKE_PROFIT_LIMIT
    • LIMIT_MAKER
  • timeInForce– parameter ini menyatakan bagaimana Anda ingin order dieksekusi:
    • GTC (good till canceled) – mungkin merupakan pengaturan yang paling populer, GTC akan memastikan bahwa order Anda valid sampai terisi, atau sampai Anda membatalkannya.
    • FOK (fill or kill) - FOK menginstruksikan bursa untuk mengeksekusi order sekaligus. Jika bursa tidak dapat melakukannya, order akan segera dibatalkan.
    • IOC (immediate or cancel) – semua atau sebagian order harus segera dieksekusi, atau dibatalkan. Tidak seperti FOK, order tidak dibatalkan jika terisi sebagian.
  • quantity – sederhananya, merupakan jumlah aset yang ingin Anda beli atau jual.
  • price – harga di mana Anda ingin menjual. Untuk pasangan BTCUSDT, ini dinyatakan dalam USDT.
  • newClientOrderId – merupakan pengidentifikasi order. Ini bukan bidang yang diwajibkan, tetapi Anda dapat mengaturnya, yang nantinya akan memudahkan query. Jika tidak, akan dihasilkan secara acak oleh bursa.
OK! Mari kita buat order percobaan sekarang. Kita akan menggunakan nilai-nilai yang dihasilkan secara otomatis: limit order menjual 0,1 BTC untuk mendapatkan USDT seharga $9000. Tekan Send. Jika berhasil, maka kita hanya akan mendapatkan respons {}

 

Memasang order yang sebenarnya

Sekarang saatnya memasang order palsu yang sebenarnya. 

POST /api/v3/order
Buka Trade > New Order. Anda sudah terbiasa dengan order percobaan sekarang, jadi parameter di sini tidak asing lagi. Mari kita biarkan semua nilainya seperti apa adanya, tetapi karena kita bullish, kita akan mengubah harga penjualan menjadi $40.000. Tekan nilai harga untuk mencerminkannya. Lalu, tekan Send.

Jika berhasil, respons Anda akan memperlihatkan banyak detail mengenai order ini. 


Memeriksa status order terbuka

Kita mendapat konfirmasi bahwa order ditempatkan di bagian sebelumnya, tetapi bagaimana jika kita ingin memeriksanya lagi nanti? Ada beberapa request.

GET /api/v3/openOrders
Anda akan menemukan ini di Trade > Current Open Orders (USER_DATA). BTCUSDT dipilih secara default. Jika Anda menekan Send, Anda akan mendapatkan semua order BTCUSDT terbuka Anda (sejauh ini, Anda hanya akan melihat yang kita pasang sebelumnya). Anda dapat memilih untuk tidak menentukan simbol, yang akan mengembalikan semua order terbuka Anda.
GET /api/v3/allOrders
Trade > All Orders (USER_DATA) memberi gambaran umum dari semua order – bukan hanya yang terbuka. Di sini, Anda harus memberikan simbol. orderId, startTime, endTime, dan limit adalah parameter opsional yang dapat membantu Anda mempersempit pencarian. Kita akan meninggalkan semuanya di sini, jadi hapus centangnya. Tekan Send, dan Anda akan melihat respons yang sama seperti sebelumnya. Jika Anda memiliki order tertutup atau dibatalkan, Anda akan melihatnya di sini juga. 


Terakhir, kita dapat meminta order khusus dengan:

GET /api/v3/order
Anda bisa mendapatkan ini di Trade > Query Order (USER_DATA). Anda harus memberikan orderId atau origClientOrderId (tag opsional “newClientOrderId” yang dapat Anda tambahkan ke order). Hapus centang orderId. Untuk origClientOrderId, kita akan memberikan tag default dari sebelumnya – ”my_order_id_1”. Isi kolom dan tekan Send untuk mendapatkan respons.


Membatalkan order

Setelah beberapa waktu, kita mungkin memutuskan bahwa target $40.000 agak terlalu optimis, jadi kita ingin membatalkannya. Dalam hal ini, kita akan menggunakan:

DELETE /api/v3/order
Di Trade > Cancel Order terdapat request yang akan membantu kita memilih order untuk dibatalkan. Hapus centang pada orderId dan newClientOrderId, dan berikan “my_order_id_1” sebagai nilai untuk origClientOrderId.
Ketika Anda mengirim request ini, order akan dikembalikan. Jika Anda gulir ke bawah ke “status,” Anda akan melihat bahwa order telah dibatalkan. Untuk mengkonfirmasi ini, gunakan GET /api/v3/openOrders lagi (memberikan daftar kosong) atau GET /api/v3/order dengan origClientOrderId.


Memasang order yang terisi secara instan

Order kita sebelumnya tidak terisi karena limit order hanya akan terpicu jika harga BTC mencapai $40.000. Namun, dengan market order, kita pada dasarnya mengatakan “beli/jual aset ini dengan harga berapapun yang saat ini tersedia.” Order akan langsung terisi.
Untuk itu, mari kembali ke Trade > New Order. Kita akan melihat jenis respons (newOrderRespType), yang merupakan parameter yang dapat diatur tergantung pada respons yang ingin kita dapatkan dari server. Ada tiga opsi di sini: ACK, RESULT, atau FULL – Anda dapat melihat contoh setiap respons di sini. Kita akan menggunakan ACK, yang akan memberitahukan bahwa order diterima.

Di bawah ini, Anda dapat melihat bahwa kita akan mengirimkan market order menjual BNB untuk mendapatkan BUSD pada harga pasar saat ini.



Perhatikan bahwa respons memberikan informasi minimal:



Anda dapat memverifikasi bahwa order terisi dengan endpoint /api/v3/allOrders.


Memeriksa perdagangan Anda

Mari kita lihat endpoint untuk memeriksa perdagangan Anda:

GET /api/v3/myTrades
Ini terletak di Trade > Account Trade List (USER_DATA). Hal ini memungkinkan Anda untuk memeriksa setiap perdagangan dengan simbol tertentu. Jika ingin melihat semua perdagangan Anda dengan simbol default (BTCUSDT), cukup hapus centang startTime, endTime, dan fromId. Respons akan menunjukkan hingga 500 perdagangan – cukup tekan limit jika Anda ingin melihat lebih banyak.


Debugging dengan Postman

Di Postman, dimungkinkan untuk mengungkapkan request dan respons terhadap raw HTTP lebih lanjut.



Menu ini akan membuka konsol Postman, yang menunjukkan detail setiap request.



Penutup

Tujuan panduan ini adalah untuk memperkenalkan Binance API kepada Anda tanpa menulis satu baris kode pun. Jika Anda mengikuti, Anda sekarang sudah memiliki gagasan mengenai bagaimana Anda dapat meminta dan mengirimkan informasi.

Di bagian berikutnya dalam seri ini, kami akan memperkenalkan beberapa konsep dasar pengkodean yang membantu Anda untuk mengotomatiskan pembelian dan penjualan mata uang kripto dan aset digital lainnya. 
Ada pertanyaan? Kunjungi forum Komunitas Pengembang Binance kami, atau lihat dokumentasi ini.