Anda di halaman 1dari 11

Belajar neural network

Menjawab beberapa pertanyaan rekan2 lain di thread terpisah, sebaiknya saya jadikan
satu topik supaya lebih gampang. Saya juga masih belajar mengenai neural network (NN)
jadi kalau ada yg kurang atau salah kata harap dimaklumi Aplikasi NN ini sebenarnya
sangat luas tapi saya coba batasi pembahasannya lebih fokus ke arah financial time series
forecasting.
Apa itu neural network?
Silakan baca di sini dulu http://en.wikipedia.org/wiki/Neural_network
Pada mulanya istilah neural network mengacu pada sistem syaraf biologis (biological
neuron system) seperti jaringan otak manusia. Tapi sekarang ini neural network sering
diartikan sebagai jaringan syaraf buatan (artificial neural network) yang dipakai sebagai
dasar pengembangan kecerdasan buatan (artificial intelligence).
Neural network biologis yang kita punya (otak) setiap hari menyelesaikan berbagai
masalah dari yang sederhana sampai yang rumit. Contohnya kita mampu membedakan
jenis makanan berdasarkan warna, bentuk, bau dan tekstur permukaan. Bagaimana cara
kerja otak sehingga mampu membedakan jenis makanan?
Ilustrasi:
Cari anak balita yang belum pernah liat spaghetti. Kita sodorkan sepiring spaghetti trus
tanya ke si kecil "Ini makanan apa?" Jawabnya "Nggak tau". OK sekarang kakak ajarin
ya.... coba pegang makanan ini. Lalu coba cium baunya. Lalu coba lihat warnanya.
Terakhir coba makan & rasanya bagaimana? Jawab si kecil "ooo... ini namanya spaghetti,
makasih ya kk"
Boleh dibilang kita sedang mengajari (training) si kecil untuk mengenali spaghetti.
Besoknya kita bawa sepiring mie goreng kecap lalu tanya ke si kecil "Ini makanan apa?".
Si kecil pasti masih inget spaghetti yang kemarin, tapi koq yang ini sedikit beda ya?
Dipegang bentuknya mirip, tapi baunya beda, lalu warnanya beda. Terakhir dikunyah...
oh rasanya juga beda. "Ini namanya mie goreng". Si kecil mengangguk tanda mengerti.
Besoknya kita bawa mie bakso pangsit. Prosesnya sama seperti sebelumnya. Si kecil
mulai belajar membedakan jenis makanan yang mirip tapi tak sama. Proses kerja otak si
kecil kurang lebih seperti ini:
Pertama kita memberi "input" kepada si kecil berupa:
- tekstur makanan
- bau makanan
- warna makanan
- rasa makanan

Lalu kita memberikan output ke si kecil berupa nama makanan "spaghetti, mie goreng,
mie bakso" dan kita ajari beberapa kali dengan menyodorkan berbagai jenis makanan
mie.
Setelah tiga kali diajarin, kita sodorkan mie pangsit. Otak si kecil langsung bekerja:
Input --> proses --> output
Lalu si kecil ngomong "KK ini mirip mie bakso seperti kemarin tapi ada pangsitnya. Saya
kasih nama mie pangsit ya" Horee si kecil udah mulai pinter. Besoknya dia sudah bisa
membedakan i fu mie, kwetiaw goreng, kwetiaw rebus dll.
Dari ilustrasi di atas kita sekarang aplikasikan ke trading. Setiap hari sebenarnya seorang
trader sedang training dirinya masing-masing:
Input ----> Proses ----> Output
- indicator - biological neural network - buy
- chart pattern (otak kita) - sell
- candlestick pattern - hold
- news
- dll
INPUT
Ada pepatah bibit menentukan masa depan. Ini juga berlaku dalam proses NN. Pemilihan
input sangat krusial. Coba kalau kita pakai indicator yang nggak ada korelasi dengan
market, keputusan trading juga pasti jadi ngaco. Seorang trader kalau dikasih indicator
banyak mungkin bakalan bingung sendiri. Atau coba bayangin kita dapat berita yang
menyesatkan, open trade kita juga bakal tersesat menuju MC
Jadi sekarang pertanyaan mendasar: input apa yang paling bagus? Dari sepuluh input
mana yang bisa dipakai, mana yang bisa dibuang?
Kita bisa cari jawabannya dengan mencoba satu per satu setiap input. Hari ini coba pakai
MACD, setting standard, dikombinasikan dengan RSI setting standard. Kalau hasilnya
jelek, coba pakai settingan berbeda. Kalau hasilnya masih jelek juga coba gabugkan
dengan indicator lain. Besok coba lagi pakai indicator A s/d Z. Mirip saya waktu awal2
belajar trading Kalau inget cape juga... tapi wajar dalam proses belajar semua pasti
pernah ngalamin.
Cara lain yang lebih praktis kita tanya ke komputer: nih saya kasih 10 input, coba pilih
sendiri mana yang terbaik. Trus kamu cari sendiri setting yang paling optimal. Komputer
bisa bekerja jauh lebih cepat daripada otak & otot kita. Hasilnya jauh lebih akurat dan
menghemat waktu.

