Monday 21 August 2017

Pengujian Kembali Forex Python


Python Algorithmic Trading Library PyAlgoTrade adalah Python Algorithmic Trading Library dengan fokus pada backtesting dan dukungan untuk perdagangan kertas dan live-trading. Katakanlah Anda memiliki ide untuk strategi trading dan Anda ingin mengevaluasinya dengan data historis dan melihat bagaimana perilaku tersebut. PyAlgoTrade memungkinkan Anda melakukannya dengan sedikit usaha. Fitur utama Dikeluarkan sepenuhnya. Acara didorong Mendukung pesanan Market, Limit, Stop dan StopLimit. Mendukung file Yahoo Finance, Google Finance dan NinjaTrader CSV. Mendukung semua jenis data deret waktu dalam format CSV, misalnya Quandl. Dukungan perdagangan Bitcoin melalui Bitstamp. Indikator teknis dan filter seperti SMA, WMA, EMA, RSI, Bollinger Bands, Hurst eksponen dan lain-lain. Metrik kinerja seperti analisis rasio dan penarikan Sharpe. Menangani acara Twitter secara realtime. Profiler acara Integrasi TA-Lib. Sangat mudah untuk skala horizontal, yaitu menggunakan satu atau lebih komputer untuk mendukung strategi. PyAlgoTrade bebas, open source, dan dilisensikan di bawah Lisensi Apache, Versi 2.0.Event-Driven Backtesting with Python - Bagian I Weve menghabiskan beberapa bulan terakhir di QuantStart untuk mendukung berbagai strategi perdagangan dengan menggunakan Python dan panda. Sifat vektor dari panda memastikan operasi tertentu pada dataset besar sangat cepat. Namun bentuk backtester vektor yang telah kita pelajari sampai sekarang mengalami beberapa kekurangan karena simulasi perdagangan dilakukan. Dalam rangkaian artikel ini, kita akan membahas pendekatan yang lebih realistis terhadap simulasi strategi historis dengan membangun lingkungan backtesting berbasis event dengan menggunakan Python. Perangkat Lunak Berbasis Kejadian Sebelum kita mempelajari perkembangan backtester semacam itu, kita perlu memahami konsep sistem event-driven. Permainan video menyediakan kasus penggunaan alami untuk perangkat lunak berbasis peristiwa dan memberikan contoh langsung untuk dijelajahi. Sebuah video game memiliki banyak komponen yang berinteraksi satu sama lain dalam setting real-time pada framerate tinggi. Ini ditangani dengan menjalankan seluruh rangkaian perhitungan dalam lingkaran tak terbatas yang dikenal sebagai lingkaran aktivitas atau lingkaran permainan. Pada setiap tikungan fungsi lingkaran permainan dipanggil untuk menerima acara terbaru. Yang akan dihasilkan oleh beberapa tindakan sebelumnya yang sesuai dalam permainan. Bergantung pada sifat acara, yang bisa mencakup penekanan tombol atau klik mouse, beberapa tindakan berikutnya diambil, yang akan menghentikan lingkaran atau menghasilkan beberapa peristiwa tambahan. Proses selanjutnya akan dilanjutkan. Berikut adalah beberapa contoh pseudo-code: Kode ini terus-menerus memeriksa kejadian baru dan kemudian melakukan tindakan berdasarkan peristiwa ini. Secara khusus, ini memungkinkan ilusi penanganan respons real-time karena kode terus dilipat dan acara diperiksa. Seperti yang akan menjadi jelas inilah yang kita butuhkan untuk melakukan simulasi perdagangan frekuensi tinggi. Mengapa Sistem Backtester Berbasis Event Event memberikan banyak keunggulan dibandingkan pendekatan vectorised: Code Reuse - Backtester berbasis event, berdasarkan desain, dapat digunakan untuk backtesting historis dan perdagangan langsung dengan sedikit komponen yang tidak aktif. Ini tidak benar adanya backtesters vektor dimana semua data harus tersedia sekaligus untuk melakukan analisis statistik. Lookahead Bias - Dengan backtester berbasis event tidak ada bias lookahead karena penerimaan data pasar diperlakukan sebagai peristiwa yang harus ditindaklanjuti. Dengan demikian, mungkin saja menetes memberi makan backtester berbasis aktivitas dengan data pasar, mereplikasi bagaimana manajemen pesanan dan sistem portofolio akan berperilaku. Realisme - Backtesters berbasis event memungkinkan penyesuaian yang signifikan mengenai bagaimana perintah dijalankan dan biaya transaksi dikeluarkan. Sangat mudah untuk menangani pasar dasar dan limit order, serta market-on-open (MOO) dan market-on-close (MOC), karena pengendali pertukaran kustom dapat dibangun. Meskipun sistem berbasis event datang dengan banyak manfaat, mereka menderita dua kelemahan utama pada sistem vektor yang lebih sederhana. Pertama, mereka secara signifikan lebih kompleks untuk diimplementasikan dan diuji. Ada bagian yang lebih bergerak yang mengarah ke kesempatan lebih besar untuk mengenalkan bug. Untuk mengurangi metodologi pengujian perangkat lunak yang tepat seperti pengembangan uji coba dapat digunakan. Kedua, mereka lebih lambat dieksekusi dibandingkan dengan sistem vectorised. Operasi vectorised optimal tidak dapat digunakan saat melakukan perhitungan matematis. Kita akan membahas cara mengatasi keterbatasan ini di artikel selanjutnya. Ikhtisar Backtester Event-Driven Untuk menerapkan pendekatan berbasis event ke sistem backtesting, penting untuk mendefinisikan komponen (atau objek) yang akan menangani tugas-tugas tertentu: Event - Event adalah unit kelas fundamental dari sistem event-driven. Ini berisi jenis (seperti PASAR, SIGNAL, ORDER or FILL) yang menentukan bagaimana penanganannya dalam lingkaran peristiwa. Antrian Acara - Antrian Acara adalah objek Antrian Antrian dalam memori yang menyimpan semua objek Subkelas Peristiwa yang dihasilkan oleh perangkat lunak lainnya. DataHandler - DataHandler adalah kelas dasar abstrak (ABC) yang menghadirkan sebuah antarmuka untuk menangani data historis atau data pasar langsung. Ini memberikan fleksibilitas yang signifikan karena modul Strategi dan Portofolio dapat digunakan kembali di antara kedua pendekatan tersebut. DataHandler menghasilkan MarketEvent baru pada setiap detak jantung sistem (lihat di bawah). Strategi - Strategi ini juga merupakan ABC yang menghadirkan sebuah antarmuka untuk mengambil data pasar dan menghasilkan SignalEvents yang sesuai, yang pada akhirnya digunakan oleh objek Portfolio. Sebuah SignalEvent berisi simbol ticker, arah (LONG atau SHORT) dan stempel waktu. Portofolio - Ini adalah ABC yang menangani manajemen pesanan yang terkait dengan posisi saat ini dan berikutnya untuk sebuah strategi. Ini juga menjalankan manajemen risiko di seluruh portofolio, termasuk eksposur sektor dan ukuran posisi. Dalam implementasi yang lebih canggih, hal ini dapat didelegasikan ke kelas RiskManagement. Portofolio mengambil SignalEvents dari Antrian dan menghasilkan OrderEvents yang ditambahkan ke Antrean. ExecutionHandler - EksekusiHandler mensimulasikan koneksi ke broker. Tugas pawang adalah mengambil OrderEvents dari Antrian dan mengeksekusinya, baik melalui pendekatan simulasi atau koneksi aktual ke broker hati. Setelah pesanan dijalankan, pawang menciptakan FillEvents, yang menjelaskan apa yang sebenarnya ditransaksikan, termasuk biaya, komisi dan selip (jika dimodelkan). Loop - Semua komponen ini dibungkus dalam lingkaran peristiwa yang menangani semua jenis Event dengan benar, perutean ke komponen yang sesuai. Ini adalah model dasar mesin perdagangan. Ada ruang lingkup ekspansi yang signifikan, terutama mengenai bagaimana Portofolio digunakan. Selain itu, model biaya transaksi yang berbeda juga dapat diabstraksikan ke dalam hirarki kelas mereka sendiri. Pada tahap ini, ia memperkenalkan kompleksitas yang tidak perlu dalam rangkaian artikel ini sehingga saat ini kita tidak membahasnya lebih jauh lagi. Dalam tutorial selanjutnya kita mungkin akan memperluas sistem untuk memasukkan realisme tambahan. Berikut adalah cuplikan kode Python yang menunjukkan bagaimana backtester bekerja dalam praktik. Ada dua loop yang terjadi dalam kode. Lingkaran luar digunakan untuk memberi backtester sebuah detak jantung. Untuk live trading ini adalah frekuensi dimana data pasar baru disurvei. Untuk strategi backtesting, hal ini tidak benar-benar diperlukan karena backtester menggunakan data pasar yang disediakan dalam bentuk umpan tetes (lihat baris bar. updatebars ()). Lingkaran dalam benar-benar menangani Peristiwa dari objek Antrian peristiwa. Peristiwa tertentu didelegasikan ke komponen masing-masing dan selanjutnya acara baru ditambahkan ke antrian. Saat acara Antrean kosong, loop detak jantung terus berlanjut: Ini adalah garis besar dasar bagaimana sebuah backtester berbasis aktivitas dirancang. Pada artikel selanjutnya kita akan membahas hirarki kelas Event. Mulai dengan Trading Kuantitatif

No comments:

Post a Comment