Panduan langkah demi langkah untuk membuat bot perdagangan dalam bahasa pemrograman apa pun

Saya tidak memenuhi syarat untuk memberi nasihat tentang investasi, hukum, atau sejenisnya. Saya tidak mencoba melakukan itu. Tujuan dari panduan ini adalah untuk mengajari Anda tentang pemrograman bot perdagangan untuk tujuan pendidikan. Anda harus memahami bahwa dengan membuat bot, Anda bertanggung jawab atas keputusan yang dibuatnya, untuk operasi investasi yang dilakukannya, atas risiko yang terkait dengan aktivitas perdagangan. Saya tidak bisa bertanggung jawab atas keputusan yang Anda buat setelah membaca materi ini. Ingatlah bahwa bot bisa kehilangan banyak uang, jadi gunakan dengan hati-hati.



Anda sering dapat menemukan artikel yang disebut seperti ini: "10 proyek yang perlu diterapkan oleh programmer." Bot perdagangan sering kali tercantum dalam artikel ini. Saya percaya bahwa mengembangkan bot perdagangan adalah investasi yang berharga. Jadi saya memutuskan untuk meluangkan waktu untuk menulis tutorial tentang ini.



Tetapi alih-alih melakukan penguraian baris demi baris dari beberapa kode, saya memutuskan bahwa akan lebih baik untuk membongkar konsep yang harus dikenali oleh seseorang yang ingin membuat bot mereka sendiri. Inti dari materi saya adalah, setelah membacanya, Anda akan menulis kodenya sendiri.



Oleh karena itu, saya akan berbicara tentang apa yang berguna untuk diketahui untuk mengembangkan bot perdagangan, dan apa yang diperlukan untuk ini (dari bekerja dengan bursa hingga menerapkan strategi perdagangan sederhana). Di sini saya akan menyentuh isu-isu yang berkaitan dengan arsitektur dan struktur internal bot perdagangan sederhana, dengan ide-ide yang mendasari mereka. Saya akan menunjukkan contoh yang ditulis dalam pseudocode. Oleh karena itu, Anda dapat membaca panduan ini dan langsung menulis bot Anda sendiri dalam bahasa pemrograman pilihan Anda. Alhasil, Anda akan merasa nyaman menggunakan alat yang sudah Anda kenal. Anda akan dapat dengan tenang terlibat dalam pemrograman, dan tidak menghabiskan waktu menyiapkan lingkungan kerja dan membiasakan diri dengan bahasa baru. Anda akan memilih senjata, dan saya akan mengajari Anda cara menggunakan senjata ini.



















Langkah 1. Memilih senjata



Pada langkah pertama tutorial ini, Anda akan memilih bahasa pemrograman yang akan Anda gunakan. Anda harus memutuskan sendiri pertanyaan ini.



Beberapa bahasa seperti Python mungkin lebih disukai jika Anda berencana untuk melengkapi bot Anda dengan mekanisme pembelajaran mesin di masa mendatang. Tetapi ide utama saya adalah Anda dapat memilih bahasa yang paling nyaman untuk Anda gunakan.



Langkah 2. Mencari medan perang





Salah satu topik penting yang sering diabaikan dalam panduan penulisan bot perdagangan. Ini menyangkut pilihan pertukaran. Faktanya adalah agar bot dapat melakukan apa yang diciptakannya, bot membutuhkan akses ke pertukaran tempat Anda dapat menukar sesuatu. Memilih pertukaran dan mengetahui cara menggunakannya sama pentingnya dengan keterampilan pemrograman.



Jadi, langkah pertama Anda adalah memutuskan apa sebenarnya yang akan Anda perdagangkan (saham, mata uang, cryptocurrency) dan memutuskan di mana tepatnya Anda akan berdagang.



Jika kita berbicara tentang aset yang diperdagangkan di bursa, maka saya akan menyarankan Anda untuk memperhatikan cryptocurrency. Alasan rekomendasi ini bukanlah karena saya adalah pendukung teknologi blockchain dan cryptocurrency (saya sepenuhnya terbuka tentang masalah ini), tetapi hanya pasar cryptocurrency yang buka sepanjang waktu, 7 hari seminggu.