PROSES
Tahapan proses dalam NN biologis (otak kita) sangat-sangat kompleks, karena jaringan
syaraf otak kita mengandung milyaran sel. Masing-masing sel, atau bisa kita sebut "node"
mengandung bobot dan informasi yang mempengaruhi output.
Dalam konteks trading, NN biologis punya kelemahan karena terpengaruh oleh "node"
yang namanya emosi. Nggak perlu saya jelasin teman2 pasti udah ngerti.
Artificial NN berbeda dengan NN biologis. Proses dalam artificial NN murni
menggunakan kalkulasi matematis. Karena menggunakan kalkulasi matematis muncullah
beberapa pendekatan - mungkin teman2 pernah denger - yang namanya polynomial,
probabilistic, backpropagation, kohonen, dsb. Saya nggak akan membahas pendekatan
matematis tsb karena (1) masuk materi kuliah tingkat master/doktoral (2) nggak ada
waktu buat belajar.
Kalau udah liat aplikasi Ezdemo pasti punya gambaran jelas. Masing-masing nodes
memberikan bobot dalam kalkulasi, dan bagaimana masing-masing node berinteraksi satu
sama lain tergantung dari formula matematis yang digunakan (polynomial, probabilistic,
dsb)
Oh ya, ada yang beranggapan model NN buatan ada sentuhan "human" nya. Sekali lagi
perlu diingat model NN buatan adalah murni proses kalkulasi matematis yang meniru
cara kerja NN biologis.
Jadi sama sekali tidak ada sentuhan "human" apalagi unsur emosi. Model NN boleh
dibilang mirip dengan formula matematika non linear. Kasarnya, hari ini 2+2=4 tapi
besok bisa jadi 2+2=5
OUTPUT
Dalam konteks trading, output dari model NN bisa berupa:
1. prediksi price di masa depan
2. klasifikasi chart pattern
3. klasifikasi price pattern
4. prediksi nilai indikator di masa depan
5. (ada yg bisa nambahin?)
Kelebihan utama dari konsep NN adalah kemampuannya untuk memprediksi value di
masa depan. Dari ilustrasi awal, si anak kecil sudah bisa membedakan jenis makanan
setelah tiga kali ditraining. Berikutnya disodori mie ayam dia akan langsung berpikir "ini
mirip mie pangsit tapi nggak ada pangsit, cuma ada bakso, berarti namanya mie ayam!"

