Friday 11 August 2017

Simple moving average example matlab


Simple Moving Average - SMA BREAKING DOWN Simple Moving Average - SMA Rata-rata bergerak sederhana dapat disesuaikan sehingga bisa dihitung untuk periode waktu yang berbeda, cukup dengan menambahkan harga penutupan keamanan untuk sejumlah periode waktu dan kemudian membagi Jumlah ini dengan jumlah periode waktu, yang memberikan harga rata-rata keamanan selama periode waktu tersebut. Rata-rata bergerak sederhana menghaluskan volatilitas, dan membuatnya lebih mudah untuk melihat tren harga suatu keamanan. Jika nilai rata-rata bergerak sederhana naik, ini berarti harga keamanan semakin meningkat. Jika mengarah ke bawah berarti harga keamanan menurun. Semakin panjang jangka waktu untuk moving average, semakin halus moving average yang sederhana. Rata-rata pergerakan jangka pendek lebih mudah berubah, namun bacaannya lebih mendekati data sumber. Signifikansi Analitis Moving averages adalah alat analisis penting yang digunakan untuk mengidentifikasi tren harga saat ini dan potensi perubahan dalam tren yang telah mapan. Bentuk paling sederhana menggunakan rata-rata pergerakan sederhana dalam analisis adalah menggunakannya untuk mengidentifikasi dengan cepat apakah keamanan dalam tren naik atau tren turun. Alat analisis lain yang populer, walaupun sedikit lebih kompleks, adalah membandingkan rata-rata bergerak sederhana dengan masing-masing yang mencakup rentang waktu yang berbeda. Jika rata-rata pergerakan sederhana jangka pendek berada di atas rata-rata jangka panjang, tren naik akan terjadi. Di sisi lain, rata-rata jangka panjang di atas rata-rata jangka pendek menandakan pergerakan ke bawah dalam tren. Pola Perdagangan Populer Dua pola perdagangan populer yang menggunakan rata-rata bergerak sederhana termasuk salib kematian dan salib emas. Salib kematian terjadi ketika rata-rata pergerakan sederhana 50 hari melintasi rata-rata pergerakan 200 hari. Ini dianggap sebagai sinyal bearish, sehingga kerugian lebih lanjut di simpan. Salib emas terjadi ketika rata-rata pergerakan jangka pendek di atas rata-rata bergerak jangka panjang. Diperkuat oleh volume perdagangan yang tinggi, hal ini dapat memberi sinyal keuntungan lebih lanjut di toko.29 September 2013 Moving average by konvolution Apa itu rata-rata bergerak dan apa gunanya Bagaimana moving averaging dilakukan dengan menggunakan konvolusi Moving average adalah operasi sederhana yang biasa digunakan untuk Menekankan suara sebuah sinyal: kita tetapkan nilai setiap titik ke rata-rata nilai di lingkungannya. Dengan rumus: Disini x adalah input dan y adalah sinyal output, sedangkan ukuran jendela adalah w, seharusnya aneh. Rumus di atas menggambarkan operasi simetris: sampel diambil dari kedua sisi titik sebenarnya. Berikut adalah contoh kehidupan nyata. Titik di mana jendela diletakkan sebenarnya berwarna merah. Nilai di luar x seharusnya nol: Untuk bermain-main dan melihat efek rata-rata bergerak, lihatlah demonstrasi interaktif ini. Cara melakukannya dengan konvolusi Seperti yang mungkin Anda ketahui, menghitung rata-rata pergerakan sederhana sama dengan konvolusi: pada kedua kasus, sebuah jendela tergelincir sepanjang sinyal dan elemen di jendela dirangkum. Jadi, cobalah untuk melakukan hal yang sama dengan menggunakan konvolusi. Gunakan parameter berikut: Output yang diinginkan adalah: Sebagai pendekatan pertama, mari kita coba apa yang kita dapatkan dengan menggabungkan sinyal x dengan kernel k berikut: Outputnya persis tiga kali lebih besar dari yang diharapkan. Bisa juga dilihat, bahwa nilai output adalah rangkuman ketiga elemen di jendela. Hal ini karena selama konvolusi jendela tergelincir, semua elemen di dalamnya dikalikan dengan satu dan kemudian diringkas: yk 1 cdot x 1 cdot x 1 cdot x Untuk mendapatkan nilai y yang diinginkan. Output harus dibagi dengan 3: Dengan rumus termasuk pembagiannya: Tapi bukankah optimal melakukan pembagian selama konvolusi Inilah ide dengan menata ulang persamaan: Jadi kita akan menggunakan kernel k berikut: Dengan cara ini kita akan Mendapatkan output yang diinginkan: Secara umum: jika kita ingin melakukan moving average dengan konvolusi yang memiliki ukuran jendela w. Kita akan menggunakan kernel k berikut: Fungsi sederhana untuk melakukan moving average adalah: Contoh penggunaan adalah: Download movAv. m (lihat juga movAv2 - versi terbaru yang memungkinkan pembobotan) Deskripsi Matlab mencakup fungsi yang disebut movavg dan tsmovavg (time-series moving Rata) di Financial Toolbox, movAv dirancang untuk mereplikasi fungsi dasar ini. Kode di sini memberikan contoh bagus untuk mengelola indeks di dalam loop, yang bisa membingungkan untuk memulai. Ive sengaja menyimpan kode pendek dan sederhana agar proses ini tetap jelas. MovAv melakukan moving average sederhana yang dapat digunakan untuk memulihkan data yang bising dalam beberapa situasi. Ia bekerja dengan mengambil rata-rata input (y) di atas jendela waktu geser, ukurannya ditentukan oleh n. Semakin besar n, semakin besar jumlah perataan efek n relatif terhadap panjang vektor masukan y. Dan efektif (baik, semacam) menciptakan filter frekuensi lowpass - lihat contoh dan bagian pertimbangan. Karena jumlah smoothing yang diberikan oleh masing-masing nilai n relatif terhadap panjang vektor input, nilai pengujiannya selalu bernilai untuk melihat yang sesuai. Ingat juga bahwa n poin hilang pada masing-masing rata-rata jika n adalah 100, 99 poin pertama dari vektor input tidak mengandung cukup data untuk rata-rata 100pt. Hal ini dapat dihindari agak oleh rata-rata susun, misalnya, kode dan grafik di bawah membandingkan sejumlah rata-rata jendela panjang yang berbeda. Perhatikan bagaimana kelancaran 1010pt dibandingkan dengan rata-rata 20pt tunggal. Dalam kedua kasus tersebut 20 titik data hilang secara total. Buat xaxis x1: 0,01: 5 Menghasilkan noise noiseReps 4 noise repmat (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) noise reshape (noise, 1, length (noise) noiseReps) Menghasilkan ydata noise yexp X) 10noise (1: length (x)) Rata-rata perfrom: y2 movAv (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt Y6 movAv (y, 100) 100 pt Plot figure plot (x, y, y2, y3, y4, y5, y6) legenda (data mentah, 10pt moving average, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel Y) judul (Perbandingan moving averages) movAv. m kode fungsi run-through output movAv (y, n) Baris pertama mendefinisikan nama fungsi, input dan output. Masukan x harus berupa vektor data untuk melakukan rata-rata, n harus jumlah titik untuk melakukan rata-rata di atas output akan berisi data rata-rata yang dikembalikan oleh fungsinya. Preallocate output outputNaN (1, numel (y)) Temukan titik tengah n ruas tengah (n2) Pekerjaan utama fungsi dilakukan untuk loop, tapi sebelum memulai dua hal disiapkan. Pertama, keluarannya adalah pra-alokasi sebagai NaN, ini melayani dua tujuan. Pertama, preallokasi pada umumnya adalah praktik yang baik karena mengurangi juggling memori yang harus dilakukan Matlab, kedua, membuatnya sangat mudah untuk menempatkan data rata-rata ke dalam output dengan ukuran yang sama dengan vektor input. Ini berarti xaxis yang sama dapat digunakan kemudian untuk keduanya, yang sesuai untuk merencanakan, sebagai alternatif NaN dapat dilepas nanti dalam satu baris kode (output output (Variabel midPoint akan digunakan untuk menyelaraskan data pada vektor output. N 10, 10 poin akan hilang karena, untuk 9 titik pertama dari vektor input, tidak ada cukup data untuk mengambil nilai rata-rata 10 poin. Karena outputnya akan lebih pendek daripada input, maka perlu diselaraskan dengan benar. Digunakan sehingga jumlah data yang sama hilang pada awal dan akhir, dan input tetap selaras dengan output oleh buffer NaN yang dibuat saat preallocating output. Untuk 1: length (y) - n Temukan kisaran indeks untuk mengambil rata-rata Over (a: b) ban Menghitung mean output (amidPoint) mean (y (a: b)) end Dalam for loop itu sendiri, mean diambil dari setiap segmen berturut-turut input. Loop akan berjalan untuk a. Didefinisikan sebagai 1 sampai dengan panjang input (y), minus data yang akan hilang (n). Jika input 100 point lo Ng dan n adalah 10, loop akan berjalan dari (a) 1 sampai 90. Ini berarti indeks pertama memberikan segmen untuk dirata-ratakan. Indeks kedua (b) hanya satu-1. Jadi pada iterasi pertama, a1. N10. Jadi b 11-1 10. Rata-rata pertama diambil alih y (a: b). Atau x (1:10). Rata-rata segmen ini, yang merupakan satu nilai tunggal, disimpan dalam output di indeks amidPoint. Atau 156. Pada iterasi kedua, a2. B 210-1 11. Jadi mean diambil alih x (2:11) dan disimpan dalam output (7). Pada iterasi terakhir dari loop untuk input dengan panjang 100, a91. B 9010-1 100 sehingga mean diambil alih x (91: 100) dan disimpan dalam output (95). Ini menghasilkan output dengan total n (10) nilai NaN pada indeks (1: 5) dan (96: 100). Contoh dan pertimbangan Moving averages berguna dalam beberapa situasi, namun tidak selalu menjadi pilihan terbaik. Inilah dua contoh dimana mereka belum tentu optimal. Kalibrasi Mikrofon Kumpulan data ini mewakili tingkat setiap frekuensi yang dihasilkan oleh speaker dan dicatat oleh mikrofon dengan respons linier yang diketahui. Output speaker bervariasi dengan frekuensi, namun kita bisa memperbaiki variasi ini dengan data kalibrasi - outputnya dapat disesuaikan secara level untuk memperhitungkan fluktuasi dalam kalibrasi. Perhatikan bahwa data mentahnya berisik - ini berarti bahwa perubahan kecil pada frekuensi tampaknya memerlukan perubahan tingkat tinggi yang tidak menentu. Apakah ini realistis Atau apakah ini merupakan produk dari lingkungan rekaman Yang masuk akal dalam hal ini untuk menerapkan rata-rata bergerak yang menghaluskan kurva tingkat frekuensi untuk memberikan kurva kalibrasi yang sedikit kurang tidak menentu. Tapi mengapa tidak optimal dalam contoh ini Data lebih banyak akan lebih baik - beberapa kalibrasi berjalan rata-rata bersama-sama akan menghancurkan kebisingan di sistem (selama acak) dan memberikan kurva dengan detail yang kurang halus hilang. Rata-rata bergerak hanya dapat memperkirakan hal ini, dan dapat menghilangkan beberapa penurunan frekuensi dan puncak yang lebih tinggi dari kurva yang benar-benar ada. Gelombang sinus Menggunakan rata-rata bergerak pada gelombang sinus menyoroti dua poin: Masalah umum memilih sejumlah titik yang masuk akal untuk melakukan rata-rata di atas. Yang sederhana, namun ada metode analisis sinyal yang lebih efektif daripada rata-rata sinyal osilasi dalam domain waktu. Dalam grafik ini, gelombang sinus asli diplot dengan warna biru. Kebisingan ditambahkan dan diplot sebagai kurva oranye. Rata-rata bergerak dilakukan pada berbagai titik untuk melihat apakah gelombang asli dapat dipulihkan. 5 dan 10 poin memberikan hasil yang masuk akal, namun jangan mengeluarkan suara seluruhnya, karena jumlah titik yang lebih banyak mulai kehilangan detail amplitudo karena rata-rata meluas melebihi fase yang berbeda (ingat oscilat gelombang sekitar nol, dan rata-rata (-1 1) 0).Sebuah pendekatan alternatif adalah dengan membangun filter lowpass daripada yang bisa diterapkan pada sinyal di domain frekuensi. Im tidak akan membahas detail karena melampaui lingkup artikel ini, namun karena suaranya jauh lebih tinggi daripada frekuensi dasar gelombang, akan sangat mudah jika membuat filter lowpass daripada yang akan mengeluarkan frekuensi tinggi. kebisingan.

No comments:

Post a Comment