Aset yang lebih "tradisional" hanya dapat diperdagangkan pada interval waktu tertentu, dan seringkali hanya pada hari kerja. Pasar saham, misalnya, biasanya buka dari jam 9 pagi sampai jam 4 sore dan tutup pada akhir pekan. Pasar FOREX, meskipun dapat beroperasi sepanjang waktu, biasanya ditutup pada akhir pekan.



Dalam hal ini, cryptocurrency paling cocok untuk kami, karena pilihan pasar ini akan memungkinkan bot kami bekerja tanpa gangguan. Selain itu, cryptocurrency dikenal karena tingkat volatilitasnya yang tinggi. Ini berarti, pertama, Anda bisa kehilangan banyak uang karena memperdagangkannya, dan kedua, mereka adalah alat yang sangat baik untuk mempelajari dan menguji strategi perdagangan.



Kami telah berbicara tentang aset pertukaran. Sekarang mari kita bahas persyaratan yang perlu dipertimbangkan saat memilih pertukaran tempat bot akan dibuat. Yaitu, saya berbicara tentang dua persyaratan dasar:



  1. Anda harus secara hukum dapat berdagang di bursa yang dipilih dan bekerja dengan instrumen perdagangan yang ditawarkannya. Jika kita berbicara tentang cryptocurrency, maka di beberapa negara perdagangan di dalamnya dilarang. Pertimbangkan ini saat memilih instrumen dan pertukaran.
  2. API, . , .


Setelah ternyata pertukaran tertentu memenuhi dua persyaratan dasar ini, Anda dapat menganalisisnya lebih dalam. Misalnya, perkirakan jumlah komisi, nilai keandalan dan popularitasnya, lihat kualitas dokumentasi untuk API-nya.



Namun, yang sama pentingnya dengan yang lainnya, saya akan merekomendasikan untuk mengevaluasi volume perdagangan bursa. Pertukaran volume rendah cenderung tertinggal di belakang pergerakan harga. Selain itu, lebih sulit untuk mengeksekusi perintah limit (kita akan membicarakannya lebih lanjut di bawah).



Jika Anda akhirnya memutuskan untuk memilih cryptocurrency, maka berikut adalah daftar pertukaran terkemuka yang bagus. Di sini Anda dapat menemukan berbagai informasi tentang mereka untuk membantu Anda memilih pertukaran.



Langkah 3. Membangun kemah





Jika pertukarannya adalah medan perang, maka sekarang kita akan berbicara tentang dari mana kita akan mengirim pasukan kita ke medan perang. Ngomong-ngomong, mungkin sudah waktunya bagi saya untuk menggunakan analogi seperti itu.



Saya berbicara tentang server di sini. Kode bot harus dijalankan di beberapa server, yang memungkinkan bot mengirim permintaan ke API pertukaran.



Saat menguji bot, tentunya komputer Anda bisa bertindak sebagai server. Tetapi jika Anda membutuhkan bot untuk bekerja sepanjang waktu, komputer biasa jelas bukan pilihan terbaik.



Saya punya dua saran di sini:



  1. Peran server dapat dimainkan oleh Raspberry Pi (pendekatan ini lebih menarik).
  2. Server dapat berupa layanan cloud (dan pendekatan ini lebih baik).


Menurut saya, mengatur bot berdasarkan server Raspberry Pi Anda sendiri adalah ide yang menarik dan modern, jadi jika Anda menyukai ide ini juga, Anda dapat menghidupkannya.



Tetapi sebagian besar pembuat bot kemungkinan akan memilih penyedia cloud seperti AWS , Azure , GCS, atau Digital Ocean .



Sebagian besar penyedia cloud besar memiliki paket gratis yang bagus, jadi Anda mungkin dapat menghosting bot Anda dengan penyedia itu secara gratis.



Ini mengakhiri percakapan saya tentang server. Anda harus memilih yang terbaik untuk Anda. Untuk proyek kecil seperti yang kami lakukan, apa yang dipilih tidak akan berdampak besar pada hasil akhirnya.



Langkah 4. Buat bot





