Siapa pun yang pernah tertarik pada pasar saham atau cryptocurrency telah melihat garis tambahan ini. Dan Anda mungkin mendengar pendapat dari pedagang berpengalaman bahwa mereka tidak bekerja dan bagaimana mereka tidak menggunakan apa pun. Tetapi mereka banyak membantu dan terminal perdagangan saya, yang saya malas lihat sekali sehari, terlihat seperti gambar di bawah ini.
Bagaimana mereka semua diatur sama? Dan kepada siapa ini dapat bermanfaat? Anda pasti harus terbiasa dengan ini jika:
- Anda menggunakannya dalam perdagangan Anda
- Apakah Anda berencana untuk menulis robot perdagangan
- Apakah Anda ingin menerapkan strategi perdagangan sendiri

Indikator teknis paling sering berupa fungsi jendela, berat atau pengulangan harga dan volume yang berasal dari pertukaran dalam format array lilin TOHLCV (waktu unix, buka, tinggi, rendah, dekat, volume). Berbagai penyaringan, maksimum minimum atau indikator lain juga dapat digunakan sebagai dasar untuk perhitungan selanjutnya.
Moving Average (SMA)Saat menerapkan indikator, sangat mudah untuk menggunakan pendekatan pemrograman fungsional. Misalnya, rata-rata bergerak, ini hanya rata-rata dari setiap nilai fungsi jendela bergerak pada harga penutupan
function sma($close, window) { return rolling(x => mean(x), window, $close); }
di mana fungsi mean () adalah nilai rata-rata, parameter jendela adalah ukuran jendela, dan rolling () adalah kombinasi dari fungsi jendela, yang untuk setiap sel saat ini dalam array menghasilkan array dari n elemen terakhir, dan operasi yang meminimalkan jendela ke angka.
function rolling(operation, window, array) { let result = []; for (let i = 0; i < array.length; i++) { if (i + 1 < window) { result.push(NaN); } else { result.push(operation(array.slice(i + 1 - window, i + 1))); } } return result; }
Rata-rata bergerak adalah indikator lagging dan membantu menentukan tren. Itu digambar overlay di atas grafik harga dan nilai-nilai pertama biasanya biasanya dibuang.

Biasanya, sepasang indikator dipertimbangkan, dan titik ketika indikator dengan jendela pendek melintasi indikator dengan jendela panjang dianggap sebagai titik masuk potensial dari bawah dan titik keluar dari atas. Dalam praktiknya, rata-rata bergerak tertimbang secara eksponensial lebih sering digunakan, menggunakan fungsi jendela tertimbang untuk mengurangi efek penundaan.
Standar Deviasi (STDEV)Jika kita mengganti fungsi mean () di versi sebelumnya dengan root dari variance sd (), maka kita akan mendapatkan standar deviasi bergerak.
function stdev($close, window) { return rolling(x => sd(x), window, $close); }
Dispersi dianggap biasa dengan cara biasa, paling sering tanpa koreksi Bessel. Akar varians juga digunakan, karena varians itu sendiri diukur dalam rubel persegi / dolar.
Bollinger Bands (BB)Dengan demikian, kami telah menerima dua indikator dasar yang sudah dapat digabungkan dan menerima yang baru. Misalnya, jika kita menambahkan titik demi titik rata-rata bergerak dan standar deviasi, sementara mengalikannya dengan 2, kita mendapatkan bagian atas dari pita Bollinger, dan jika kita mengurangi bagian bawah.

Dalam kode, akan terlihat seperti ini
function bb($close, window, mult) { let middle = sma($close, window); let upper = pointwise((a, b) => a + b * mult, middle, stdev($close, window)); let lower = pointwise((a, b) => a - b * mult, middle, stdev($close, window)); return { lower : lower, upper : upper}; }
di mana fungsi pointwise tidak melakukan apa pun selain mengumpulkan satu elemen dari dua array menggunakan operasi yang diberikan padanya.
Bollinger Bands membantu menentukan jeda sebelum pergerakan harga yang besar, dan digunakan sebagai alat untuk dengan mudah menampilkan volatilitas pada bagan; deviasi standar tidak dapat ditampilkan sebagai overlay pada bagan yang sama dengan harga, sehingga lebih mudah untuk menundanya dari rata-rata bergerak.
CatatanIndikator ini memiliki satu kelemahan - menggunakan fungsi yang tertimbang secara eksponensial. Sebagai latihan, Anda dapat mencoba mengubahnya sendiri, jangan lupa memperhitungkan bahwa standar deviasi juga perlu dihitung secara eksponensial seimbang.
Rata-Rata Tertimbang Bergerak Eksponensial (EMA)Bagaimana lag rata-rata bergerak dapat dikurangi? Karena ketika menghitungnya, n harga penutupan terakhir ditambahkan, Anda dapat memahami bahwa Anda dapat menambahkan dengan sedikit berat, mengurangi kontribusi harga lama. Jadi kita sampai pada rumus untuk fungsi jendela tertimbang.
jika
dan pilih beberapa jenis konstanta
kurang dari satu, maka kita mendapatkan bobot yang jauh berkurang, jika pada saat yang sama menjumlahkan harga mulai dari yang terbaru.