Dari ilustrasi Ezdemo (link download postingan awal) kita bisa menggunakan model NN
untuk memprediksi nilai penjualan. Seperti yang kita lihat bahwa nilai prediksi tidak
pernah 100% tepat dengan nilai aktual, tapi nilai prediksi yang mendekati nilai aktual
sudah lebih dari cukup untuk mengambil keputusan. Ini namanya value approximation.
Kelebihan lain dari konsep NN ini adalah kemampuannya beradaptasi.
Ingat, setiap model NN selalu memerlukan yang namanya proses training. Sama seperti
kita sebelum test/ujian selalu perlu yang namanya belajar dan latihan soal dulu.
Dalam proses training kita tentukan satu data set berupa price history - bisa seminggu,
dua minggu, satu bulan, dst. Kalau saya biasanya menggunakan data set dua minggu ke
belakang untuk digunakan trading satu minggu ke depan. Model NN nya menggunakan
time frame 1 hour. Setelah satu minggu selesai lalu training ulang, begitu seterusnya.
Sekarang coba perhatikan. Ada periode EURUSD bergerak cuma 200-300 pips dalam
satu minggu. Tapi kemarin EU bergerak sampai 300 pips dalam satu hari. Kalau model
NN ditraining dengan range 300 pips seminggu, dia akan bereaksi bagus jika minggu
berikutnya price masih sideways. Kalau model NN ditraining dengan range 300 pips
sehari, dia akan bereaksi bagus jika minggu berikutnya price bergerak trending. Lebih
baik lagi jika model NN bereaksi bagus pada saat sideways dan trending. Nah
menemukan model NN seperti itu yang sulit.
Sekedar bahan pemikiran buat rekan2:
System trading konvensional yang kita pakai di MT4 kebanyakan bersifat statis. Betul?
Kita menggunakan rules dari beberapa indicator, dari waktu ke waktu tidak berubah.
Parameter atau settingan juga tidak berubah dari waktu ke waktu. Ini kalau tradernya
konsisten ya.
Nah kita pasti sepakat bahwa market selalu bergerak dinamis. Sekarang apa jadinya kalau
system yang bersifat statis diterapkan di market yang selalu dinamis? Pasti selalu ada saat
systemnya tidak bekerja alias sering loss. Ada saatnya juga sering profit.
Saya tidak mengatakan system trading yang statis adalah jelek. Sama sekali tidak. Saya
cuma ingin mengatakan akan lebih baik lagi kalau kita menggunakan system yang
dinamis untuk market yang dinamis.
System yang berbasis NN sudah diterapkan di beberapa mobil. Saya pernah ikut training
Volkswagen, di mobil mereka ada fitur yang namanya "Brake Assist". System ini bisa
mendeteksi apakah situasi mobil saat itu sedang dalam kondisi pengereman darurat atau
tidak. Kalau terdeteksi pengereman darurat maka system akan memerintahkan mobil
untuk mencengkeram piringan rem lebih kuat karena tidak semua pengendara kakinya
cukup kuat untuk menginjak pedal rem, apalagi dalam keadaan panik. System brake
assist ini terpisah dengan ABS (Anti Lock Brake System). Brake assist mengatur kuatlemahnya injakan pedal rem, sedangkan ABS mencegah roda terkunci sehingga
mengurangi gejala slip.

Ada juga yang diterapkan di sistem transmisi. Volkswagen Golf GTI dulu masih transmisi
manual tapi sekarang yg generasi kelima sudah transmisi matic. Teknologi transmisinya
namanya DSG, respon perpindahan giginya kurang dari satu detik. DSG bisa mendeteksi
apakah pengendara butuh yang normal (jalan pelan-pelan) atau butuh yang sport. Kalau
normal maka perpindahan gigi dilakukan pada RPM rendah sedangkan kalau sport
perpindahan giginya di RPM tinggi.
Tools untuk membuat model NN banyak, tapi di antara semuanya top of the list nya
hanya 2: Neuroshell dan Mat Lab. Saya belum pakai Mat Lab, cuma neuroshell. Pelanpelan ya... nanti kita bahas ke situ. Lebih baik kita pahami dulu beberapa istilah supaya
jangan rancu dan akhirnya malah bingung sendiri.
Model NN bisa digambarkan seperti ini:

Yang paling kiri disebut input layer, di tengah disebut hidden layer atau hidden neuron, di
sebelah kanan disebut output layer. Gambar ini adalah model NN yang sudah jadi.
Sedangkan model NN yang masih mentah bentuknya seperti ini:

Model NN yang belum jadi kalau diberikan data di input layer akan menghasilkan nilai
output jauh dari yang diharapkan, atau dengan kata lain errornya masih tinggi. Tapi
model NN yang sudah jadi bisa memberikan nilai output yang mendekati aktual.
Bagaimana proses model NN dari yang mentah sampai jadi? Melalui proses training atau
proses learning. Di aplikasi Ezdemo kita lihat proses trainingnya dengan cara
memasukkan node di hidden layer satu per satu sampai akhirnya nilai output mendekati
nilai aktual. Setiap node di hidden layer juga memberikan bobot berbeda satu sama lain.
Lalu bagaimana mencari nilai bobot dari masing2 node? Caranya menggunakan teknik

