Sunday 13 August 2017

Algoritma perhitungan rata rata bergerak


Moving Average Contoh ini mengajarkan cara menghitung moving average dari deret waktu di Excel. Rata-rata bergerak digunakan untuk memperlancar penyimpangan (puncak dan lembah) agar mudah mengenali tren. 1. Pertama, mari kita lihat rangkaian waktu kita. 2. Pada tab Data, klik Analisis Data. Catatan: cant menemukan tombol Analisis Data Klik disini untuk memuat add-in Analisis ToolPak. 3. Pilih Moving Average dan klik OK. 4. Klik pada kotak Input Range dan pilih range B2: M2. 5. Klik di kotak Interval dan ketik 6. 6. Klik pada kotak Output Range dan pilih sel B3. 8. Plot grafik nilai-nilai ini. Penjelasan: karena kita mengatur interval ke 6, rata-rata bergerak adalah rata-rata dari 5 titik data sebelumnya dan titik data saat ini. Akibatnya, puncak dan lembah dihaluskan. Grafik menunjukkan tren yang semakin meningkat. Excel tidak bisa menghitung moving average untuk 5 poin data pertama karena tidak ada cukup data point sebelumnya. 9. Ulangi langkah 2 sampai 8 untuk interval 2 dan interval 4. Kesimpulan: Semakin besar interval, semakin puncak dan lembah dihaluskan. Semakin kecil interval, semakin dekat rata-rata bergerak ke titik data aktual. Rata-rata bergerak: Apa yang ada di antara indikator teknis paling populer, rata-rata bergerak digunakan untuk mengukur arah tren saat ini. Setiap jenis moving average (biasanya ditulis dalam tutorial ini sebagai MA) adalah hasil matematis yang dihitung dengan rata-rata sejumlah titik data sebelumnya. Setelah ditentukan, rata-rata yang dihasilkan kemudian diplot ke bagan untuk memungkinkan pedagang melihat data yang merapikan daripada memusatkan perhatian pada fluktuasi harga sehari-hari yang melekat di semua pasar keuangan. Bentuk paling sederhana dari rata-rata bergerak, yang secara tepat dikenal sebagai moving average sederhana (SMA), dihitung dengan mengambil mean aritmetika dari serangkaian nilai yang diberikan. Misalnya, untuk menghitung rata-rata pergerakan 10 hari dasar, Anda akan menambahkan harga penutupan dari 10 hari terakhir dan kemudian membagi hasil dengan 10. Pada Gambar 1, jumlah harga selama 10 hari terakhir (110) adalah Dibagi dengan jumlah hari (10) sampai pada rata-rata 10 hari. Jika seorang pedagang ingin melihat rata-rata 50 hari, jenis perhitungan yang sama akan dilakukan, tapi itu akan mencakup harga selama 50 hari terakhir. Rata-rata yang dihasilkan di bawah (11) memperhitungkan 10 poin data terakhir untuk memberi gambaran kepada pedagang tentang bagaimana harga aset dibandingkan dengan 10 hari terakhir. Mungkin Anda bertanya-tanya mengapa pedagang teknis menyebut alat ini sebagai moving average dan bukan hanya mean biasa. Jawabannya adalah bahwa saat nilai baru tersedia, titik data tertua harus dikeluarkan dari himpunan dan titik data baru harus masuk untuk menggantikannya. Dengan demikian, kumpulan data terus bergerak untuk memperhitungkan data baru saat tersedia. Metode perhitungan ini memastikan bahwa hanya informasi terkini yang dipertanggungjawabkan. Pada Gambar 2, setelah nilai 5 yang baru ditambahkan ke himpunan, kotak merah (mewakili 10 titik data terakhir) bergerak ke kanan dan nilai terakhir 15 dijatuhkan dari perhitungan. Karena nilai yang relatif kecil dari 5 menggantikan nilai tinggi 15, Anda akan berharap untuk melihat rata-rata penurunan data, yang terjadi, dalam hal ini dari 11 sampai 10. Rata-rata Moving Averages Like Once MA telah dihitung, mereka diplot ke grafik dan kemudian terhubung untuk menciptakan garis rata-rata bergerak. Garis melengkung ini biasa ditemukan pada grafik pedagang teknis, tapi bagaimana penggunaannya dapat bervariasi secara drastis (lebih lanjut tentang ini nanti). Seperti yang dapat Anda lihat pada Gambar 3, adalah mungkin untuk menambahkan lebih dari satu moving average ke setiap grafik dengan menyesuaikan jumlah periode waktu yang digunakan dalam perhitungan. Garis melengkung ini mungkin tampak mengganggu atau membingungkan pada awalnya, tapi Anda akan terbiasa dengan mereka seiring berjalannya waktu. Garis merah hanya harga rata-rata selama 50 hari terakhir, sedangkan garis biru adalah harga rata-rata selama 100 hari terakhir. Sekarang setelah Anda memahami apa itu rata-rata bergerak dan seperti apa rasanya, perkenalkan jenis rata-rata bergerak yang berbeda dan periksa bagaimana perbedaannya dengan rata-rata bergerak sederhana yang disebutkan sebelumnya. Rata-rata pergerakan sederhana sangat populer di kalangan pedagang, namun seperti semua indikator teknis, memang ada kritiknya. Banyak orang berpendapat bahwa kegunaan SMA ini terbatas karena setiap titik dalam rangkaian data tertimbang sama, terlepas dari mana hal itu terjadi dalam urutan. Kritikus berpendapat bahwa data terbaru lebih signifikan daripada data yang lebih tua dan harus memiliki pengaruh lebih besar pada hasil akhir. Sebagai tanggapan atas kritik ini, para pedagang mulai memberi bobot lebih pada data terakhir, yang sejak saat ini menyebabkan penemuan berbagai tipe rata-rata baru, yang paling populer adalah Exponential Moving Average (EMA). (Untuk bacaan lebih lanjut, lihat Dasar-Dasar Rata-rata Bergerak Rata-rata dan Perbedaannya antara SMA dan EMA) Rata-rata Moving Exponential Rata-rata pergerakan eksponensial adalah jenis rata-rata bergerak yang memberi bobot lebih pada harga terakhir dalam upaya untuk membuatnya lebih responsif. Untuk informasi baru Mempelajari persamaan yang agak rumit untuk menghitung EMA mungkin tidak perlu bagi banyak pedagang, karena hampir semua paket charting melakukan perhitungan untuk Anda. Namun, bagi Anda ahli matematika matematika di luar sana, inilah persamaan EMA: Bila menggunakan rumus untuk menghitung titik pertama EMA, Anda mungkin memperhatikan bahwa tidak ada nilai yang tersedia untuk digunakan sebagai EMA sebelumnya. Masalah kecil ini bisa diatasi dengan memulai perhitungan dengan simple moving average dan melanjutkan dengan rumus di atas dari sana. Kami telah menyediakan contoh spreadsheet yang mencakup contoh kehidupan nyata tentang bagaimana menghitung rata-rata bergerak sederhana dan rata-rata pergerakan eksponensial. Perbedaan Antara EMA dan SMA Sekarang setelah Anda memiliki pemahaman yang lebih baik tentang bagaimana SMA dan EMA dihitung, mari kita lihat bagaimana rata-rata ini berbeda. Dengan melihat perhitungan EMA, Anda akan melihat bahwa penekanan lebih banyak ditempatkan pada titik data terkini, menjadikannya sebagai jenis rata-rata tertimbang. Pada Gambar 5, jumlah periode waktu yang digunakan pada masing-masing rata-rata identik (15), namun EMA merespons lebih cepat terhadap harga yang berubah. Perhatikan bagaimana EMA memiliki nilai lebih tinggi saat harga naik, dan jatuh lebih cepat dari pada SMA ketika harganya sedang menurun. Responsivitas inilah yang menjadi alasan utama mengapa banyak trader lebih memilih untuk menggunakan EMA di atas SMA. Apa arti Hari yang Berbeda Berarti Moving averages adalah indikator yang benar-benar dapat disesuaikan, yang berarti bahwa pengguna dapat dengan bebas memilih kerangka waktu yang mereka inginkan saat membuat rata-rata. Periode waktu paling umum yang digunakan dalam moving averages adalah 15, 20, 30, 50, 100 dan 200 hari. Semakin pendek rentang waktu yang digunakan untuk menciptakan rata-rata, semakin sensitif akan perubahan harga. Semakin lama rentang waktu, kurang sensitif, atau lebih merapikan, rata-rata akan. Tidak ada kerangka waktu yang tepat untuk digunakan saat mengatur rata-rata bergerak Anda. Cara terbaik untuk mengetahui mana yang paling sesuai untuk Anda adalah bereksperimen dengan sejumlah periode waktu yang berbeda sampai Anda menemukan strategi yang sesuai dengan strategi Anda. Moving Averages: Bagaimana Menggunakannya? Saya ingin menerapkan algoritma iteratif, yang menghitung rata-rata tertimbang. Aturan berat badan tertentu tidak masalah, tapi harus mendekati 1 untuk nilai terbaru dan mendekati 0 sampai yang terlama. Algoritma harus iteratif. Yaitu seharusnya tidak mengingat semua nilai sebelumnya. Ini hanya boleh diketahui hanya satu nilai terbaru dan informasi agregat apa pun tentang masa lalu, seperti nilai rata-rata, jumlah, hitungan, dll. Misalnya, algoritma berikut adalah: Ini akan memberi bobot penurunan eksponensial, yang mungkin tidak baik. Mungkinkah memiliki langkah penurunan berat badan atau sesuatu Persyaratan untuk menimbang hukum adalah sebagai berikut: 1) Berat badan menurun menjadi 2) Saya memiliki durasi rata-rata atau karakteristik sehingga nilai yang lebih tua dari durasi ini lebih penting daripada yang lebih baru 3) Saya Harus bisa mengatur durasi ini saya butuh yang berikut. Misalkan vi adalah nilai, dimana v1 adalah yang pertama. Anggaplah ada bobot. Tapi w0 adalah THE TERAKHIR. Jadi, setelah nilai pertama datang saya memiliki rata-rata pertama Setelah nilai kedua v2 datang, saya harus memiliki rata-rata Dengan nilai berikutnya saya harus memiliki Catatan, bahwa profil bobot bergerak dengan saya, sementara saya bergerak sepanjang urutan nilai. Yaitu. Setiap nilai tidak memiliki bobot sendiri sepanjang waktu. Tujuan saya adalah menurunkan berat badan ini saat melewati masa lalu. Gt Tapi tugas saya adalah menghitung rata-rata dihitung ulang setiap kali nilai baru tiba dengan nilai lama reweighted. OP Tugas Anda hampir selalu tidak mungkin, bahkan dengan skema pembobotan yang sangat sederhana. Anda meminta, dengan memori O (1), menghasilkan rata-rata dengan skema pembobotan yang berubah. Misalnya, saat nilai baru dilewatkan, untuk beberapa urutan bobot yang berubah sewenang-wenang. Hal ini tidak mungkin karena suntikan. Begitu Anda menggabungkan angka-angka itu bersama-sama, Anda kehilangan sejumlah besar informasi. Misalnya, meski Anda memiliki vektor bobot. Anda tidak bisa mengembalikan nilai vektor asli, atau sebaliknya. Hanya ada dua kasus yang bisa saya pikirkan dimana Anda bisa lolos dengan ini: Bobot konstan seperti 2,2,2. 2: ini setara dengan algoritma rata-rata on-line, yang tidak Anda inginkan karena nilai lama tidak reweighted. Bobot relatif dari jawaban sebelumnya tidak berubah. Misalnya Anda bisa melakukan bobot 8,4,2,1. Dan tambahkan elemen baru dengan berat badan sewenang-wenang seperti. 1. tetapi Anda harus meningkatkan semua sebelumnya dengan faktor perkalian yang sama, seperti 16,8,4,21. Jadi pada setiap langkah, Anda menambahkan bobot sewenang-wenang yang baru, dan rescaling baru yang sewenang-wenang di masa lalu, jadi Anda memiliki 2 derajat kebebasan (hanya 1 jika Anda perlu menjaga agar produk dot Anda dinormalisasi). Rasio berat yang akan Anda dapatkan akan terlihat seperti: Dengan demikian, skema pembobotan yang dapat Anda buat terlihat seperti itu akan berhasil (kecuali jika Anda perlu menjaga hal tersebut dinormalisasi dengan jumlah bobot, dalam hal ini Anda kemudian harus membagi rata-rata baru dengan yang baru Jumlah, yang dapat Anda hitung hanya dengan menyimpan memori O (1)). Bergali kalikan rata-rata sebelumnya dengan s baru (yang secara implisit akan mendistribusikan produk dot ke bobotnya), dan tancapkan pada nilai wnewValue yang baru. Jawab Mar 29 12 at 21:27 Di sini saya mengira Anda ingin bobotnya berjumlah 1. Selama Anda bisa menghasilkan bobot relatif tanpa berubah di masa depan, Anda bisa mendapatkan solusi yang meniru perilaku ini. Artinya, anggaplah Anda mendefinisikan bobot Anda sebagai urutan dan menentukan masukan sebagai urutan. Perhatikan bentuknya: sum (s0i0 s1i1 s2i2. Snin) sum (s0 s1 s2. Sn). Perhatikan bahwa secara sepele mungkin untuk menghitung ini secara bertahap dengan beberapa penghitung agregat: Tentu saja, menghitungWeightFromCounter () dalam hal ini seharusnya tidak menghasilkan bobot yang jumlahnya sama dengan satu - triknya di sini adalah bahwa kita rata-rata dengan membagi dengan jumlah bobot Sehingga pada akhirnya, bobot hampir tampak dari jumlah ke satu. Trik sebenarnya adalah bagaimana Anda menghitungWeightFromCounter (). Anda bisa mengembalikan konter itu sendiri, misalnya, namun perhatikan bahwa jumlah tertimbang terakhir tidak akan mendekati jumlah penghitung yang harus dilakukan, jadi Anda mungkin tidak akan mendapatkan properti yang Anda inginkan. (Sulit untuk mengatakannya karena, seperti yang disebutkan, Anda telah meninggalkan masalah yang cukup terbuka.) Menjawab 28 Mar 12 jam 21:45 Masalahnya adalah bahwa bobot berubah dengan setiap nilai baru. Dalam kasus Anda mereka tidak. Ndash Suzan Cioc Mar 29 12 at 14:43 Bobot aktual yang digunakan berubah dengan setiap nilai baru - kuotent kuotasi dibagi dengan jumlah yang lebih besar berturut-turut, sehingga memaksakan bahwa bobot yang digunakan sebenarnya selalu berjumlah 1. ndash Kaganar 29 Mar 12 At 14:45 Ini terlalu lama untuk dikirim dalam komentar, tapi mungkin berguna untuk mengetahuinya. Misalkan Anda memiliki: w0vn. Wnv0 (baik panggilan ini w0..nvn..0 untuk pendek) Kemudian langkah selanjutnya adalah: w0vn1. Wn1v0 (dan ini adalah w0..n1vn1..0 untuk jangka pendek) Ini berarti kita memerlukan cara untuk menghitung w1..n1vn..0 dari w0..nvn..0. Yang pasti mungkin bahwa vn..0 adalah 0. 0, z, 0. 0 dimana z berada pada beberapa lokasi x. Jika kita tidak memiliki penyimpanan ekstra, maka f (zw (x)) zw (x 1) di mana w (x) adalah bobot untuk lokasi x. Mengatur ulang persamaan, w (x 1) f (zw (x)) z. Nah, w (x 1) lebih baik menjadi konstan untuk x konstan, jadi f (zw (x)) z lebih baik menjadi konstan. Oleh karena itu, f harus membiarkan z merambat - yaitu, f (zw (x)) zf (w (x)). Tapi di sini lagi kita punya masalah. Perhatikan bahwa jika z (yang bisa berupa bilangan) dapat diperbanyak melalui f. Maka w (x) pasti bisa. Jadi f (zw (x)) w (x) f (z). Jadi f (w (x)) w (x) f (z). Tapi untuk x konstan. W (x) adalah konstan, dan dengan demikian f (w (x)) lebih baik juga konstan. W (x) adalah konstan, jadi f (z) lebih baik menjadi konstan sehingga w (x) f (z) konstan. Jadi f (w (x)) w (x) c dimana c adalah konstanta. Jadi, f (x) cx dimana c adalah konstanta bila x adalah nilai bobot. Artinya, setiap bobot adalah kelipatan dari sebelumnya. Dengan demikian, bobotnya berbentuk w (x) mbx. Perhatikan bahwa ini mengasumsikan satu-satunya informasi yang dimiliki f adalah nilai agregat terakhir. Perhatikan bahwa pada suatu saat Anda akan dikurangi untuk kasus ini kecuali jika Anda bersedia menyimpan sejumlah data yang tidak konstan yang mewakili masukan Anda. Anda tidak dapat mewakili sebuah vektor panjang tak terhingga bilangan real dengan bilangan real, namun Anda dapat memperkirakannya dengan cara tertentu dalam jumlah penyimpanan konstan dan terbatas. Tapi ini hanya perkiraan. Meskipun saya telah membuktikannya dengan teliti, kesimpulan saya adalah bahwa yang Anda inginkan tidak mungkin dilakukan dengan presisi tinggi, namun Anda mungkin bisa menggunakan log (n) spasi (yang mungkin juga O (1) untuk banyak Aplikasi praktis) untuk menghasilkan pendekatan yang berkualitas. Anda mungkin bisa menggunakan lebih sedikit lagi. Jawab Mar 29 12 di 23:01 Aku mencoba untuk sesuatu kode praktis (di Jawa). Seperti yang telah dikatakan, tujuan Anda tidak dapat dicapai. Anda hanya bisa menghitung rata-rata dari beberapa nilai terakhir yang diingat. Jika Anda tidak perlu tepatnya, Anda dapat memperkirakan nilai yang lebih tua. Saya mencoba melakukannya dengan mengingat 5 nilai terakhir dengan nilai yang sebenarnya dan yang lebih tua hanya dengan 5 nilai, mengingat 5 SUM terakhir. Kemudian, kompleksitasnya adalah O (2n) untuk mengingat nilai nnn terakhir. Ini adalah perkiraan yang sangat kasar. Anda dapat mengubah ukuran array LastValues ​​dan lasAggregatedSums sesuai keinginan. Lihat gambar ascii-art yang mencoba menampilkan grafik nilai terakhir, yang menunjukkan bahwa kolom pertama (data lama) diingat sebagai nilai gabungan (tidak individual), dan hanya 5 nilai paling awal yang diingat satu per satu. Tantangan 1. Contoh saya tidak menghitung bobot, tapi saya pikir tidak boleh menjadi masalah bagi Anda untuk menambahkan bobot untuk the lastAggregatedSums dengan tepat - satu-satunya masalah adalah, bahwa jika Anda menginginkan bobot yang lebih rendah untuk nilai yang lebih tua, akan lebih sulit, karena array berputar, jadi Tidak mudah untuk mengetahui bobot anggota array mana. Mungkin Anda bisa memodifikasi algoritma untuk selalu menggeser nilai pada array alih-alih berputar Kemudian menambahkan bobot seharusnya tidak menjadi masalah. Tantangan 2. Array diinisialisasi dengan nilai 0, dan nilai tersebut dihitung rata-rata dari awal, bahkan saat kita tidak menerima nilai yang cukup. Jika Anda menjalankan algoritma untuk waktu yang lama, mungkin Anda tidak perlu repot-repot belajar beberapa saat di awal. Jika Anda melakukannya, Anda dapat memposting modifikasi -) menjawab 21 Jan 14 di 15:59 Jawaban Anda 2017 Stack Exchange, Inc

No comments:

Post a Comment