Tuesday 22 August 2017

Lua trading system


Guile adalah bahasa pemrograman Guile yang dirancang untuk membantu programmer membuat aplikasi fleksibel yang dapat diperluas oleh pengguna atau programmer lain dengan plug-in, modul, atau skrip. Dengan Guile Anda bisa membuat aplikasi dan game untuk desktop. Web. Baris perintah Dan banyak lagi. Contoh kode Guile adalah implementasi bahasa pemrograman Skema, yang mendukung Revisi 5 dan sebagian besar laporan bahasa Revisi 6, serta banyak SRFI. Ini juga dilengkapi dengan perpustakaan modul yang menawarkan fitur tambahan, seperti server HTTP dan klien, parsing XML, dan pemrograman berorientasi objek. Hello world program Tentukan sebuah variabel bernama name. Bergabunglah dengan teks Hello. nama. dan. Bersama untuk membentuk salam Hello world. Dan tampilkan di layar. Mengimpor modul Mengimpor modul srfi-19 dan menggunakan fungsinya untuk menampilkan tanggal dan waktu saat ini dalam format WEEKDAY, MONTHDDAY YEAR HOUR: SECOND. Halo server HTTP Jalankan server Web yang akan mengembalikan tanggapan dengan teks quotHello Worldquot untuk setiap permintaan yang dikirim oleh klien HTTP. Buka localhost: 8080 untuk melihat hasilnya. Guile adalah platform bahasa ekstensi Guile yang berisi kompiler dan mesin virtual yang efisien. Hal ini dapat digunakan di luar kotak untuk menulis program dalam Skema, atau dapat dengan mudah diintegrasikan dengan program C dan C. Guile adalah Bahasa Cerdas GNU Ubiquitous untuk Ekstensi, dan bahasa ekstensi resmi proyek GNU. Memperluas aplikasi Selain Skema, Guile menyertakan kompiler depan-berakhir untuk ECMAScript dan Emacs Lisp (dukungan sedang dilakukan untuk Lua), yang berarti aplikasi Anda dapat diperluas dalam bahasa (atau bahasa) yang paling sesuai untuk basis pengguna Anda. Dan alat Guileaposs untuk penguraian dan kompilasi terpapar sebagai bagian dari rangkaian modul standarnya, jadi dukungan untuk bahasa tambahan dapat ditambahkan tanpa menulis satu baris pun C. Guile memberdayakan pengguna dengan kebebasan perangkat lunak bebas kata kunci Menggunakan bahasa scripting yang didukung, pengguna dapat Menyesuaikan dan memperluas aplikasi saat mereka berjalan dan melihat perubahan berlangsung live Pengguna dapat dengan mudah memperdagangkan dan berbagi fitur dengan mengunggah dan mendownload skrip, alih-alih memperdagangkan tambalan yang rumit dan mengkompilasi ulang aplikasinya. Aplikasi yang menggunakan Guile GNU Guix amp GuixSD Manajer paket dan distribusi GNU Suite untuk Desain Elektronik Otomasi GNU debugger GNU Guile di FOSDEM 10 Januari 2017 GNU Guile mengadakan sesi sendiri di FOSDEM tahun ini lagi. Jadwal sekarang tersedia. Pembicaraan mencakup berbagai topik: antarmuka pengguna GNU Guile 2.1.5 yang dirilis pada 9 Desember 2016 Kami dengan senang hati mengumumkan peluncuran GNU Guile 2.1.5, pra-rilis berikutnya dalam rangkaian 2.2 yang akan diluncurkan. Rilis ini memperbaiki paralelisme Guileaposs GNU Guile 2.0.13 merilis perbaikan keamanan 12 Oktober 2016 Weaposve baru saja merilis versi baru GNU Guile, versi 2.0.13, yang merupakan rilis keamanan untuk Guile (lihat pengumuman asli). Ini menangani masalah yang signifikan. Kerentanan keamanan Tentang situs ini Website ini didukung oleh GNU Guile dan kode sumber berada di bawah GNU AGPL. Silakan gunakan milis atau saluran patahan pada Freenode untuk informasi lebih lanjut tentang GNU Guile dan situs ini. Pembelajaran Dasar dan Perdagangan Otomatis The Big Short (saya suka) Mencari strategi perdagangan dengan backtests yang menguntungkan - UPDATE Saya telah melakukan beberapa percakapan yang sangat menarik sejak Saya menawarkan kerangka perdagangan intraday non-publik saya untuk mendapatkan informasi mengenai strategi yang menguntungkan, oleh karena itu saya ingin memperpanjang panggilan terbatas pada waktu terbatas ini tanpa batas waktu. Perhatikan bahwa saya tidak mencari ide strategi. Saya memiliki banyak dari mereka sendiri. Tantangannya tidak terletak pada ide yang ada, tapi dalam memilih yang benar dan mengujinya sampai akhir, kapan Anda akan tahu bahwa itu berhasil atau tidak. Faktor kritis di sini adalah waktu. Jadi, apa dasarnya saya adalah perdagangan yang telah saya investasikan ke dalam pengembangan kerangka perdagangan intraday yang solid dengan waktu yang telah Anda investasikan untuk mengembangkan strtategy perdagangan yang menguntungkan. Ini bisa menjadi strategi saham, ETF, future atau option. Semua diskusi dan pertukaran informasi akan dijaga kerahasiaannya. Saya tentu saja terbuka untuk membicarakan ide secara murni, tapi tolong jangan mengharapkan saya untuk mengujinya untuk Anda dan jangan mengeluh jika saya menerapkannya tanpa meminta persetujuan Anda. Panggilan untuk Proposal Mencari strategi perdagangan dengan backtests yang menguntungkan Sampai 15 Juni. Saya menerima proposal untuk strategi perdagangan yang menjanjikan pada indeks saham, mata uang dan sahambondcommodity. Strategi ini harus menguntungkan dalam backtesting dan memiliki rasio sharpe tahunan minimal 1,0. Pada tanggal 1 Juli, dua strategi yang paling menjanjikan akan dipilih dan penulis mereka dapat memilih salah satu dari opsi berikut: 1) Dapatkan salinan lengkap dan gratis dari kerangka kerja perdagangan non publik yang disempurnakan berdasarkan R yang telah saya kembangkan dan gunakan Sejak 2012 dan bisa penulis gunakan untuk live trading strategi mereka dengan Interactive Brokers. (Versi publik yang disederhanakan dapat didownload di sini) 2) Masuk ke dalam kesepakatan kerja sama di mana saya akan berkomitmen untuk menerapkan strategi mereka di R dan perdagangan kertas selama maksimal tiga bulan. Semua perdagangan individu akan dibagi dengan penulis saat mereka tiba. Selain itu, kode R yang spesifik untuk strategi (bukan kode kerangka kerja perdagangan) akan diserahkan kepada penulis strategi. Apa yang harus disampaikan: Deskripsi lengkap tentang strategi ditambah daftar perdagangan ditambah waktu pengembalian kode backtest atau kode Roctavepython yang dapat digunakan secara langsung untuk menghitung backsest return timeseries, bersama dengan dataset lengkap harga yang digunakan di backtest. Kirimkan ke email saya yang tersedia di bagian Kontak Pembaruan Kerangka Perdagangan Intraday R murni Akhirnya saya menemukan waktu untuk melakukan ini. Lama tertunda. Kerangka kerja sekarang berjalan dengan versi terbaru (unix) dari IB TWSGW (versi 9493 dan yang lebih tinggi). Hal ini sendiri membutuhkan penulisan kembali parsial beberapa fungsi dari paket IBrokers R yang hebat namun sekarang sedikit usang oleh Jeff Ryan. Juga konfigurasi default untuk trading EURUSD telah diupdate sehingga sekarang menjadi sepotong kue untuk menjalankan contoh strategi dummy. Cukup kloning repo git ke mesin lokal Anda. GithubcensixINTRADAY-PartAB dan ikuti README. Sesuatu tentang Hardware Aku masih penggemar memiliki logam saya sendiri. Tentu, melakukan hal-hal dengan gambar mesin yang dapat dikonfigurasi di awan sangat populer karena Anda tidak perlu repot mengelola perangkat keras Anda sendiri, namun, bukankah kerumitan itu benar-benar hanya menjadi masalah bagi organisasi besar di mana ratusan pengguna harus tetap bahagia di Biaya minimal Begitu juga awan bukan hanya solusi untuk masalah orang-orang yang harus mengelola skala, tapi pada saat bersamaan mencoba menjual-pada solusi itu ke joe individu di luar sana yang, mari menghadapinya, tidak benar-benar membutuhkannya. Bagaimanapun, seperti yang saya katakan, saya adalah penggemar yang memiliki logam saya sendiri. Hardware off-the-shelf yang murah bisa membawa Anda jauh jika Anda meluangkan waktu untuk mengkonfigurasinya dengan benar. Sebuah desktop RAM 16-64Gb dengan satu atau bahkan dua GPU akan cukup banyak melakukan apapun yang Anda butuhkan. Tampaknya strategi backtesting menggunakan lebih banyak sumber daya komputasi daripada perdagangan live aktual, oleh karena itu hari ini Anda dapat menyiapkan dan menjalankan strategi intraday dari laptop yang layak dengan keyakinan, sedangkan untuk backtesting dan penelitian Anda benar-benar menginginkan monster CPU RAM GPU Di atas atau sekelompok kecil supercomputing kecil Anda sendiri, seperti yang baru saja saya jelaskan di sini. Murni R Intraday trading framwork Download lengkap tersedia Saya telah membuat INTRADAY-PartA. tar. gz dan INTRADAY-PartB. tgz tersedia untuk didownload. Censixdownloads. html Menemukan hubungan antara aset yang dapat digunakan untuk arbitrase statistik Alih-alih berfokus pada peramalan arah harga dan volatilitas harga dengan model nonlinier yang diperoleh dengan metode pembelajaran mesin, alternatifnya adalah mencoba dan menemukan hubungan harga yang dapat dieksploitasi antara aset kelas yang sama. Dan bereaksi (trade) ketika terjadi kesalahan penulisan, dengan kata lain, melakukan arbitrase statistik. Dalam arti ini mungkin lebih mudah daripada mencoba meramalkan harga, karena satu-satunya yang harus dilakukan adalah menemukan hubungan linier atau linier yang relatif stabil antara satu kelompok dengan setidaknya dua aset dan mengasumsikan bahwa, dari saat Pendeteksiannya, hubungan itu akan berlanjut untuk beberapa waktu ke depan. Perdagangan dengan asumsi ini kemudian sangat banyak proses reaktif yang dipicu oleh pergerakan harga yang menyimpang secara signifikan dari hubungan model. Perdagangan Pasangan Tradisional dan perdagangan assetts dalam VECM (Vector Error Correction Model) adalah contoh yang baik untuk statarb dengan menggunakan model linier. Jadi mengapa tidak menggunakan jaringan syaraf tiruan satu lapisan atau bahkan RBM untuk menemukan hubungan harga non linier antara dua aset tidak terkointegrasi dan jika proses penemuan ini berhasil, lakukan perdagangan dengan cara yang mirip dengan pasangan klasik. Hal menjadi lebih menarik lagi bila kelompok dengan lebih dari dua aset dipertimbangkan. Ini kemudian akan menjadi ekuivalen non-linear dari VECM. Pilihan Fitur Breadth vs Depth Katakanlah kita memiliki target predikat predecessition univariat yang bisa berupa regresi atau klasifikasi tipe, dan kita harus memutuskan fitur input apa yang akan dipilih. Lebih konkretnya, kita memiliki sekumpulan besar timeseries yang bisa kita gunakan sebagai masukan dan kita ingin tahu berapa banyak yang harus kita pilih (luasnya) dan juga seberapa jauh ke belakang kita ingin mencari masing-masing (kedalaman). Ada dua dimensi ruang pilihan, dibatasi oleh empat kasus ekstrem berikut, dengan asumsi bahwa kita memiliki total seri N dan paling tidak kita dapat melihat kembali timesteps K: (1) hanya memilih satu seri dan tampilan balik Satu timestep, (2) pilih hanya satu seri dan lookback K timesteps, (3) pilih seri N dan lihat satu timestep, (4) pilih seri N dan lookback K timesteps. Pilihan yang optimal kemungkinan besar bukan salah satunya, karena (1) dan (2) mungkin tidak mengandung cukup informasi prediksi dan (3) dan terutama (4) tidak dapat dilakukan karena kontraksi komputasi atau mengandung terlalu banyak noise acak. Cara yang disarankan untuk mendekati ini adalah mulai dari kecil pada (1), lihat kinerja apa yang Anda dapatkan, dan kemudian tingkatkan ukuran ruang masukan, baik secara luas atau mendalam, sampai Anda mencapai kinerja prediksi yang memuaskan atau sampai Anda lelah. Sumber daya komputasi Anda dan perlu untuk mengabaikan keseluruhan pendekatan :( atau beli desktop baru (pertanian) :) Menggunakan Stacked Autoencoders dan Mesin Boltzmann yang Dibekukan di R 12 Februari 2014 Stacked Autoencoders (SAs) dan Mesin Boltzmann yang Dibatasi ( RBM) adalah model yang sangat kuat untuk pembelajaran tanpa pengawasan. Sayangnya, pada saat penulisan ini terlihat seolah-olah tidak ada implementasi R langsung yang tersedia, yang mengejutkan karena kedua tipe model telah ada selama beberapa waktu dan R memiliki implementasi untuk jenis model pembelajaran mesin lainnya. Sebagai solusi, SA dapat diimplementasikan dengan menggunakan salah satu dari beberapa paket jaringan syaraf R yang cukup cepat (nnet, AMORE) dan RBMs, nah, seseorang harus menulis implementasi R yang baik untuk mereka. Namun mengingat bahwa pelatihan kedua tipe model ini membutuhkan banyak sumber daya komputasi, kami juga menginginkan implementasi yang bisa memanfaatkan GPU. Jadi saat ini solusi paling sederhana yang kita miliki adalah menggunakan Theano. Ini bisa menggunakan GPU dan ini menyediakan implementasi autoencoders dan RBM yang ditumpuk (denoising). Selain kode PythonTheano untuk beberapa varian Mesin Boltzmann lainnya yang lebih eksotis juga beredar di net. Kita bisa menggunakan rPython untuk memanggil fungsi Python ini dari R tapi tantangannya adalah data. Mendapatkan dataset besar bolak-balik antara R dan Python tanpa menggunakan serialisasi ascii yang mengimplementasikan rPython (terlalu lambat) perlu dipecahkan. Implementasi autoencoders setidaknya sama kuat yang mendukung penggunaan GPU tersedia melalui kerangka kerja Torch7 (demo). Namun, fungsi Torch7 dipanggil menggunakan lua dan memanggilnya dari dalam R alih-alih akan memerlukan beberapa pekerjaan di tingkat C. Sebagai kesimpulan: Gunakan Theano (Python) atau Torch7 (lua) untuk model pelatihan dengan dukungan GPU dan tuliskan model yang dilatih untuk diajukan. Di R, impor model yang dilatih dari file dan digunakan untuk prediksi. Update 25 April 2014: Solusi bagus berikut Call Python dari R melalui Rcpp harus membawa kita selangkah lebih dekat untuk menggunakan Theano secara langsung dari R. Frekuensi apa untuk Perdagangan. 13 Januari 2014 Saat mencoba menemukan pola pasar yang dapat dieksploitasi yang bisa diperdagangkan sebagai pedagang eceran, salah satu pertanyaan pertama adalah: Frekuensi perdagangan apa yang harus dilihat pada Harian Mingguan Bulanan atau intraday antara 5 detik sampai 1 jam Dengan waktu terbatas yang tersedia untuk Melakukan penelitian pada semua rentang waktu ini, ini menjadi pertanyaan penting untuk dijawab. Saya dan orang lain telah mengamati bahwa tampaknya ada hubungan yang sederhana antara frekuensi perdagangan dan jumlah usaha yang dibutuhkan untuk menemukan strategi yang menguntungkan yang murni kuantitatif dan memiliki risiko yang dapat diterima. Singkatnya: Semakin rendah (lambat) frekuensi yang Anda inginkan untuk diperdagangkan, semakin pintar strategi menguntungkan Anda. Sebagai contoh, orang bisa melihat frekuensi spektrum yang sangat tinggi, di mana strategi pemasaran berdasarkan matematika yang sangat sederhana bisa sangat menguntungkan, jika Anda berhasil cukup dekat ke pusat pasar. Mengambil lompatan besar ke ranah frekuensi harian, menjadi jauh lebih sulit untuk menemukan strategi kuantitatif yang menguntungkan sementara masih didasarkan pada matematika yang agak sederhana. Perdagangan dalam interval mingguan dan bulanan, dengan menggunakan metode kuantitatif sederhana atau indikator teknis hanya merupakan resep bencana yang sangat bagus. Jadi, dengan asumsi sejenak hubungan ini memang benar dan juga mengingat bahwa kita dapat dan ingin menggunakan teknik pembelajaran mesin yang canggih dalam strategi trading kita, kita dapat memulai dengan jendela frekuensi mingguan dan berjalan menuju frekuensi yang lebih tinggi. Perdagangan mingguan tidak harus otomatis sama sekali dan bisa dilakukan dari antarmuka pialang berbasis web. Kita bisa mengembangkan sekumpulan strategi, menggunakan data historis yang tersedia untuk umum dikombinasikan dengan algoritma pembelajaran favorit kita untuk menemukan pola pasar yang dapat diperdagangkan dan kemudian menjalankan strategi secara manual. Pada skala ini, semua upaya harus dilakukan untuk menemukan dan menyempurnakan strategi kuantitatif dan pemikiran yang sangat kecil perlu dimasukkan ke dalam eksekusi perdagangan. Upaya otomasi perdagangan: 0. Strategi yang dibutuhkan cerdas: 100 Perdagangan harian harus otomatis, kecuali Anda benar-benar dapat mendedikasikan porsi tetap hari Anda untuk memantau pasar dan mengeksekusi perdagangan. Mengintegrasikan algoritma pembelajaran mesin dengan perdagangan harian otomatis bukanlah tugas sepele, namun bisa dilakukan. Upaya otomasi perdagangan: 20, Kebutuhan kecerdasan strategi: 80 Pada rentang waktu intraday, mulai dari menit dan detik sampai sub-detik, usaha yang harus Anda lakukan untuk mengotomatisasi perdagangan Anda dapat berada di manapun dalam kisaran antara 20 dan 90. Untungnya semakin kecil Skala waktu menjadi bodoh strategi Anda, tapi bisu tentu saja merupakan konsep relatif di sini. Upaya otomasi perdagangan: 80, dibutuhkan kecerdasan Strategi: 20 Fitur apa yang digunakan. Hand-crafted vs. pelajari 10 Desember 2013 Pada satu titik dalam perancangan sistem pembelajaran (mesin), Anda pasti akan bertanya kepada diri sendiri fitur apa yang akan dimasukkan ke model Anda. Setidaknya ada dua pilihan. Yang pertama adalah menggunakan fitur hand-crafted. Pilihan ini biasanya akan memberi Anda hasil yang bagus jika fitur dirancang dengan baik (tentu saja ini adalah tautologi, karena Anda hanya akan menyebutnya dirancang dengan baik jika memberi hasil yang bagus.). Merancang fitur buatan tangan memerlukan pengetahuan ahli tentang bidang dimana sistem pembelajaran akan diterapkan, yaitu klasifikasi audio, pengenalan gambar atau dalam kasus kami. Masalahnya di sini adalah Anda mungkin belum memiliki pengetahuan ahli tersebut (dan) dan akan sangat sulit didapat atau membutuhkan banyak waktu atau kemungkinan besar keduanya. Jadi alternatifnya adalah dengan mempelajari fitur dari data atau dengan kata lain, gunakan pembelajaran tanpa pengawasan untuk mendapatkannya. Satu persyaratan di sini adalah Anda benar-benar membutuhkan banyak data. Jauh lebih banyak dari yang Anda butuhkan untuk fitur buatan tangan, tapi sekali lagi itu tidak perlu diberi label. Namun manfaatnya jelas. Anda tidak perlu menjadi ahli dalam bidang spesifik yang Anda desain untuk sistem, yaitu perdagangan dan keuangan. Jadi, sementara Anda masih perlu mencari tahu bagian mana dari fitur terpelajar yang terbaik untuk sistem pembelajaran Anda, itu juga merupakan sesuatu yang harus Anda lakukan dengan fitur buatan tangan. Saran saya: Cobalah merancang beberapa fitur buatan tangan sendiri. Jika mereka tidak melakukan dan Anda memiliki alasan bagus untuk percaya bahwa kemungkinan menghasilkan lebih baik daripada hasil yang Anda dapatkan, gunakan metode pembelajaran tanpa pengawasan untuk mempelajari fitur. Anda bahkan bisa membuat sistem hibrida yang menggunakan fitur yang dirancang dan dipelajari bersama. Mengapa saya menggunakan alat Open Source untuk membangun aplikasi perdagangan 19 November 2013 Ketika saya pertama kali mulai melakukan trading otomatis saya sendiri, saya memiliki tiga persyaratan mengenai seperangkat alat yang ingin saya gunakan. 1) Mereka harus biaya sesedikit mungkin untuk memulai, bahkan jika itu berarti saya harus melakukan banyak pemrograman dan penyesuaian sendiri (akan memakan waktu) 2) Harus ada komunitas orang yang berpikiran sama di luar sana. Menggunakan alat yang sama untuk tujuan yang sama. 3) Alat harus memungkinkan saya masuk sedalam isi perut dari sistem seperlunya, bahkan jika pada awalnya, tujuan saya lebih banyak untuk menemukan dasar-dasarnya. Saya tidak ingin menemukan diri saya dalam situasi di mana dua tahun ke depan saya perlu beralih ke perangkat yang berbeda, hanya karena yang telah saya mulai dengan tidak mengizinkan saya melakukan apa yang saya inginkan karena masalah dengan Sumber tertutup dan lisensi yang membatasi. Akibatnya, saya memilih R sebagai bahasa pilihan untuk mengembangkan algortihms dan mulai menggunakan Interactive Brokers karena mereka menyediakan API untuk berinteraksi dengan sistem broker mereka. Meskipun ada banyak alat perdagangan bagus yang terhubung ke IB Trader Workstation dan beberapa dapat digunakan untuk perdagangan otomatis, semua ini menawarkan kekuatan, fleksibilitas dan dukungan masyarakat yang sama dengan yang dimiliki proyek R. Selain itu, R telah benar-benar merupakan gudang yang menakjubkan dari paket pembelajaran statistik dan mesin gratis dan sangat adavanced, sesuatu yang penting jika Anda ingin membuat algoritme perdagangan. Censi Cipta Censix 2013 - 2015Better Strategi 5: Sistem Pembelajaran Mesin Jangka Pendek Saat ini untuk bagian kelima dan terakhir dari seri Build Better Strategies. Pada bagian 3 kita membahas proses pengembangan sistem berbasis model, dan oleh karena itu kita akan menyimpulkan rangkaian ini dengan mengembangkan sistem data mining. Prinsip-prinsip data mining dan pembelajaran mesin telah menjadi topik bagian 4. Untuk contoh perdagangan singkat kita, kita akan menggunakan algoritma pembelajaran yang mendalam. Sebuah autoencoder ditumpuk, tapi akan bekerja dengan cara yang sama dengan banyak algoritma pembelajaran mesin lainnya. Dengan perangkat lunak saat ini, hanya sekitar 20 baris kode yang dibutuhkan untuk strategi pembelajaran mesin. Saya akan mencoba menjelaskan semua langkah secara rinci. Contoh kami akan menjadi proyek penelitian 8211 sebuah percobaan pembelajaran mesin untuk menjawab dua pertanyaan. Apakah algoritma yang lebih kompleks 8211 seperti, lebih banyak neuron dan pembelajaran yang lebih dalam 8211 menghasilkan prediksi yang lebih baik Dan pergerakan harga jangka pendek dapat diprediksi berdasarkan sejarah harga jangka pendek Pertanyaan terakhir muncul karena skeptisisme saya tentang perdagangan aksi harga di bagian sebelumnya. Dari seri ini Saya mendapat beberapa email yang menanyakan tentang generator sistem 8220trading8221 atau alat tindakan harga serupa yang dipuji di beberapa situs web. Tidak ada bukti kuat bahwa alat semacam itu menghasilkan keuntungan (kecuali untuk vendor mereka) 8211 tetapi apakah ini berarti bahwa mereka semua adalah sampah yang akan kita lihat. Percobaan kami sederhana: Kami mengumpulkan informasi dari lilin terakhir dari kurva harga, memberi umpan ke jaring pembelajaran yang mendalam, dan menggunakannya untuk memprediksi lilin berikutnya. Hipotesis saya adalah bahwa beberapa lilin tidak mengandung informasi prediktif yang berguna. Tentu saja, hasil eksperimen yang tidak terduga itu berarti bahwa I8217m benar, karena saya bisa menggunakan parameter yang salah atau menyiapkan data dengan buruk. Tapi hasil prediksi akan menjadi petunjuk bahwa I8217m salah dan perdagangan aksi harga memang bisa menguntungkan. Pengembangan strategi pembelajaran mesin Langkah 1: Variabel target Untuk rekap bagian sebelumnya. Algoritma pembelajaran yang diawasi dilatih dengan seperangkat fitur untuk memprediksi variabel target. Jadi hal pertama yang harus ditentukan adalah variabel target ini. Target populer, yang digunakan di kebanyakan surat kabar, adalah tanda kembalinya harga di bar berikutnya. Lebih cocok untuk prediksi, karena kurang rentan terhadap keacakan, adalah perbedaan harga ke cakrawala prediksi yang lebih jauh. Seperti 3 bar dari sekarang, atau hari yang sama minggu depan. Seperti hampir semua hal dalam sistem perdagangan, cakrawala prediksi adalah kompromi antara efek keacakan (kurang banyak bar lebih buruk) dan prediktabilitas (kurang banyak batang lebih baik). Kadang-kadang Anda tidak tertarik untuk secara langsung memprediksi harga, tapi dalam memprediksi beberapa parameter lain 8211 seperti kaki saat ini dari indikator Zigzag 8211 yang bisa ditentukan hanya di belakang. Atau Anda ingin tahu apakah inefisiensi pasar tertentu akan hadir di lain waktu, terutama saat Anda menggunakan mesin belajar tidak secara langsung untuk trading, tapi untuk menyaring perdagangan dalam sistem berbasis model. Atau Anda ingin meramalkan sesuatu yang sama sekali berbeda, misalnya probabilitas terjadinya jatuhnya pasar besok. Semua ini seringkali lebih mudah diprediksi daripada kembalinya yang populer besok. Dalam percobaan harga kami, kami akan menggunakan kembalinya perdagangan aksi harga jangka pendek sebagai variabel target. Setelah target ditentukan, langkah selanjutnya adalah memilih fitur. Langkah 2: Fitur Kurva harga adalah kasus terburuk untuk algoritma pembelajaran mesin. Tidak hanya membawa sedikit sinyal dan kebanyakan kebisingan. Hal ini juga nonstasioner dan rasio signalnoise berubah setiap saat. Rasio yang tepat dari sinyal dan noise tergantung pada apa yang dimaksud dengan 8220signal8221, namun biasanya terlalu rendah untuk algoritma pembelajaran mesin yang diketahui untuk menghasilkan sesuatu yang berguna. Jadi kita harus mendapatkan fitur dari kurva harga yang mengandung lebih banyak sinyal dan sedikit noise. Sinyal, dalam konteks itu, adalah informasi apapun yang bisa digunakan untuk memprediksi target, apapun itu. Sisanya adalah kebisingan. Dengan demikian, memilih fitur sangat penting untuk kesuksesan 8211 jauh lebih penting daripada menentukan algoritma pembelajaran mesin yang akan Anda gunakan. Ada dua pendekatan untuk memilih fitur. Yang pertama dan paling umum adalah mengeluarkan sebanyak mungkin informasi dari kurva harga. Karena Anda tidak tahu di mana informasi disembunyikan, Anda hanya menghasilkan kumpulan indikator liar dengan berbagai parameter, dan berharap setidaknya beberapa dari mereka akan berisi informasi yang dibutuhkan oleh algoritme. Inilah pendekatan yang biasanya Anda temukan dalam literatur. Masalah metode ini: Setiap algoritma pembelajaran mesin mudah dibingungkan oleh prediktor yang tidak terduga. Jadi, hal itu tidak bisa dilakukan hanya dengan membuang 150 indikator padanya. Anda memerlukan beberapa algoritma preseleksi yang menentukan mana yang membawa informasi bermanfaat dan yang dapat diabaikan. Tanpa mengurangi fitur seperti ini sampai delapan atau sepuluh, bahkan algoritma pembelajaran terdalam pun tidak menghasilkan sesuatu yang berguna. Pendekatan lain, biasanya untuk eksperimen dan penelitian, hanya menggunakan informasi terbatas dari kurva harga. Inilah yang terjadi di sini: Karena kita ingin memeriksa perdagangan tindakan harga, kita hanya menggunakan beberapa harga terakhir sebagai masukan, dan harus membuang semua kurva lainnya. Ini memiliki keuntungan bahwa kita tidak memerlukan algoritma preseleksi karena jumlah fitur terbatas. Berikut adalah dua fungsi prediktor sederhana yang kami gunakan dalam percobaan kami (di C): Kedua fungsi tersebut seharusnya membawa informasi yang diperlukan untuk tindakan harga: pergerakan per-bar dan volatilitas. Fungsi perubahan adalah selisih harga saat ini dengan harga n bar sebelumnya, sehubungan dengan harga saat ini. Fungsi jangkauan adalah jarak tinggi rendah dari lilin n terakhir, juga terkait dengan harga saat ini. Dan pusat fungsi skala dan kompres nilai ke -100 rentang, jadi kita membagi mereka dengan 100 untuk mendapatkan mereka dinormalisasi ke -1. Kita ingat bahwa normalisasi diperlukan untuk algoritma pembelajaran mesin. Langkah 3: Preselectingpreprocessing predictors Bila Anda telah memilih sejumlah besar indikator atau sinyal lainnya sebagai fitur untuk algoritma Anda, Anda harus menentukan mana yang berguna dan mana yang tidak. Ada banyak metode untuk mengurangi jumlah fitur, misalnya: Tentukan korelasi antara sinyal. Hapus mereka yang memiliki korelasi kuat dengan sinyal lain, karena mereka tidak berkontribusi terhadap informasi tersebut. Bandingkan isi informasi dari sinyal secara langsung, dengan algoritma seperti information entropy atau decision trees. Tentukan isi informasi secara tidak langsung dengan membandingkan sinyal dengan sinyal acak ada beberapa piranti lunak untuk ini, seperti paket R Boruta. Gunakan algoritma seperti Principal Components Analysis (PCA) untuk menghasilkan sinyal baru dengan dimensi yang dikurangi. Gunakan optimasi genetik untuk menentukan sinyal yang paling penting hanya dengan hasil yang paling menguntungkan dari proses prediksi. Bagus untuk pemasangan kurva jika Anda ingin mempublikasikan hasil yang mengesankan di kertas penelitian. Untuk percobaan kami, kami tidak perlu menentukan atau memperbaiki fitur, namun Anda dapat menemukan informasi bermanfaat tentang hal ini di artikel (1), (2), dan (3) tercantum di bagian akhir halaman. Langkah 4: Pilih algoritma pembelajaran mesin R yang menawarkan banyak paket ML yang berbeda, dan salah satu dari mereka menawarkan banyak algoritma yang berbeda dengan berbagai parameter. Bahkan jika Anda sudah memutuskan tentang metode 8211 di sini, belajar dengan mendalam 8211 Anda masih memiliki pilihan di antara pendekatan yang berbeda dan paket R yang berbeda. Sebagian besar cukup baru, dan Anda tidak dapat menemukan banyak informasi empiris yang membantu keputusan Anda. Anda harus mencoba semuanya dan mendapatkan pengalaman dengan metode yang berbeda. Untuk percobaan kami, kami memilih paket Deepnet, yang mungkin paling sederhana dan paling mudah untuk menggunakan perpustakaan pembelajaran yang dalam. Ini membuat kode kita pendek. Kami menggunakan algoritma Stacked Autoencoder (SAE) untuk pra-pelatihan jaringan. Deepnet juga menawarkan Boltzmann Restricted Machine (RBM) untuk pra-pelatihan, namun saya tidak dapat memperoleh hasil yang baik darinya. Ada paket pembelajaran mendalam dan rumit lainnya untuk R, sehingga Anda bisa menghabiskan banyak waktu untuk memeriksa semuanya. Cara kerja pra-pelatihan mudah dijelaskan, tapi mengapa kerjanya adalah masalah yang berbeda. Mengenai pengetahuan saya, belum ada yang menemukan bukti matematis yang solid bahwa semuanya bekerja sama sekali. Pokoknya, bayangkan jaring saraf besar dengan banyak lapisan tersembunyi: Latih jaring berarti mengatur bobot hubungan antara neuron. Metode yang biasa adalah error backpropagation. Tapi ternyata lapisan yang lebih tersembunyi yang Anda miliki, semakin buruk kerjanya. Istilah error backpropagated semakin kecil dan lebih kecil dari layer ke layer, menyebabkan lapisan pertama net hampir tidak belajar. Yang berarti bahwa hasil prediksi menjadi semakin bergantung pada keadaan awal acak dari bobot. Hal ini sangat membatasi kompleksitas jaring berbasis layer dan oleh karena itu tugas yang bisa mereka selesaikan. Setidaknya sampai 10 tahun yang lalu. Pada tahun 2006, para ilmuwan di Toronto pertama kali menerbitkan gagasan untuk melatih bobot dengan algoritma pembelajaran tanpa pengawasan, sebuah mesin Boltzmann yang dibatasi. Ini ternyata konsep revolusioner. Ini mendorong pengembangan kecerdasan buatan dan memungkinkan semua jenis aplikasi baru dari mesin Go-playing ke mobil yang mengemudikan sendiri. Dalam kasus autoencoder ditumpuk, ia bekerja seperti ini: Pilih lapisan tersembunyi untuk dilatih dimulai dengan lapisan tersembunyi pertama. Hubungkan outputnya ke lapisan keluaran sementara yang memiliki struktur yang sama dengan lapisan masukan network8217. Umpanlah jaringan dengan sampel pelatihan, tapi tanpa target. Latihlah itu sehingga lapisan tersembunyi pertama mereproduksi sinyal masukan 8211 pada fitur 8211 pada keluarannya sesedikit mungkin. Sisa jaringan diabaikan. Selama latihan, gunakan batas rata-rata 8216weight sehingga diperlukan sedikit bobot koneksi untuk mereproduksi sinyal. Sekarang beri umpan output dari lapisan tersembunyi yang dilatih ke masukan lapisan tersembunyi yang tidak terlatih berikutnya, dan ulangi proses pelatihan sehingga sinyal input sekarang direproduksi pada keluaran lapisan berikutnya. Ulangi proses ini sampai semua lapisan tersembunyi dilatih. Kita sekarang memiliki jaringan yang sangat luas dengan koneksi lapisan sangat sedikit yang dapat mereproduksi sinyal masukan. Sekarang latih jaringan dengan backpropagation untuk mempelajari variabel target, dengan menggunakan bobot pra-terlatih dari lapisan tersembunyi sebagai titik awal. Harapannya adalah bahwa proses pra-pelatihan tanpa pengawasan menghasilkan abstraksi suara yang mengurangi suara dari sinyal input yang kemudian dapat digunakan untuk mempermudah pembelajaran sasaran. Dan ini memang tampak berhasil. Tidak ada yang tahu kenapa, tapi beberapa teori 8211 lihat kertas (4) di bawah 8211 mencoba menjelaskan fenomena itu. Langkah 5: Buat kumpulan data uji Pertama kita perlu membuat kumpulan data dengan fitur dan target sehingga kita dapat menguji proses prediksi dan mencoba parameter. Fitur harus didasarkan pada data harga yang sama seperti pada live trading, dan untuk target kita harus mensimulasikan perdagangan jangka pendek. Jadi masuk akal untuk menghasilkan data bukan dengan R, tapi dengan platform trading kita, yang jauh lebih cepat. Ini adalah skrip Zorro kecil untuk ini, DeepSignals. c: We8217 menghasilkan data 2 tahun dengan fitur yang dihitung oleh fungsi perubahan dan jangkauan yang didefinisikan di atas. Target kami adalah kembalinya perdagangan dengan 3 bar waktu hidup. Biaya perdagangan ditetapkan menjadi nol, jadi dalam hal ini pengembaliannya setara dengan selisih harga di 3 bar di masa depan. Fungsi adviseLong dijelaskan dalam manual Zorro, ini adalah fungsi hebat yang secara otomatis menangani pelatihan dan memprediksi dan memungkinkan untuk menggunakan algoritma pembelajaran mesin berbasis R seperti indikatornya sederhana. Dalam kode kita, fungsi tersebut menggunakan return perdagangan berikutnya sebagai target, dan perubahan harga dan rentang dari 4 bar terakhir sebagai fitur. Flag SIGNALS mengatakan tidak untuk melatih data, tapi untuk mengekspornya ke file. csv. Flag BALANCED memastikan bahwa kita mendapatkan sebanyak positif sebagai hasil negatif ini penting untuk kebanyakan algoritma pembelajaran mesin. Jalankan skrip dalam mode Kereta dengan aset uji biasa EURUSD yang kami pilih. Ini menghasilkan file spreadsheet bernama DeepSignalsEURUSDL. csv yang berisi fitur di 8 kolom pertama, dan hasil perdagangan di kolom terakhir. Langkah 6: Kalibrasikan algoritma Algoritma pembelajaran mesin yang kompleks memiliki banyak parameter untuk disesuaikan. Beberapa dari mereka menawarkan peluang bagus untuk melengkungkan kurva algoritma untuk publikasi. Namun, kita harus mengkalibrasi parameter karena algoritma ini jarang bekerja dengan baik dengan pengaturan defaultnya. Untuk ini, ini adalah skrip R yang membaca kumpulan data yang sebelumnya dibuat dan memprosesnya dengan algoritma pembelajaran mendalam (DeepSignal. r): We8217ve mendefinisikan tiga fungsi neural. train. Neural. predict. Dan neural. init untuk pelatihan, prediksi, dan inisialisasi jaring saraf. Nama fungsi tidak sembarangan, tapi ikuti konvensi yang digunakan oleh Zorro8217s advise (NEURAL.) Function. Ini tidak masalah sekarang, tapi akan menjadi masalah nanti saat kita menggunakan skrip R yang sama untuk melatih dan memperdagangkan strategi pembelajaran yang mendalam. Fungsi keempat, TestOOS. Digunakan untuk pengujian di luar sampel setup kami. Fungsi neural. init bibit R random generator dengan nilai tetap (365 adalah angka keberuntungan pribadi saya). Jika tidak, kita akan mendapatkan hasil yang sedikit berbeda setiap saat, karena jaring saraf diinisialisasi dengan bobot acak. Ini juga menciptakan daftar R global yang diberi nama 8220Models8221. Sebagian besar tipe variabel R yang tidak perlu diciptakan sebelumnya, ada yang (tidak bertanya mengapa saya). Operator 8216ltlt-8216 adalah untuk mengakses variabel global dari dalam suatu fungsi. Fungsi neural. train mengambil sebagai masukan nomor model dan kumpulan data yang akan dilatih. Nomor model mengidentifikasi model terlatih dalam daftar 8221 Model 8221. Daftar tidak benar-benar dibutuhkan untuk tes ini, tapi kami memerlukan strategi yang lebih kompleks yang melatih lebih dari satu model. Matriks yang berisi fitur dan target dilewatkan ke fungsi sebagai parameter kedua. Jika data XY bukan matriks yang tepat, yang sering terjadi pada R tergantung pada bagaimana Anda menghasilkannya, maka data akan dikonversi menjadi satu. Kemudian dipecah menjadi fitur (X) dan target (Y), dan akhirnya target dikonversi menjadi 1 untuk hasil perdagangan positif dan 0 untuk hasil negatif. Parameter jaringan kemudian disiapkan. Ada yang jelas, ada yang bebas bermain dengan: Struktur jaringan diberikan oleh vektor tersembunyi: c (50,100,50) mendefinisikan 3 lapisan tersembunyi, yang pertama dengan 50, kedua dengan 100, dan ketiga dengan 50 neuron. Itu adalah parameter yang kemudian kita modifikasi untuk menentukan apakah lebih dalam lebih baik. Fungsi aktivasi mengubah jumlah nilai input neuron ke keluaran neuron yang paling sering digunakan adalah sigmoid yang memenuhi 0 atau 1, atau tanh yang jenuh menjadi -1 atau 1. Kita menggunakan tanh disini karena sinyal kita juga berada dalam kisaran -1 . Output dari jaringan adalah fungsi sigmoid karena kita menginginkan sebuah prediksi dalam kisaran 0..1. Tapi output SAE harus 8220linear8221 sehingga Autostoder Stacked dapat mereproduksi sinyal input analog pada keluaran. Tingkat belajar mengendalikan ukuran langkah untuk penurunan gradien dalam latihan dengan tingkat yang lebih rendah berarti langkah yang lebih baik dan prediksi yang lebih tepat, namun waktu latihan lebih lama. Momentum menambahkan sebagian kecil dari langkah sebelumnya ke langkah yang sekarang. Ini mencegah turunnya gradien dari terjebak pada titik minimum lokal atau titik pelana. Skala tingkat belajar adalah faktor perkalian untuk mengubah tingkat belajar setelah setiap iterasi (saya tidak yakin dengan apa ini bagus, tapi mungkin ada tugas di mana tingkat belajar yang lebih rendah pada periode yang lebih tinggi meningkatkan latihan). Epoch adalah iterasi pelatihan untuk keseluruhan kumpulan data. Pelatihan akan berhenti begitu jumlah epoch tercapai. Epoch lebih berarti prediksi yang lebih baik, tapi latihan lebih lama. Ukuran batch adalah sejumlah sampel acak 8211 sebuah batch mini 8211 yang diambil dari kumpulan data untuk satu latihan lari. Memisahkan data menjadi batch mini mempercepat latihan karena gradien berat kemudian dihitung dari sampel yang lebih sedikit. Semakin tinggi ukuran bets, semakin baik latihannya, tapi semakin banyak waktu yang dibutuhkan. Jumlah putus sekolah adalah sejumlah neuron yang dipilih secara acak yang dinonaktifkan selama batch mini. Dengan cara ini jaring hanya belajar dengan bagian neuronnya. Ini sepertinya ide yang aneh, tapi bisa secara efektif mengurangi overfitting. Semua parameter ini umum untuk jaringan syaraf tiruan. Bermain-main dengan mereka dan memeriksa pengaruhnya terhadap hasilnya dan waktu pelatihan. Mengkalibrasi jaring saraf dengan benar tidak sepele dan mungkin topik artikel lain. Parameter disimpan dalam model bersama dengan matriks bobot koneksi yang terlatih. Jadi mereka tidak perlu lagi diberikan fungsi prediksi, neural. predict. Dibutuhkan model dan vektor X dari fitur, menjalankannya melalui lapisan, dan mengembalikan output jaringan, target Y yang diprediksi. Dibandingkan dengan latihan, prediksi cukup cepat karena hanya membutuhkan beberapa ribu perbanyakan. Jika X adalah vektor baris, ia ditransisikan dan dengan cara ini dikonversi ke vektor kolom, jika tidak, fungsi nn. predict tidak akan menerimanya. Gunakan RStudio atau lingkungan yang serupa agar mudah bekerja dengan R. Edit jalur ke data. csv di file di atas, sumber, pasang paket R yang diperlukan (deepnet, e1071, dan caret), lalu panggil fungsi TestOOS dari perintah garis. Jika semuanya berhasil, itu harus mencetak sesuatu seperti itu: TestOOS pertama-tama membaca data kami dari folder Data Zorro8217s. Ini membagi data dalam 80 untuk pelatihan (XY. tr) dan 20 untuk pengujian di luar sampel (XY. ts). Set pelatihan dilatih dan hasilnya disimpan dalam daftar Model di indeks 1. Set tes dibagi lagi dalam fitur (X) dan target (Y). Y diubah menjadi biner 0 atau 1 dan disimpan di Y. ob. Vektor kita dari target yang diamati Kami kemudian memprediksi target dari set tes, mengkonversikannya kembali ke biner 0 atau 1 dan menyimpannya di Y. pr. Untuk membandingkan pengamatan dengan prediksi, kita menggunakan fungsi confusionMatrix dari paket caret. Matriks kebingungan dari classifier biner hanyalah sebuah matriks 22152 yang menunjukkan berapa banyak 08217 dan berapa 18217 yang telah diprediksi salah dan benar. Banyak metrik berasal dari matriks dan dicetak sesuai garis di atas. Yang paling penting saat ini adalah keakuratan prediksi 62. Ini mungkin mengisyaratkan bahwa saya melakukan aksi jual harga sedikit sebelum waktunya. Tapi tentu saja itu mungkin hanya keberuntungan. Kita akan melihatnya nanti saat kita menjalankan tes WFO. Saran terakhir: Paket R kadang-kadang diperbarui, dengan kemungkinan konsekuensi bahwa kode R sebelumnya tiba-tiba mungkin bekerja secara berbeda, atau tidak sama sekali. Ini benar-benar terjadi, jadi tes hati-hati setelah ada update. Langkah 7: Strategi Sekarang kita menguji algoritma kita dan mendapatkan beberapa ketepatan prediksi di atas 50 dengan kumpulan data tes, akhirnya kita dapat kode strategi pembelajaran komputer kita. Sebenarnya kita sudah mengkodekan sebagian besar, kita hanya perlu menambahkan beberapa baris pada skrip Zorro di atas yang mengekspor kumpulan data. Ini adalah skrip akhir untuk pelatihan, pengujian, dan (secara teoritis) memperdagangkan sistem (DeepLearn. c): Kami menggunakan siklus WFO selama satu tahun, terbagi dalam 90 pelatihan dan 10 uji coba di luar sampel. Anda mungkin bertanya mengapa saya sebelumnya menggunakan dua data tahun 2000 dan split yang berbeda, 8020, untuk mengkalibrasi jaringan pada langkah 5. Ini untuk menggunakan data yang disusun secara berbeda untuk kalibrasi dan pengujian berjalan ke depan. Jika kami menggunakan data yang sama persis, kalibrasi mungkin terlalu banyak dan kompromi tes. Parameter WFO yang dipilih berarti sistem dilatih dengan data sekitar 225 hari, diikuti dengan uji coba 25 hari atau periode perdagangan tanpa pelatihan. Dalam literatur Anda kadang-kadang menemukan rekomendasi untuk melatih sistem pembelajaran mesin setelah melakukan perdagangan, atau setidaknya setiap hari. Tapi ini tidak masuk akal bagiku. Bila Anda menggunakan hampir 1 year8217s data untuk pelatihan sistem, jelas tidak akan memburuk setelah satu hari. Atau jika itu terjadi, dan hanya menghasilkan hasil tes positif dengan latihan ulang harian, saya akan sangat curiga bahwa hasilnya adalah artefak oleh beberapa kesalahan pengkodean. Pelatihan jaringan dalam membutuhkan waktu yang sangat lama, dalam kasus kami sekitar 10 menit untuk jaringan dengan 3 lapisan tersembunyi dan 200 neuron. Karena ini diulang pada siklus WFO, menggunakan banyak core dianjurkan untuk melatih banyak siklus secara paralel. Variabel NumCores pada -1 mengaktifkan semua core CPU tapi satu. Beberapa core hanya tersedia di Zorro S, jadi uji coba berjalan lengkap dengan semua siklus WFO dapat memakan waktu beberapa jam dengan versi gratisan. Dalam naskah kita sekarang melatih baik perdagangan panjang maupun pendek. Untuk ini kita harus membiarkan hedging dalam mode Training, karena posisi long dan short terbuka pada saat bersamaan. Memasuki posisi sekarang tergantung pada nilai pengembalian dari fungsi saran, yang pada gilirannya memanggil fungsi neural. train atau neural. predict dari skrip R. Jadi kita memasuki posisi saat jaring saraf memprediksi hasil di atas 0,5. Skrip R sekarang dikontrol oleh skrip Zorro (untuk ini harus memiliki nama yang sama, NeuralLearn. r. hanya dengan ekstensi yang berbeda). Ini identik dengan skrip R kami di atas karena kami menggunakan parameter jaringan yang sama. Hanya satu fungsi tambahan yang diperlukan untuk mendukung tes WFO: Fungsi neural. save menyimpan daftar Model 8211 sekarang berisi 2 model untuk panjang dan untuk perdagangan singkat 8211 setelah setiap pelatihan dijalankan di folder Data Zorro8217s. Karena model disimpan untuk digunakan nanti, kita tidak perlu melatihnya lagi untuk pengujian berulang. Ini adalah kurva ekuitas WFO yang dihasilkan dengan skrip di atas (EURUSD, tanpa biaya perdagangan): Meskipun tidak semua siklus WFO mendapatkan hasil yang positif, nampaknya ada beberapa efek prediktif. Kurva setara dengan return tahunan 89, dicapai dengan struktur lapisan tersembunyi 50-100-50. Kami akan memeriksa langkah selanjutnya bagaimana struktur jaringan yang berbeda mempengaruhi hasilnya. Sejak neural. init. Neural. train Neural. predict. Dan fungsi neural. save secara otomatis dipanggil oleh Zorro8217s adviseLongadviseShort functions, tidak ada fungsi R yang langsung dipanggil dalam skrip Zorro. Dengan demikian skripnya bisa tetap tidak berubah saat menggunakan metode pembelajaran mesin yang berbeda. Hanya naskah DeepLearn. r yang harus dimodifikasi dan jaring saraf, misalnya, diganti oleh mesin vektor pendukung. Untuk memperdagangkan sistem pembelajaran mesin seperti itu tinggal di VPS, pastikan bahwa R juga terpasang di VPS, paket R yang dibutuhkan telah terpasang, dan jalur ke terminal R yang terpasang di file Zorro8217s ini. Jika tidak, Anda akan mendapatkan pesan kesalahan saat memulai strategi. Langkah 8: Percobaan Jika tujuan kita mengembangkan strategi, langkah selanjutnya adalah pengecekan realitas, pengelolaan risiko dan uang, dan mempersiapkan perdagangan langsung seperti yang dijelaskan dalam pengembangan strategi berbasis model. Tapi untuk eksperimen kami sekarang kita bisa menjalankan serangkaian tes, dengan jumlah neuron per lapisan meningkat dari 10 menjadi 100 dalam 3 langkah, dan 1, 2, atau 3 lapisan tersembunyi (deepnet tidak mendukung lebih dari 3). Jadi kita melihat ke dalam 9 struktur jaringan berikut: c (10), c (10,10), c (10,10,10), c (30), c (30,30), c (30,30,30 ), C (100), c (100, 100), c (100, 100, 100). Untuk percobaan ini Anda membutuhkan sore hari bahkan dengan PC yang cepat dan dalam mode beberapa inti. Berikut adalah hasilnya (SR Sharpe ratio, linieritas linier R2): Kami melihat bahwa jaring sederhana dengan hanya 10 neuron dalam satu lapisan tersembunyi tidak akan bekerja dengan baik untuk prediksi jangka pendek. Kompleksitas jaringan jelas meningkatkan kinerja, namun hanya sampai titik tertentu. Hasil yang baik untuk sistem kita sudah tercapai dengan 3 lapisan x 30 neuron. Bahkan lebih banyak neuron yang tidak banyak membantu dan terkadang malah menghasilkan hasil yang lebih buruk. Ini tidak mengherankan, karena untuk memproses hanya 8 input, 300 neuron kemungkinan besar tidak dapat melakukan pekerjaan yang lebih baik daripada 100. Kesimpulan Tujuan kami adalah menentukan apakah beberapa lilin dapat memiliki daya prediktif dan bagaimana hasilnya dipengaruhi oleh kompleksitas algoritma. . Hasilnya nampaknya menunjukkan bahwa pergerakan harga jangka pendek memang bisa diprediksi kadaluarsa dengan menganalisa perubahan dan rentang dari 4 candle terakhir. Prediksinya tidak begitu akurat dalam rentang 58,60, dan sebagian besar sistem dari seri uji menjadi tidak menguntungkan saat biaya perdagangan disertakan. Namun, saya harus mempertimbangkan kembali pendapat saya tentang perdagangan tindakan harga. Fakta bahwa prediksi tersebut meningkat dengan kompleksitas jaringan adalah argumen yang sangat meyakinkan untuk prediksi harga jangka pendek. Akan menarik untuk melihat stabilitas jangka panjang dari pola harga prediktif. Untuk ini kami harus menjalankan serangkaian eksperimen lainnya dan memodifikasi periode pelatihan (WFOPeriod dalam naskah di atas) dan perpecahan ISO ISO 90. Ini membutuhkan waktu lebih lama karena kita harus menggunakan lebih banyak data historis. Saya telah melakukan beberapa tes dan menemukan sejauh ini bahwa tahun nampaknya memang merupakan masa latihan yang baik. Sistem memburuk dengan periode yang lebih lama dari beberapa tahun. Pola harga prediktif, setidaknya EURUSD, memiliki masa pakai terbatas. Ke mana kita bisa pergi dari sini Ada banyak kemungkinan, misalnya: Gunakan masukan dari lebih banyak lilin dan mengolahnya dengan jaringan yang jauh lebih besar dengan ribuan neuron. Gunakan oversampling untuk memperluas data pelatihan. Prediksi selalu membaik dengan lebih banyak sampel pelatihan. Compress time series f. i. Dengan analisis spektral dan menganalisa bukan lilin, namun representasi frekuensi mereka dengan metode pembelajaran mesin. Gunakan masukan dari banyak lilin 8211 seperti, 100 8211 dan lilin proses pra-proses dengan lapisan jaringan convolutional satu dimensi. Gunakan jaringan rekuren. Terutama LSTM bisa sangat menarik untuk menganalisis deret waktu 8211 dan sepengetahuan saya, jarang sekali mereka digunakan untuk prediksi keuangan sejauh ini. Gunakan ansambel jaringan syaraf tiruan untuk prediksi, seperti Aronson8217s 8220oracles8221 dan 8220comitees8221. Makalah Artikel I8217 menambahkan skrip C dan R ke repositori skrip 2016. Anda memerlukan keduanya di folder Strategi Zorro8217s. Zorro versi 1.474, dan versi R 3.2.5 (64 bit) digunakan untuk percobaan, namun juga harus bekerja dengan versi lain. Hasil di bawah dihasilkan oleh versi revisi perubahan hanya DeepSignals. r 8211 adalah penggunaan jaring LSTM dari paket rnn pada CRAN. Penulis paket menganggap implementasi LSTM mereka sebagai 8220experimental8221 dan tidak merasa itu belum dipelajari dengan benar, jadi mudah-mudahan lebih banyak perbaikan untuk datang ke sana. (Spent ages trying to accomplish the LSTM element using the mxnet package but gave up as couldn8217t figure out the correct input format when using multiple training features.) Will post results of full WFO when I have finished LSTM version of DeepLearn. r Confusion Matrix and Statistics Reference Prediction 0 1 0 1641 1167 1 1225 1701 Accuracy. 0.5828 95 CI. (0.5699, 0.5956) No Information Rate. 0.5002 P-Value Acc gt NIR. lt2e-16 Kappa. 0.1657 Mcnemar039s Test P-Value. 0.2438 Sensitivity. 0.5726 Specificity. 0.5931 Pos Pred Value. 0.5844 Neg Pred Value. 0.5813 Prevalence. 0.4998 Detection Rate. 0.2862 Detection Prevalence. 0.4897 Balanced Accuracy. 0.5828 039Positive039 Class. 0 Results of WFO test below. Again, only change to original files was the use of LSTM in R, rather than DNNSAE. Walk-Forward Test DeepLearnLSTMV4 EURUSD Simulated account AssetsFix Bar period 1 hour (avg 87 min) Simulation period 15.05.2014-07.06.2016 (12486 bars) Test period 04.05.2015-07.06.2016 (6649 bars) Lookback period 100 bars (4 days) WFO test cycles 11 x 604 bars (5 weeks) Training cycles 12 x 5439 bars (46 weeks) Monte Carlo cycles 200 Assumed slippage 0.0 sec Spread 0.0 pips (roll 0.000.00) Contracts per lot 1000.0 Gross winloss 3628 -3235 (5199p) Average profit 360year, 30month, 1.38day Max drawdown -134 34 (MAE -134 34) Total down time 95 (TAE 95) Max down time 5 weeks from Aug 2015 Max open margin 40 Max open risk 35 Trade volume 5710964 (5212652year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol Capital required 262 Number of trades 6787 (6195year, 120week, 25day) Percent winning 57.6 Max winloss 16 -14 Avg trade profit 0.06 0.8p (12.3p -14.8p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 1 (1 -2) Max trade bars 3 (3 hours) Time in market 177 Max open trades 3 Ma x loss streak 17 (uncorrelated 11) Annual return 137 Profit factor 1.12 (PRR 1.08) Sharpe ratio 1.79 Kelly criterion 2.34 R2 coefficient 0.435 Ulcer index 13.3 Prediction error 152 Confidence level AR DDMax Capital 10 143 128 252 20 129 144 278 30 117 161 306 40 107 179 336 50 101 190 355 60 92 213 392 70 85 232 425 80 77 257 466 90 64 314 559 95 53 383 675 100 42 495 859 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .219 1.12 39072880 100.0 XXX EURUSD:L .302 1.17 18301658 65.0 EURUSD:S .145 1.08 20771222 35.0 Interesting For a still experimental LSTM implementation that result looks not bad. Could you help me answering some questions I have few question below: 1.I want to test Commission mode. If I use interactive broker, I should set Commission . in normal case. 2.If I press the 8220trade8221 button, I see the log the script will use DeepLearnEURUSD. ml. So real trade it will use DeepLearnEURUSD. ml to get the model to trade And use neural. predict function to trade 3.If I use the slow computer to train the data , I should move DeepLearnEURUSD. ml to the trade computer I test the real trade on my interactive brokers and press the result button. Can I use Commission0.60 to train the neural and get the real result Thank you. Result button will show the message below: Trade Trend EURUSD Bar period 2 min (avg 2 min) Trade period 02.11.2016-02.11.2016 Spread 0.5 pips (roll -0.020.01) Commission 0.60 Contracts per lot 1000.0 Commission should be normally not set up in the script, but entered in the broker specific asset list. Otherwise you had to change the script every time when you want to test it with a different broker or account. IB has different lot sizes and commissions, so you need to add the command to the script when you want to test it for an IB account. Yes, DeepLearnEURUSD. ml is the model for live trading, and you need to copy it to the trade computer. Dear jcl Do I write assetList(AssetsIB. csv) in the right place So below code8217s result includes Commission I test the result with Commission that seems pretty good. Annual 93 3177p function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Commission Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(2),change(3),change(4), range(1),range(2),range(3),range(4)) gt 0.5) enterLong() if(adviseShort() gt 0.5) enterShort() Problem 1: I run the DeepLearn. c in the IB paper trade. The code 8220LifeTime 3 prediction horizon8221 seems to close the position that you open after 3 bars(3 hours). But I can8217t see it close the position on third bar close. I see the logs below: Closing prohibited 8211 check NFA flag EURUSD::L4202 Can8217t close 11.10995 at 09:10:51 Problem 2: In my IB paper trade, it the default order size is 1k on EURUSD. How to change the order size in paper trade Thank you very much. IB is an NFA compliant broker. You can not close trades on NFA accounts. You must set the NFA flag for opening a reverse position instead. And you must enable trading costs, otherwise including the commission has no effect. I don8217t think that you get a positive result with trading costs. Those account issues are not related to machine learning, and are better asked on the Zorro forum. Or even better, read the Zorro manual where all this is explained. Just search for 8220NFA8221. I do some experiment to change the neural8217s parameter with commission. The code is below: function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(3),change(5),change(7),change(9), range(1),range(3),range(5),range(7),range(9)) gt 0.7) enterLong() if(adviseShort() gt 0.7) enterShort() I get the result with commission that Annual Return is about 23. But I don8217t complete understand the zorro8217s setting and zorro8217s report. Terima kasih. The result: Annual 23 661p Walk-Forward Test DeepLearn EURUSD Simulated account AssetsIB. csv Bar period 1 hour (avg 86 min) Simulation period 15.05.2014-09.09.2016 (14075 bars) Test period 23.04.2015-09.09.2016 (8404 bars) Lookback period 100 bars (4 days) WFO test cycles 14 x 600 bars (5 weeks) Training cycles 15 x 5401 bars (46 weeks) Monte Carlo cycles 200 Simulation mode Realistic (slippage 0.0 sec) Spread 0.0 pips (roll 0.000.00) Commission 0.50 Contracts per lot 20000.0 Gross winloss 24331 -22685 (914p) Average profit 1190year, 99month, 4.58day Max drawdown -1871 114 (MAE -1912 116) Total down time 92 (TAE 41) Max down time 18 weeks from Dec 2015 Max open margin 2483 Max open risk 836 Trade volume 26162350 (18916130year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol, -1306 com Capital required 5239 Number of trades 1306 (945year, 19week, 4day) Percent winning 52.5 Max winloss 375 -535 Avg trade profit 1.26 0.7p (19.7p -20.3p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg tra de bars 2 (2 -3) Max trade bars 3 (3 hours) Time in market 46 Max open trades 3 Max loss streak 19 (uncorrelated 10) Annual return 23 Profit factor 1.07 (PRR 0.99) Sharpe ratio 0.56 Kelly criterion 1.39 R2 coefficient 0.000 Ulcer index 20.8 Confidence level AR DDMax Capital 10 29 1134 4153 20 27 1320 4427 30 26 1476 4656 40 24 1649 4911 50 23 1767 5085 60 22 1914 5301 70 21 2245 5789 80 19 2535 6216 90 16 3341 7403 95 15 3690 7917 100 12 4850 9625 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .256 1.07 685621 100.0 XXXXXXXXXXXX EURUSD:L .476 1.16 294278 94.5 EURUSD:S .026 1.01 391343 5.5

No comments:

Post a Comment