Dan sekarang kesenangan dimulai. Tetapi, sebelum memulai bagian proyek kami ini, periksa apakah hal berikut telah dilakukan:



  1. Anda telah mendaftar di bursa dan menerima izin yang diperlukan untuk bekerja dengannya.
  2. Anda memiliki kemampuan untuk bekerja dengan API pertukaran, Anda memiliki kunci API.
  3. Anda telah memilih hosting untuk bot.


Jika masalah ini teratasi, itu berarti kita bisa melanjutkan.



▍ Bot paling sederhana



Tujuan saya adalah membantu seseorang yang, sampai saat ini, sama sekali tidak tahu apa-apa tentang bot, untuk naik ke tingkat membuat bot yang berfungsi sederhana. Oleh karena itu, saya akan memberi tahu Anda cara membuat bot perdagangan sederhana yang dapat Anda kembangkan dan tingkatkan sesuai dengan kebutuhan Anda.



Bot kami akan memiliki beberapa batasan:



  1. Bot hanya dapat berada di salah satu dari dua status: BELI (beli) atau JUAL (jual). Dia tidak akan terus-menerus menempatkan pesanan beli atau jual dengan harga yang berbeda. Jika operasi terakhir adalah penjualan, maka operasi berikutnya yang akan coba dilakukan bot adalah membeli.
  2. Bot akan menggunakan ambang tetap untuk membuat keputusan beli dan jual. Bot yang lebih cerdas mungkin dapat secara mandiri menyesuaikan nilai-nilai tersebut berdasarkan berbagai indikator, tetapi strategi dan batasan bot kami akan diatur secara manual.
  3. Dia hanya akan memperdagangkan satu pasangan mata uang. Misalnya - BTC / USD.


Pembatasan ini membuat tugas kita lebih mudah. Bot akan sederhana, yang artinya akan lebih mudah untuk dibuat dan dipelihara. Ini juga akan memungkinkan kami untuk menyebarkan kodenya dengan sangat cepat ke server. Pada dasarnya, kita berbicara tentang prinsip KISS di sini.



▍Mekanisme pengambilan keputusan



Berikut adalah diagram sederhana yang memberikan gambaran umum tentang bagaimana bot kita berfungsi.





Sekarang Anda dapat mulai merencanakan arsitektur bot Anda.



Untuk memulainya, kita membutuhkan variabel yang akan menyimpan informasi tentang keadaan bot yang tepat saat ini. Bisa BELI atau JUAL. Variabel boolean atau enumerasi adalah pilihan yang baik untuk menyimpan informasi tersebut.



Kemudian Anda perlu menetapkan ambang batas untuk operasi beli dan jual. Nilai-nilai ini dinyatakan sebagai persentase dan mewakili kenaikan atau penurunan harga aset sejak transaksi sebelumnya.



Misalnya, jika saya membeli sesuatu dengan harga $ 100 dan harga saat ini adalah $ 102, maka kita menghadapi kenaikan harga sebesar 2%. Jika ambang batas untuk operasi JUAL ditetapkan pada kenaikan harga satu persen, maka bot, dengan melihat 2% ini, akan menjual aset, karena telah menghasilkan keuntungan yang melebihi nilai ambang batas yang kami tetapkan.



Dalam kasus kami, nilai tersebut akan menjadi konstanta. Kami membutuhkan 4 nilai seperti itu - 2 untuk setiap status bot.



▍Nilai ambang untuk operasi BUY (jika bot dalam status JUAL)



  • DIP_THRESHOLD: bot melakukan operasi beli jika harga turun dengan nilai yang lebih besar dari nilai yang ditentukan DIP_THRESHOLD. Alasan di balik ini adalah untuk menerapkan strategi beli rendah, jual tinggi. Artinya, bot akan mencoba membeli aset dengan harga yang lebih rendah, mengharapkan kenaikan harga dan kemungkinan penjualan aset yang menguntungkan.
  • UPWARD_TREND_THRESHOLD: bot membeli aset jika harga naik dengan nilai yang lebih tinggi dari yang ditentukan oleh konstanta ini. Langkah ini bertentangan dengan filosofi beli rendah, jual tinggi. Tujuannya adalah untuk mengidentifikasi tren naik dan tidak melewatkan peluang membeli sebelum harga naik lebih jauh.