Perhitungan dapat sangat disederhanakan jika kontribusi
ekor tidak diperhitungkan. Dengan memperluas ukuran jendela ke panjang penuh, Anda bisa mendapatkan definisi rekursif.
Akibatnya, kita perlu memilih beberapa nilai
sebagai konstanta smoothing.
Dapat ditunjukkan bahwa jika Anda mengambil
pusat massa bobot EMA dan SMA di atas menjadi sama. Dalam kode, semuanya terlihat jauh lebih mudah.
function ema($close, window, weight = null) { weight = weight ? weight : 2 / (window + 1); let ema = [ mean($close.slice(0, window)) ]; for (let i = 1; i < $close.length; i++) { ema.push($close[i] * weight + ema[i - 1] * (1 - weight)); }; return ema; }
Secara umum, ini adalah moving average yang sama, tetapi lebih sensitif.

Efisiensi penggunaan tergantung pada pengalaman dan pengaturan Anda yang digunakan. Misalnya, di situs
ini parameternya dipilih dengan cukup baik.
Moving Average Convergence / Divergence (MACD)Gerald Appel pada tahun 1979 muncul dengan salah satu osilator poin harga paling sederhana dan efektif. Ini mengubah dua indikator tren EMA menjadi indikator momen, mengambil yang terbaik dari dua dunia. Artinya, dia, secara kasar, menemukan turunan. Ini digambar dalam jendela terpisah dengan dua garis dan histogram, dan tidak overlay, seperti yang sebelumnya. Bahkan, ada lebih banyak indikator yang digambar dalam jendela terpisah, tetapi ini mungkin tentang waktu lain.

Rumus perhitungannya cukup sederhana, ambil dua ema dengan jendela pendek dan pendek, misalnya, 26 dan 12 unit, dan dikurangi, garis yang dihasilkan akan menjadi indikator yang diinginkan. Mengambil ema lain dari perbedaan ini dengan langkah 3 unit, kami memperoleh garis sinyal. Histogram yang ditambahkan Gerald kemudian dihitung oleh perbedaan antara dua hasil sebelumnya dan pada dasarnya adalah turunan rata-rata tertimbang.
function macd($close, wshort, wlong, wsig) { let line = pointwise((a, b) => a - b, ema($close, wshort), ema($close, wlong)); let signal = ema(line, wsig); let hist = pointwise((a, b) => a - b, line, signal); return { line : line, signal : signal, hist : hist }; }
Pengujian indikator, kesalahan standar dinormalisasiMemiliki tabel yang akurat dengan arti indikator, Anda dapat menguji perhitungan Anda secara kualitatif. Ada berbagai cara untuk menentukan ukuran kesalahan antara dua fungsi, tetapi praktik telah menunjukkan bahwa kesalahan kuadrat rata-rata yang dinormalisasi, yang dianggap sebagai
bekerja paling baik untuk ukuran kecil dan besar. Sebagai contoh, bitcoin dalam dolar dapat berharga $ 20.000 dan selisih $ 10 tidak penting, pada saat yang sama, satu altcoin dapat dihitung dalam beberapa satoshi.
function nrmse(f, g) { let sqrDiff = pointwise((a, b) => (a - b) * (a - b), f, g); return Math.sqrt(mean(sqrDiff)) / (Math.max(...f) - Math.min(...f)); }
KesimpulanJadi dalam beberapa baris Anda dapat mengekspresikan indikator dasar, jika Anda berencana untuk melakukan analisis mereka dengan pembelajaran mesin, kemudian untuk menentukan titik masuk yang ideal, saya menyarankan Anda untuk memperhatikan indikator ZigZag, yang tidak berguna untuk perdagangan, tetapi sangat berguna sebagai guru. Juga harus diingat bahwa untuk perdagangan Anda harus memilih indikator yang paling berbeda dan mencoba mengubah parameter inputnya. Anda dapat mencoba mengubahnya secara otomatis dari waktu ke waktu, karena parameter yang paling efektif cenderung berubah.
Sumber yang digunakan1.
StockCharts - daftar algoritma dengan data verifikasi dalam tabel
2.
Cryptowatch - parameter indikator yang disesuaikan
3.
Github - kode sumber