optimization.
Teknik optimization murni menggunakan algoritma matematis. Dari beberapa teknik ada
dua yang saya tahu: exhaustive search algorithm dan genetic algorithm.
Exhaustive search algorithm pendekatannya mencoba semua kombinasi yang ada, satu
per satu. Teknik ini hasilnya sangat akurat tapi kelemahannya makan waktu sangat-sangat
lama sekali. Bayangkan kalau hidden layernya ada 30 node dan masing2 node punya
bobot berkisar 1 sampai 200.

How Does a Genetic Algorithm Work?


A genetic algorithm solves optimization problems by creating a population or group of
possible solutions to the problem. The individuals in this population will carry
chromosomes that are the values of variables of the problem.
The genetic algorithm actually solves your problem by allowing the less fit individuals in
the population to die (peacefully) and selectively breeding the most fit individuals (the
ones that solve the problem best). This process is called selection, as in selection of the
fittest. The genetic algorithm will take two fit individuals and mate them (a process called
crossover). The offspring of the mated pair will receive some of the characteristics of the
mother, and some of the father.
In nature, offspring often have some slight abnormalities, called mutations. Usually these
mutations are disabling and inhibit the ability of the children to survive, but once in a
while they improve the fitness of the individual (like toes stuck together in a web-like
fashion). The genetic algorithm similarly occasionally causes mutations in its populations
by randomly changing the value of a variable.
After the genetic algorithm mates fit individuals and mutates some, the population
undergoes a generation change. The population will then consist of offspring plus a few
of the older individuals, which the genetic algorithm allows to survive to the next
generation because they are the most fit in the population, and we will want to keep them
breeding. These most fit individuals are called elite individuals.
After dozens or even hundreds of "generations", a population eventually emerges wherein
the individuals will solve the problem very well. In fact, the most fit (elite) individual
will be an optimum or close to optimum solution.
The processes of selection, crossover, and mutation are called genetic operator.
Genetic algorithm adalah kalkulasi matematis yang meniru proses seleksi alam.

Lalu pertanyaan berikutnya: apakah cuma hidden neuron saja yang perlu optimization.
Sekarang kita lihat input layer. Misalkan input layer kita berikan tiga indicator:
MACD 12,26,9
RSI 14
CCI 14
Katakanlah parameter inputnya kita buat statis dan kita training model NN nya (optimize
hidden layer), dan akhirnya jadi. Lalu setelah itu kita iseng rubah satu saja parameter
input seperti ini:
MACD 12,26,9
RSI 14
CCI 21
sedangkan hidden layer tetap. Output pasti sama sekali berbeda dengan model awal. Kita
harus training ulang model NN karena parameter inputnya berubah. Sekali lagi kita perlu
ingat input menentukan hasil jadi kita harus mencari input yang bagus plus parameter
yang bagus. Caranya mencari parameter yang bagus kembali lagi menggunakan teknik
optimization.
Jadi kesimpulannya ada dua layer yang perlu optimization: input layer dan hidden layer.

Genetic algorithm di MT4


Buat teman2 penggemar EA, sebenarnya ada fitur optimization yang sudah built in di
MT4. Fitur optimization ini digunakan untuk mencari parameter EA yang paling optimal,
misalnya mencari value TP dan SL.
Coba buka strategy tester. Di situ ada checkbox "Optimization".

Lalu klik "Expert properties". Di tab "Testing" ada check box genetic algorithm.
Optimized parameter "Balance" artinya komputer akan mencari kombinasi nilai TP dan
SL yang akan menghasilkan Balance paling besar.

Kalau genetic algorithm tidak dicentang, maka komputer akan menggunakan exhaustive
search algorithm. Coba aja bedain lama pemrosesannya. Genetic algorithm jauh lebih
cepat.
Sekarang coba klik tab "Inputs"