Berikut adalah ilustrasi yang dapat membantu Anda memahami arti konstanta tersebut.





Jika kita melakukan operasi JUAL pada saat yang ditandai pada gambar dengan penanda JUAL merah, maka setelah itu bot, ketika memutuskan apakah akan melakukan operasi BELI, akan dipandu oleh nilai ambang DIP_THRESHOLDdan UPWARD_TREND_THRESHOLD.



Jika harga bergerak ke bawah garis hijau bawah atau di atas garis hijau atas, kita akan melakukan operasi BUY. Dalam situasi yang ditunjukkan pada gambar, harga berada di atas batas atas. Oleh karena itu, kami, dipandu oleh nilai UPWARD_TREND_THRESHOLD, melakukan operasi BUY.



▍Nilai ambang untuk operasi SELL (jika bot dalam status BUY)



  • PROFIT_THRESHOLD: bot menjual aset jika harganya menjadi lebih tinggi dari harga yang dihitung berdasarkan nilai ini, karena aset sebelumnya dibeli dengan harga lebih rendah. Inilah cara kami menghasilkan keuntungan. Kami menjual aset dengan harga yang lebih tinggi dari harga pada saat pembelian.
  • STOP_LOSS_THRESHOLD: Idealnya, kami ingin bot menjual aset hanya jika penjualan itu menguntungkan bagi kami. Tapi, mungkin, ada pergerakan turun pasar yang kuat. Dalam situasi seperti itu, kami memutuskan untuk keluar dari perdagangan sebelum kami menderita kerugian yang terlalu besar, dan kemudian membeli aset dengan harga lebih rendah. Ambang batas ini digunakan untuk menutup posisi yang rugi. Tujuan dari operasi ini adalah untuk mencegah kerugian yang lebih besar.


Berikut ilustrasi.





Ini menunjukkan situasi ketika pembelian dilakukan di mana penanda BELI berada. Setelah itu, harga mencapai batas yang ditentukan PROFIT_THRESHOLDdan kami menjual aset dengan untung. Beginilah cara bot menghasilkan uang.



Sekarang setelah kita memiliki pemahaman umum tentang bagaimana bot berfungsi, sekarang saatnya untuk melihat pseudocode.



▍Fungsi berguna untuk bekerja dengan API



Hal pertama yang dibutuhkan bot adalah kemampuan untuk bertukar data dengan API pertukaran. Kami menerapkan kemampuan ini menggunakan beberapa fungsi pembantu:



FUNCTION getBalances():
    DO:  GET-  API    
      
    RETURN:   

FUNCTION getMarketPrices():
    DO:  GET-  API    
      
    RETURN:   

FUNCTION placeSellOrder():
    DO:
        1.      ( 
           , , 
        50%  )
        2.  POST-  API   
         SELL
    RETURN:   

FUNCTION placeBuyOrder():
    DO:
        1.      ( 
           , , 
        50%  )
        2.  POST-  API   
         BUY
    RETURN:   

//  ,    
//    
FUNCTION getOperationDetails():
    DO:  GET-  API   
      
    RETURN:   


Kode di atas harus cukup jelas tanpa banyak penjelasan. Namun, dengan menerapkan fungsi ini, Anda harus tahu persis data apa yang perlu Anda transfer ke API saat membuat permintaan POST yang memulai pembelian atau penjualan sesuatu.



Seringkali, misalnya, saat memperdagangkan pasangan XAU / USD (emas dan dolar AS), saat menjalankan kueri, Anda dapat menentukan berapa banyak emas yang perlu Anda beli atau berapa dolar yang perlu Anda jual. Saat melakukan permintaan semacam itu, sangat penting untuk memahami dengan jelas arti dari tindakan yang dilakukan.



▍ Loop Bot Utama



