Pyne adalah sistem untuk membuat program yang mengolah data pasar. Program tersebut bisa menghitung dan menampilkan nilai dari harga, atau menentukan aturan strategi trading. Buku ini membahas seluruh prosesnya, dari menulis program hingga memeriksa hasilnya.

Apa yang disebut Pyne code?

Kita menulis program dalam Pyne code. Ini adalah bahasa pemrograman tersendiri yang dirancang untuk mengolah data pasar. Kode menjelaskan apa yang harus dihitung, apa yang harus ditampilkan, dan syarat apa yang harus dipenuhi sebelum suatu tindakan dilakukan.

Sebuah indikator, misalnya, bisa menghitung rata-rata harga sepuluh candle terakhir dan menggambarnya sebagai garis pada grafik harga. Grafik harga, atau chart, memperlihatkan perubahan harga dari waktu ke waktu. Strategi juga menentukan aturan masuk dan keluar: misalnya membuka posisi beli saat suatu syarat terpenuhi. Dengan menjalankannya pada data historis, kamu bisa memeriksa transaksi yang akan dihasilkan aturan tersebut dengan asumsi eksekusi yang ditentukan. Pengujian ini disebut backtest.

Kita mulai dengan indikator sederhana. Melalui contoh ini kamu mempelajari data dan bahasanya sebelum menulis aturan trading.

Apa hubungannya dengan Python?

Pyne code menggunakan aturan penulisan Python. Aturan ini disebut sintaks: misalnya menentukan letak tanda kurung dan cara menandai baris yang termasuk dalam satu kelompok. Kamu tidak perlu belajar Python terlebih dahulu; aturan yang diperlukan dijelaskan melalui contoh buku.

Karena itu, file menggunakan ekstensi .py yang lazim untuk Python. Pyne code juga dapat dijalankan dengan runtime Python jika PyneCore terpasang. Python menyediakan lingkungan eksekusi, sedangkan PyneCore menyediakan perilaku khusus Pyne dan pustaka fungsinya.

Bagaimana program mengolah data?

Contoh menggunakan data pasar berupa rangkaian candle. Satu candle merangkum data dalam satu periode, termasuk harga pembukaan dan penutupannya. Pada data harian, satu candle mewakili satu hari.

PyneCore menjalankan perhitungan program pada candle tersebut secara berurutan. Misalnya, pada setiap candle program bisa menghitung ulang rata-rata berdasarkan harga yang sudah tersedia. Sistem juga menangani nilai perhitungan sebelumnya dan data yang perlu disimpan antarcandle.

Cara kerja ini berbeda dari program Python biasa. Penanda @pyne di awal file memberi tahu PyneCore untuk menyiapkan dan menjalankan kode sesuai aturan tersebut. Bab penjelasan kode membahas bentuk penanda ini dan arti edge yang menyertainya dalam contoh buku.

Apa bedanya dengan pemrosesan vektor?

Kerangka kerja trading berbasis Python ada yang memproses per candle dan ada yang menggunakan vektor. Dalam pemrosesan vektor, operasi dilakukan pada seluruh deret angka: misalnya menghitung rata-rata dan sinyal beli untuk semua candle sekaligus. Data biasanya ditangani dalam tabel atau array.

Di PyneCore, kamu menjelaskan apa yang harus dilakukan pada candle saat ini. Sistem menjalankannya, lalu beralih ke candle berikutnya. Riwayat perhitungan dan status yang perlu disimpan ditangani sesuai aturan bahasa Pyne.

Menulis langkah dalam fungsi sederhana

Pada sejumlah kerangka kerja yang memproses per candle, kamu harus membuat sebuah kelas untuk strategimu. Kelas menyatukan data dan operasi yang terkait; fungsi di dalamnya disebut metode. Pengaturan dan aturan trading ditulis dalam metode yang ditentukan kerangka kerja, lalu harga dan posisi diakses melalui data kelas tersebut.

Dalam contoh Pyne code, kamu menuliskan perhitungan dan syarat tindakan dalam fungsi main(). Baris-barisnya berjalan berurutan pada setiap candle yang diproses: menghitung nilai, memeriksa syarat, lalu menggambar sinyal atau mengirim order. PyneCore menangani perulangan atas candle.

Untuk memulai, kamu tidak perlu belajar membuat kelas dan pewarisan atau membagi program ke berbagai metode kerangka kerja. Contoh sederhana cukup memerlukan variabel, pemanggilan fungsi, dan kondisi yang akan dipelajari dalam bab berikutnya.

Mengikuti aturan sesuai urutan waktu

Cara ini dekat dengan alur berpikir saat mengambil keputusan trading: “Lihat harga sekarang dan pergerakannya sejauh ini. Jika syarat terpenuhi, masuk. Selama ada posisi, pantau syarat keluar.” Urutan kejadian yang sama bisa kamu ikuti dalam kode, dan debugger memungkinkanmu memeriksa variabel pada candle tertentu.

Lebih sulit memakai data masa depan tanpa sengaja

Dalam pemrosesan vektor, seluruh rangkaian data mungkin tersedia. Pergeseran ke arah yang salah atau pilihan rata-rata yang keliru bisa memasukkan harga yang belum diketahui saat keputusan dibuat. Misalnya, rata-rata harga setahun penuh akan menggunakan harga dari bulan-bulan berikutnya untuk keputusan pada Januari. Program tetap bisa berjalan dan menghasilkan angka yang meyakinkan, sehingga kesalahannya sulit terlihat. Ini disebut bias melihat ke depan, atau look-ahead bias.

Deret waktu milik Pyne menyediakan nilai candle saat ini dan candle yang sudah diproses. Akses riwayat tidak bisa membaca harga candle berikutnya. Ini mengurangi risiko penggunaan data masa depan tanpa sengaja dan memudahkan pemeriksaan dasar sebuah keputusan.

Persiapan data tetap perlu diperhatikan. Jika data eksternal sudah memuat informasi yang baru diketahui belakangan, pemrosesan per candle tidak dapat mendeteksinya dengan sendirinya.

Ada kompromi dalam kecepatan

Untuk beberapa program, eksekusi per candle bisa lebih lambat daripada perhitungan vektor yang ditulis dengan baik. Ini bisa terasa saat mencoba banyak variasi strategi atau parameter pada data yang besar. Sistem vektor sering mempercepat perhitungan massal tersebut dengan pustaka komputasi yang dioptimalkan. Selisih sebenarnya bergantung pada program dan jumlah data.

Buku ini mengajarkan pemrosesan per candle: merumuskan aturan sesuai urutan waktu dan memeriksa riwayat yang mendasari setiap keputusan.

Untuk mengenal pendekatan lain, lihat pemrosesan vektor di VectorBT dan strategi per candle di Backtrader (bahasa Inggris).

Apa kegunaan PyneIDE dan PyneCore?

PyneIDE adalah ekstensi untuk editor Visual Studio Code. Di sini kamu menulis program, memilih data, dan menjalankannya. Hasilnya ditampilkan pada grafik, dan kesalahan juga bisa dicari di sini.

PyneCore adalah sistem yang menjalankan program. Sistem ini memuat dan menyiapkan kode, mengolah candle, lalu menghasilkan perhitungan dan hasil transaksi. PyneIDE menggunakan PyneCore di balik layar dan menampilkan hasilnya.

Dalam bab berikutnya, kamu akan menyiapkan PyneIDE dan membuat proyek pertama. Kita menggunakan data contoh, sehingga kamu bisa menjalankan ulang program yang sama dan membandingkan hasil perubahanmu.