Di baris TP, kolom Start=50 Step=1 Stop=200 artinya system akan mulai mencari dari
nilai 50, 51, 52 dan seterusnya sampai 200. Ingat, genetic algorithm tidak akan mencoba
setiap kombinasi TP dan SL dengan range dari 50 s/d 200, tapi dia pertama akan
membuat populasi awal berupa beberapa kombinasi saja lalu menganalisa kombinasi
mana yang berpotensi menghasilkan output paling optimal.
Sorry agak melenceng sedikit tapi saya rasa tidak semua rekan tahu mengenai fitur
genetic algorithm di MT4
O begitu ya baru tahu saya. Semakin menarik untuk dibahas. Jadi MT4 pun bisa dibuat
untuk NN ya. Setelah saya coba untuk optimize ternyata dari satu system aja bisa
menghasilkan lebih dari 10000 kombinasi. benar2 melelahkan untuk menunggu karena
kalau melihat estimasi waktunya menghabiskan 281 menit untuk mendapatkan seluruh
kombinasi itu hehehe. tapi mungkin bisa didapat hasil yang memuaskan ya. Nanti dicoba
dech di championship mql4, apa bener2 bisa sukses.
Bisa, dengan catatan kita harus ngerti bagaimana programming model NN dalam bentuk
mql4. Dulu saya pernah coba belajar tapi akhirnya angkat tangan karena butuh waktu
banyak untuk belajar ini dan itu. Banyak sekali yang perlu dipelajari.
Fitur genetic algorithm di MT4 sekali lagi untuk fungsi optimization. Bisa saja kita

develop input layer dan hidden layer dalam pemrograman EA, lalu setelah itu kita
gunakan MT4 untuk optimization. Ada beberapa contoh EA yang menggunakan model
perceptron. Perceptron ini salah satu model NN jaman jebot, kalau di-optimize dan diback test hasilnya fantastis. Tapi begitu forward test hasilnya kurang bagus.
Saya kasih saran jangan berharap bisa cepat nemu holy grail dengan neuroshell atau
dengan neural network. Memang NN punya potensi untuk develop system trading yang
bagus, tapi software baru bisa powerful kalau kita tahu cara menggunakannya.
Ada banyak tools untuk develop model NN. Coba baca artikel mengenai bagaimana
membuat model NN dengan MatLab di sini: http://articles.mql4.com/461
Kalau mau cari bajakan MatLab gampang, di toko software bajakan sudah ada yang versi
2008. Saya sendiri belum pernah pake, mungkin sebentar lagi mau coba ke arah sana.
Keuntungan pakai MatLab ini kita bisa mengatur dan melihat sendiri cara kerja hidden
layer, bagaimana setiap neuron berinteraksi satu sama lain, dan kita bisa menambahkan
beberapa layer tambahan. Lebih fleksibel. Tapi sayangnya untuk bisa develop model NN
dengan cara ini kita harus punya basic mengenai beberapa teori NN. Termasuk di
antaranya kita bisa mengaplikasikan teori yang dibahas di artikel ini:
http://articles.mql4.com/717
Buat teman-teman yang sudah pernah pakai MatLab mungkin bisa bantu. Soalnya
pengetahuan saya soal ini sedikit sekali.
Tools software yang lebih user friendly buat orang awam seperti saya mungkin lebih
cocok pakai neuroshell. Kita tidak tahu apa dan bagaimana hidden layer terbentuk di
neuroshell. Kasih input, tentukan jumlah maks node, keluarlah output. Setahu saya
network yang dipakai di neuroshell bukan tipe polynomial, backpropagation,
probabilistic ataupun kohonen. Meskipun di salah satu add-on nya ada indicator network
polynomial. Jadi model network nya mungkin murni hasil inovasi dari Ward Systems.

Di situ sudah termasuk beberapa add-on, yang kalau beli originial masing2 harganya
$249
Saya nemu NST di toko tapi yang versi lama 3.8. Yang saya tahu bedanya ada beberapa
indicator yg cuma jalan di versi 4 ke atas. Link yang dikasih bro kenshi itu versi 5.0
Alpha 4. Bedanya di versi 5 ini ada fitur untuk drawing manual (fibo, trendline, dsb.)
Saya coba versi 5.0 ini nggak stabil; sering quit dan bikin komputer hang. Dulu saya
akhirnya kembali pakai versi 4.4 karena jauh lebih stabil. Saya punya versi 5.3 tapi sorry
banget nggak bisa saya share karena saya beli lumayan mahal.