Sekarang setelah kita menyiapkan fungsi helper, mari mulai mendeskripsikan tindakan bot. Pertama, kita perlu membuat loop tak berujung yang berjalan secara berkala. Misalkan kita ingin bot mencoba melakukan operasi setiap 30 detik. Seperti inilah tampilan loop seperti ini:



FUNCTION startBot():
    INFINITE LOOP:
        attemptToMakeTrade()
        sleep(30 seconds)


Selanjutnya, kita akan mengonfigurasi variabel dan konstanta yang telah kita bicarakan di atas, dan menulis logika bot yang memungkinkannya membuat keputusan. Hasilnya, selain fungsi tambahan dan loop utama, kode bot utama akan terlihat seperti ini:



bool isNextOperationBuy = True

const UPWARD_TREND_THRESHOLD = 1.50
const DIP_THRESHOLD = -2.25

const PROFIT_THRESHOLD = 1.25
const STOP_LOSS_THRESHOLD = -2.00

float lastOpPrice = 100.00

FUNCTION attemptToMakeTrade():
    float currentPrice = getMarketPrice()
    float percentageDiff = (currentPrice - lastOpPrice)/lastOpPrice*100
    IF isNextOperationBuy:
        tryToBuy(percentageDiff)
    ELSE:
        tryToSell(percentageDiff)

FUNCTION tryToBuy(float percentageDiff):
    IF percentageDiff >= UPWARD_TREND_THRESHOLD OR percentageDiff <= DIP_THRESHOLD:
        lastOpPrice = placeBuyOrder()
        isNextOperationBuy = False

FUNCTION tryToSell(float percentageDiff):
    IF percentageDiff >= PROFIT_THRESHOLD OR percentageDiff <= STOP_LOSS_THRESHOLD:
        lastOpPrice = placeSellOrder()
        isNextOperationBuy = True


Perhatikan bahwa ambang dalam kode ini dipilih secara acak. Anda harus memilih sendiri nilai-nilai ini, sesuai dengan strategi perdagangan Anda.



Menggabungkan kode di atas dengan fungsi helper dan dengan loop bot utama, yang dapat diwakili oleh sesuatu seperti fungsi main, ini berarti bahwa sekarang kita memiliki bot yang berfungsi sangat sederhana dengan kemampuan dasar yang khas dari bot.



Pada setiap iterasi siklus, bot akan memeriksa statusnya saat ini (BELI atau JUAL) dan akan mencoba melakukan operasi perdagangan, menggunakan nilai ambang batas yang di-hardcode dalam kodenya saat menganalisis situasi saat ini. Kemudian, jika operasi selesai, bot akan memperbarui informasi tentang statusnya saat ini dan data tentang harga saat operasi terakhir dilakukan.



Langkah 5. Memperbaiki bot





Arsitektur dasar bot kita sudah siap. Tetapi kami mungkin dapat sedikit meningkatkannya dengan melengkapinya dengan beberapa fitur tambahan.



▍ Majalah



Ketika saya mulai membuat salah satu varian bot ini, sangat penting bagi saya bahwa bot akan terus-menerus mencatat informasi tentang tindakannya, mengeluarkannya ke terminal dan ke file log terpisah.



Setiap langkah dari program harus disertai dengan kira-kira catatan berikut:



[BALANCE] USD Balance = 22.15$
[BUY] Bought 0.002 BTC for 22.15 USD
[PRICE] Last Operation Price updated to 11,171.40 (BTC/USD)
[ERROR] Could not perform SELL operation - Insufficient balance


Apa yang masuk ke file log dicap waktu. Akibatnya, jika saya terhubung ke server sekali sehari dan melihat, misalnya, pesan kesalahan, saya dapat mengetahui dengan tepat kapan kesalahan terjadi dan apa yang dilakukan bot selama ini.



Melengkapi bot dengan kemampuan ini berarti menulis fungsi yang dapat diberi nama createLog. Fungsi ini harus dipanggil di setiap langkah loop bot utama. Seperti inilah tampilan fungsi ini:



FUNCTION createLog(string msg):
    DO:
        1.  msg  
        2.  msg   ,   


▍Identifikasi tren