Strategi MA crossover pasti banyak yg sudah familiar. Banyak yg bilang kelemahan


strategi ini karena menggunakan lagging indicator. Tapi kelebihannya strategi ini bisa
profit gede kalau market sedang big move / trending.
Nah dulu project pertama saya seperti ini. Katakan kita pakai 2 jenis moving average: fast
& slow.
- Pertama, buat prediksi value fast MA 5 bar ke depan.
- Lalu kedua, buat prediksi value slow MA 5 bar ke depan.
Kelihatannya simpel. Tapi kita harus mencari input yang pas. Lalu masing2 prediction
model harus kita pastikan dulu average error-nya minim, atau r-squared nya maksimal.
NST memang menyebalkan kalau urusan data feed. Di MT4 kita konek ke server
broker.... hupla! bisa download data price gratis sekaligus realtime tick. Kalau di NST
ceritanya lain, kita harus cari sendiri data feed nya. Kalau punya account di Interactive
Broker bisa gratis data feed, kalau bayar berlangganan bisa ke Prophet.net atau
Quote.com
Cara lain kita export data dari MT4
a. Di terminal MT4
- tekan F2 (history center), pilih symbol dan time frame (contohnya EURUSD 1 Hour),
klik export, lalu save di folder Neuroshell Trader > Data > Exchrate atau bikin folder
baru di situ.
b. Modifikasi filenya dengan Excel
Tambahkan di baris pertama:
Data, Time, Open, High, Low, Close, Volume
Catatan: Format tanggal di kolom pertama harus seperti ini: yyyy.MM.dd (pemisahnya
pakai titik)
c. Rubah format tanggal di Windows:
- Start > Control panel > Regional & language option.
- Di Regional Option tab, pilih customize.
- Pilih tab Date, rubah formatnya menjadi yyy.MM.dd dengan pemisahnya menggunakan
tanda titik dan bukan slash ("/")
- Click Ok
d. Di Neuroshell
- Klik menu Tools > Data Source > Directoris/Files lalu klik autoscan dan browse ke
folder data.
- File yang di-export dari MT4 akan muncul di kategori ASCII

Untuk menggunakan data export di atas, klik File > New > (no template), lalu pilih nama
data export tadi.
Hal yang sama juga berlaku untuk model NN. Kalau kita terlalu banyak mengambil data
set misalnya 2000 bar ke belakang di time frame 1 hour, ada kecenderungan modelnya
"over fitting" alias terlalu kaku. Waktu di-backtest mungkin hasilnya bagus tapi waktu
forward test dia terlalu kaku meskipun ada kesempatan buy sell tapi tidak muncul signal.
Sekarang kembali ke preferensi trader masing-masing. Apakah mau membuat model
yang super fleksibel? Atau mau membuat model yang overfitting? Menurut saya
sebaiknya kita ambil jalan tengah membuat model yang optimal.
Rules of thumb nya begini.
Jumlah bar di time frame 1 hour selama satu bulan kurang lebih 500 bar. Kalau tf 30
menit berarti jumlahnya dua kali lipat dst. Menurut pengalaman saya model NN bisa
dikategorikan fleksibel kalau training setnya menggunakan data 500 s/d 1000 bar ke
belakang. Kurang dari 500 bisa dikategorikan modelnya sangat fleksibel. Lebih dari 1000
bar mulai ada kecenderungan over fitting.
Lalu hal yang sama juga perlu diperhatikan waktu kita menentukan berapa jumlah node
di hidden layer. Semakin banyak jumlah hidden neuron mulai ada kecenderungan over
fitting. Rekomendasi dari Ward Systems sebaiknya jangan gunakan lebih dari 30 neuron,
meskipun di softwarenya maksimum bisa sampai 80. Saya sendiri biasanya menggunakan
15-20 hidden neuron.
Tapi semuanya kembali ke preferensi trader masing-masing. Saya pernah baca ada trader
yang menggunakan lebih dari 60 hidden neuron dan dalam setahun dia hanya ambil 3-4
trade di stock market. Mungkin dia sengaja membuat model yang kaku untuk
menghindari false signal dan karakteristik model NN nya memang banyak muncul false
signal kalau jumlah hidden neuron nya sedikit.

Anda mungkin juga menyukai