Tujuan utama bot kami adalah membeli aset dengan harga murah dan menjualnya, menghasilkan untung. Tetapi dalam kodenya ada dua konstanta, melambangkan dua nilai ambang batas, yang sebagian bertentangan dengan tujuan ini. Ini UPWARD_TREND_THRESHOLDdan STOP_LOSS_THRESHOLD.



Nilai-nilai ini dimaksudkan untuk membatasi kerugian dengan menjual aset saat harga turun dan untuk mengatur pembelian aset saat harga naik. Intinya di sini adalah bahwa dengan bantuan mereka, kami mencoba memprediksi tren, harga, ketika muncul, melampaui batas strategi yang biasa, tetapi dapat merugikan kami atau memberi kami uang. Baik itu dan lainnya memberikan beberapa tindakan di pihak kita.



Cara kerja analisis harga sekarang sangat membatasi kami. Analisis harga, yang dilakukan dengan membandingkan sepasang indikator, jauh dari mekanisme untuk mengidentifikasi tren.



Namun untungnya, kami dapat, tanpa terlalu banyak kesulitan, membuat sistem deteksi tren kami lebih andal.



Kami hanya perlu mengatur pengamatan nilai harga lebih dari sebelumnya. Dan sebelumnya, kami hanya menyimpan informasi tentang satu indikator harga - tentang nilai aset pada saat operasi terakhir ( lastOpPrice). Misalnya, Anda dapat menyimpan informasi tentang harga untuk 10 atau 20 iterasi terakhir dari siklus bot dan membandingkannya dengan harga saat ini, dan tidak hanya lastOpPrice. Hal ini mungkin memungkinkan identifikasi tren yang lebih baik, karena dengan pendekatan ini kita dapat menangkap fluktuasi harga jangka pendek daripada fluktuasi yang terjadi dalam waktu lama.



▍Database?



Bot sederhana tidak benar-benar membutuhkan database. Bagaimanapun juga, dia beroperasi dengan jumlah data yang sangat kecil dan menyimpan semua informasi yang dia butuhkan dalam memori.



Tetapi apa yang terjadi jika, misalnya, bot dihentikan secara tidak normal? Bagaimana dia bisa tahu, tanpa campur tangan manusia, apa artinya itu lastOpPrice?



Untuk menghilangkan kebutuhan akan intervensi manual dalam kode bot saat dimulai ulang, kita mungkin memerlukan beberapa database sederhana di mana kita dapat menyimpan beberapa indikator seperti lastOpPrice.



Dengan pendekatan ini, bot, saat diluncurkan, mungkin tidak menggunakan nilai yang di-hardcode dalam kode. Sebaliknya, ia mengakses data yang disimpan dan melanjutkan dari tempat yang ditinggalkannya.



Bergantung pada seberapa sederhananya menurut Anda "database" ini seharusnya, Anda bahkan dapat memutuskan untuk menggunakan file .txt atau .json biasa, karena, bagaimanapun, kita berbicara tentang penyimpanan kumpulan data terbatas.



▍Panel Kontrol





Jika Anda ingin mengatur visualisasi aktivitas bot, serta mengelolanya tanpa mengedit kodenya, Anda mungkin ingin menghubungkan bot tersebut ke beberapa jenis panel kontrol.



Ini akan membutuhkan bot untuk memiliki API servernya sendiri untuk mengelola fungsinya.



Pendekatan ini, misalnya, memudahkan untuk mengubah ambang batas.



Ada banyak templat dasbor yang tersedia, yang berarti jika Anda memutuskan untuk melakukan sesuatu seperti ini, Anda bahkan tidak perlu membuatnya dari awal. Lihat Start Bootstrap dan Creative Tim , misalnya .



▍ Strategi pengujian pada data historis



Banyak bursa memberi klien akses ke data harga historis. Selain itu, jika Anda membutuhkan data semacam ini, biasanya mudah mendapatkannya.



Penggunaannya sangat berguna untuk menguji strategi perdagangan sebelum benar-benar menerapkannya. Ini memungkinkan simulasi berjalan menggunakan data historis dan uang palsu. Ini memungkinkan Anda mengetahui seberapa baik kinerja ambang batas dan, jika perlu, mengubah nilai-nilai ini.



▍Informasi tambahan tentang ambang batas dan klaim



Ada beberapa hal yang perlu diingat saat melakukan pemesanan.



Pertama, perlu Anda ketahui bahwa ada dua jenis order: limit dan order pasar. Jika Anda sama sekali tidak tahu tentang ini, Anda harus membaca literatur khusus. Saya akan menjelaskan ide-ide ini hanya dalam beberapa kata.



Pesanan pasar adalah pesanan yang dieksekusi pada harga pasar saat ini. Dalam banyak kasus, ini berarti penerapan langsungnya.



Limit order, di sisi lain, adalah order yang ditempatkan dengan menunjukkan harga yang berada di bawah pasar (dalam kasus order beli) atau di atas pasar (dalam kasus order jual). Pada saat yang sama, tidak ada jaminan bahwa order ini akan dieksekusi, karena harga mungkin tidak mencapai nilai yang ditentukan.



Kekuatan dari limit order adalah mereka memungkinkan, mengantisipasi pergerakan pasar, untuk menempatkan order di mana, menurut pendapat trader, harganya mungkin.



Selain itu, komisi yang lebih rendah biasanya diterapkan pada pesanan semacam itu daripada pesanan pasar. Hal ini disebabkan oleh fakta bahwa apa yang disebut "biaya pengambil" biasanya diterapkan pada pesanan pasar, dan apa yang biasa disebut "biaya pembuat" diterapkan untuk membatasi pesanan.



Alasan komisi ini dinamai demikian adalah karena siapa pun yang melakukan order pasar hanya "mengambil" harga pasar saat ini. Dan limit order berada di luar harga pasar, mereka menambahkan likuiditas ke pasar dan, sebagai hasilnya, "menciptakan pasar", di mana pencipta mereka diberi imbalan komisi yang lebih rendah.



Harap dicatat bahwa bot yang kami pertimbangkan di sini paling cocok untuk bekerja dengan pesanan pasar.



Dan, mengakhiri pembicaraan tentang komisi, saya ingin mencatat bahwa ketika menetapkan nilainya PROFIT_THRESHOLD, komisi juga harus diperhitungkan.



Untuk mendapatkan keuntungan, bot harus melakukan operasi BELI terlebih dahulu, kemudian operasi JUAL. Artinya komisi akan dibebankan dua kali.



Akibatnya, bot perlu dikonfigurasi sehingga keuntungan yang diterima dari penjualan setidaknya menutupi komisi. Jika tidak, bot akan diperdagangkan dengan kerugian.



Coba pikirkan, berangkat dari asumsi penggunaan komisi yang tidak bergantung pada jumlah aplikasi dan jenis operasinya. Jadi, komisi untuk membeli aset seharga $ 100 adalah $ 0,50. Jika aset ini dijual seharga $ 100,75 dan dikenakan komisi yang sama, maka ternyata laba kotornya 0,75%. Tapi, nyatanya, disini kita berhadapan dengan rugi bersih 0,25%.



Sekarang bayangkan bot Anda selalu menutup perdagangan dengan kerugian bersih. Dalam situasi seperti itu, Anda dapat dengan cepat kehilangan banyak uang.



Hasil



Tujuan utama saya adalah untuk mengungkapkan konsep yang perlu Anda ketahui saat mengembangkan bot perdagangan. Saya mencoba mendeskripsikan semuanya sedemikian rupa sehingga dapat dimengerti bahkan oleh mereka yang belum pernah berdagang di bursa sebelumnya. Pada saat yang sama, saya tidak mengaitkan narasinya dengan bahasa pemrograman tertentu.



Saya berasumsi bahwa pembaca artikel ini mengetahui cara membuat permintaan HTTP menggunakan bahasa pemrograman pilihan mereka. Oleh karena itu, saya tidak membahas detail pemrograman, berfokus pada hal-hal lain.



Saya telah memberi tahu Anda semua yang saya inginkan tentang mengembangkan bot perdagangan. Semoga sekarang Anda dapat membuat bot Anda sendiri.



Apakah Anda menggunakan bot perdagangan?






All Articles