Bonjour…Salam…Selamat siang.
Comment ça va? Vous allez bien? J’espère que tout le monde va bien ;-).
Pada artikel kali ini saya akan berbagi tentang Robot Forex yang saya kembangkan disela-sela kesibukan saya. OK, langsung aja yuuk. Dan pada liburan musim panas tahun ini, saya mengisinya dengan belajar trading kembali dan membuat robot forex atau Expert Advisor (EA).
Sejak masa pandemi Covid-19 hingga saat ini, kita disadarkan bahwa kesehatan adalah harta pemberian Tuhan yang PALING BERHARGA. Itu benar atau sangat benar ? 😀 Maka itu, sudah sepatutnya kita bersyukur selalu atas nikmat sehat. OK….setelah sekian bulan saya off dari kegiatan ‘trading’, kali ini saya kembali dengan membawa berita baik. Berita baik buat siapa? Buat siapa saja yang memaknai bahwa berita ini baik. 😀
Yah…saya sempat belajar mengembangkan robot forex EA pada saat ‘lockdown’ atau masa pandemi di tahun 2020 lalu. Dan saya telah mencobanya dengan Demo account pada sebuah Broker di Indonesia, dengan kapital awal 300 USD . Namun ternyata setelah berlangsung beberapa bulan, tepatnya pada bulan ke-4 atau ke-5, account Demo saya kena MC (Margin Call) …hahaha :D. But, it’s OK…..bagi saya itu adalah pelajaran dan pengalaman yang sangat berharga. Dari pengalaman itu, saya benar-benar banyak mengambil pelajaran tentang dunia trading. Ternyata memang dunia trading itu ‘menarik’, khususnya bagi saya. Dan banyak orang bilang bahwa trading itu High Risk. Tapi kalau trading dengan cara yang benar kita bisa merubah High Risk menjadi High Gain, benar? Lalu, sayapun melanjutkan belajar trading secara konsisten. Mulai dari teknik analisis atau technical, fundamental, news, hingga terapi mental dan mindset ketika berinvestasi pada dunia trading….hahaha 😀 😀 😀 . Sungguh ini sesuatu ilmu dan pengalaman yang sangat sangat sangat berharga.
Memulai dari nol (0) lagi, saya perbaiki, tepatnya merubah strategi trading saya. Yang dulunya saya menggunakan teknik martingal, kali ini TIDAK. No Martingale, No Hedging, No Grid. Banyak ‘trader expert’ yg bilang bahwa teknik-teknik semacam itu berbahaya. Terutama bagi trader pemula, apalagi dengan modal yang relatif kecil . . . kecuali kita punya modal yang cukup besar atau kuat untuk menutupi equity atau balance ketika terjadi big floating agar tidak terkena margin call. Tapi bagaimana dengan orang-orang yang bermodal relatif kecil? Pastinya cepat atau lambat, account kita beresiko hangus terkarena Margin Call. Nah, atas dasar itu dan pengalaman pribadi, maka saya memutuskan untuk merubah strategi trading dan robot EA saya. Objektif dari robot EA ini adalah yang penting profit, walaupun tidak open trade banyak. Demi menjaga portofolio kita.
Dan kali ini, setelah belajar dari pengalaman dan banyak membaca dari forum, lihat video di Youtube, ikut class Mind Reprogramming, maka mental dan mindset saya berubah terhadap money. Maka sayapun memutuskan untuk menggunakan teknik yang aman, walau dengan modal equity atau balance yang kecil sekalipun, yaitu teknik swing. Robot EA ini saya beri nama: C68-EMA-CTR.
Sebenarnya, robot EA ini dalam melakukan trades atau Open Position baik itu Buy atau Sell, menggunakan ‘Exponential Moving Average‘ (EMA) dan C adalah Crossovers, atau yang sering disingkat dengan EMA Cross dan kadang teknik ini dikenal juga dengan istilah strategi Breakout. Ketika short & fast EMA bertemu (Crosses) atau istilah lainnya long & slow EMA bertukar posisi, maka robot EA akan masuk trade dan memberikan sinyal/alert. Sedangkan TR adalah kepanjangan dari Trend & Recovery. Jadi Robot EA EMA CTR ini menggunakan strategi EMA Cross, plus Trend & Recovery. DImana Trend & Recovery adalah optional atau fitur tambahan dari Robot ini. Modul Recovery, jika diaktifkan, maka ia akan membuka trade untuk memperbaiki trading kita ketika arah pasar bergerak berlawan dengan trade kita. Hal ini sering terjadi, karena kita memang terkadang tidak tahu kapan trend pasar akan berubah. Dengan kata lain, trading kita bisa selalu selaras dengan trend dari the BIG GUY, sang penguasa Market. Oleh karena itu, diperlukan suatu mekanisme yang membuat trading yang selaras dengan Trend pasar, atau istilahnya follow the trend. Tapi sekali lagi, modul Recovery dan trend adalah fitur option. Kita punya pilihan untuk menggunakannya atau tidak.
C68-EMA-CTR bekerja hanya berdasarkan open bar price pada satu time frame. Maksudnya robot EA ini menganalisa setiap bar yang dibuka dan dia menggunakan teknik swing berdasarkan quotes, spread pada pair yang digunakan. Take Profit (TP) dan Stop Loss (SL) pun dapat dikonfigurasi oleh user. Robot EA akan bereaksi membuka trade atau Open Position (OP) ketika terjadi EMA Crossover antara slow EMA dan fast EMA, seperti terlihat pada Gambar dibawah. Kedua parameter EMA ini bisa dikonfigurasi pada preset EA. Sebagai tambahan, robot EA juga menyediakan option EMA ketiga.
Setiap Open Position (OP) diberikan fixed lots sebesar 0.01, dengan Stop Loss pada 2500 point dan Take Profit pada 1000 point. Semuanya dapat menggunakan setting by default, tapi Anda bisa mengganti value setiap parameter sesuai keinginan Anda.
Pada dunia trading forex/stock/crypto, ada suatu momen dimana robot EA atau bahkan kita sendiri tidak mampu prediksi pergerakan harga pasar. Hal ini disebut extreme cases. Jika hal ini terjadi, semua transaksi OP akan dipasang Stop Loss untuk mengamankan Balance.
Berikut saya berikan potongan code dari fungsi EMA Cross dalam bahasa pemrograman MQL4.
int EMA_Cross()
{
int signal = MACROSS_NO_SIGNAL;
//... other parts of the code
if(Use_3rd_ema)
{
if(Option==0 || Option_3rdEMA==0) // "Fast X Slow, Slow > 3rd or <3rd"; //long above 3rd and short bellow 3rd
{
if ( ema_fast_1[1]>ema_slow_1[1] &&
ema_fast_2[2]<ema_slow_2[2] &&
ema_slow_1[2]>ema_3rd_1[2]
) {signal=MACROSS_OPEN_BUY_SIGNAL;}
if (
ema_fast_1[1]<ema_slow_1[1] &&
ema_fast_2[2]>ema_slow_2[2] &&
ema_slow_1[2]<ema_3rd_1[2]
) {signal=MACROSS_OPEN_SELL_SIGNAL;}
}
else if (Option==1 || Option_3rdEMA==1) // "Slow x 3rd"; //long if slow cross up 3rd and short if slow cross down 3rd
{
if ( ema_slow_1[2]>ema_3rd_1[2] &&
ema_slow_2[2]<ema_3rd_2[2]
) {signal=MACROSS_OPEN_BUY_SIGNAL;}
if (
ema_slow_1[2]<ema_3rd_1[2] &&
ema_slow_2[2]>ema_3rd_2[2]
) {signal=MACROSS_OPEN_SELL_SIGNAL;}
}
else if (Option==2 || Option_3rdEMA==2) // "Fast & Slow > 3rd or < 3rd"; //long if fast and slow above 3rd and short if fast and slow bellow 3rd
{
if ( ema_fast_1[2]>ema_3rd_1[2] &&
ema_slow_1[2]>ema_3rd_1[2]
) {signal=MACROSS_OPEN_BUY_SIGNAL;}
if (
ema_fast_1[2]<ema_3rd_1[2] &&
ema_slow_1[2]<ema_3rd_1[2]
) {signal=MACROSS_OPEN_SELL_SIGNAL;}
}
}
else if(!Use_3rd_ema)
{
if (ema_fast_1[1]>ema_slow_1[1] && ema_fast_2[2]<ema_slow_2[2])
signal=MACROSS_OPEN_BUY_SIGNAL; // BUY
if (ema_fast_1[1]<ema_slow_1[1] && ema_fast_2[2]>ema_slow_2[2])
signal=MACROSS_OPEN_SELL_SIGNAL; // SELL
}
return(signal);
}
Jadi, fungsi EMA Cross diatas akan dieksekusi pada setiap ‘new bar’ atau ‘new candle’, dan akan menghitung nilai dari low & fast EMA.
Dan pada main programnya, fungsi EMA Cross akan dipanggil setiap new candle muncul. Berikut potongan programnya.
void OnTick()
{
//... other parts of the code
//***Check for new bar
if(isnewcandle())
{
//***Check for EMA Cross signal
int signal = EMA_Cross();
//***EMA CROSS TRADE
if(OrdersTotal()<Max_Trade)
{
if (signal == MACROSS_OPEN_BUY_SIGNAL)
{
//-- Open BUY
OrderSend(Symbol(),OP_BUY,Lots,Bid,slippage,stoploss,takeprofit,"C68-EMA-CTR",magic_buy,0,Green);
}
if (signal == MACROSS_OPEN_SELL_SIGNAL)
{
//-- Open SELL
OrderSend(Symbol(),OP_SELL,Lots,Ask,slippage,stoploss,takeprofit,"C68-EMA-CTR",magic_sell,0,Red);
}
}
//... other parts of the code
}
Trend Modul
Trend modul akan dieksekusi jika kondisi OpenTrendSignal terpenuhi. Berikut potongan script dati Trend modul.
if (use_trend)
{
if( OpenTrendSignal() == MACROSS_OPEN_BUY_SIGNAL)
//-- Open BUY
OrderSend(Symbol(),OP_BUY,Lots,Bid,slippage,stoploss,takeprofit,"C68-Trend",magic_trend,0,Green);
if ( OpenTrendSignal() == MACROSS_OPEN_SELL_SIGNAL)
//-- Open SELL
OrderSend(Symbol(),OP_SELL,Lots,Ask,slippage,stoploss,takeprofit,"C68-Trend",magic_trend,0,Red);
}
Recovery Modul
Sama seperti Trend modul, Recovery modul ini akan aktif jika pada preset kita setting dengan nilai ‘True’. Adapun persyaratan Recovery trades akan diekseskusi mengikuti kondisi seperti di bawah ini.
if(use_recovery)
{
//... other parts of the code
if(count_buy>1 && count_recov==0 && profit_buy<Max_loss/2) trade_recov_BUY();
if(count_buy>1 && count_recov<Max_Recov && profit_buy< Max_loss) trade_recov_BUY();
//... other parts of the code
if(count_sell>1 && count_recov==0 && profit_sell<Max_loss/2) trade_recov_SELL();
if(count_sell>1 && count_recov<Max_Recov && profit_sell<Max_loss) trade_recov_SELL();
}
Dan berikut ini adalah contoh preset setting untuk Robot EA.
Dan kita akan coba lakukan backtesting dengan menggunakan data historical untuk pair Forex EURUSD. Saya hanya menggunakan data historical 5 tahun terakhir. Kenapa ? Karena menurut saya, data historis yang lebih baru (‘recent’) mungkin lebih relevan dengan kondisi pasar saat ini, dibanding dengan 10 tahun yang lalu.
Backtest
Backtest adalah salah satu cara untuk melihat kinerja robot EA dengan menggunakan data history. Backtest dilakukan pada Metatrader4 dengan menggunakan data historical, pada pair EURUSD (Euro vs US Dollar) dengan timeframe 30 Menit. Dan saya juga melakukan Backtest pada selama 5 tahun terakhir, mulai dari Januari 2018 hingga Juli 2023. Hasilnya seperti dapat dilihat dibawah ini.
Seperti dapat dilihat bahwa hasil backtesting cukup bagus. Dengan Profit Factor sebesar 2.04, dan Maximal drawdown hanya 9.38%, Profit trades sebesar 907 (93.91%), Loss trades 82 (8.29%), average consecutive wins 27, dan consecutive losses 2. Menurut saya hasil backtesting ini sudah sangat bagus. Tinggal kita lanjutkan untuk melakukan forwardtesting.
Berikutnya saya juga melakukan backtest pada pair GOLD (XAUUSD) pada timeframe D1 (Daily), pada period Janauri 2017 – Agustus 2023. Hasilnya dapat dilihat dibawah ini.
Dari hasil backtest pada GOLD, bisa dilihat bahwa dari Total trades sebanyak 84, Profit trades sebanyak 78 (92.86%), dengan Loss trades ada 6 (7.14%). Dan Maximal drawndown 29.84%, hal ini bisa kita minimalkan dengan melakukan setting parameters pada robot EA, seperti menggunakan Lots dan Stop Loss yang lebih kecil. Profit factor sebesar 6.11, dengan Consecutive wins 26, dan Consecutive losses sebanyak 3.
Forwartest
Untuk melakukan forwardtest , diperlukan komputer yang beroperasi 24 jam selama beberapa bulan. Tujuannya untuk mengetahui kinerja robot EA ini pada real data secara real time. Mungkin kita bisa sewa sebuah VPS yang nanti kita akan install Robot EA ini pada MT4. Dan dengan menggunakan demo account ataupun real account.
Untuk hasil Forwardtest, dapat dilihat pada website yang menyediakan trading journal atau layanan analisa hasil trading. Silahkan berkunjung ke website berikut untuk melihat trading journal dari link berikut:
https://www.myfxbook.com/members/taxman68/c68-all-ea-demo/11059526
atau
https://www.myfxbook.com/members/taxman68/c68-ema-crt/11059460
Catatan: Pada Forward testing ini, saya juga menggunakan ML yang sedang saya kembangkan dan beberapa EA saya. Objektifnya untuk melihat perilaku dan kinerja dari ML dan EA pada dunia trading, walaupun dengan Demo Account. Sehingga saya bisa fokus untuk memperbaiki algoritma dan performa EA ini. Bagi saya, Profit atau Loss itu adalah hal biasa dalam dunia trading. Adapun jika mendapat Profit, itu adalah bonus dari effort. Kalau Loss, berarti ada hal yang perlu diperbaiki.
Dan jika ada diantara kalian yang mau berinvestasi pada VPS dan pengembangan lebih lanjut dari Robot EA ini, serta untuk melakukan forwardtest atau real trading, silahkan tinggalkan komentar dibawah.
Future Work
Seperti pada umumnya semua software atau robot EA, tentunya masih ada kekurangan. Oleh karena itu, diperlukan pengembangan lebih lanjut pada beberapa modul demi kesempurnaan dari robot EA ini seiring berjalannya waktu agar tetap relevan dengan kondisi market. Beberapa hal yang perlu dikembangkan antara lain:
- Connected to Machine Learning.
- Membaca signal dari Machine Learning.
- Modul perhitungan Support & Resistance.
- Adaptative Pending Orders.
- Adaptative Recovery.
- Adaptive Trend.
- News Filter
Kenapa ada kaitannya dengan Machine Learning ? Iya, saya sedang mengembangkan sebuah Machine Learning untuk memprediksi harga saham/forex/crypto. Dan saya punya target untuk menghubungkan Robot EA ini dengan Machine Learning. Tentang Machine Learning ini, kalian bisa membaca artikelnya pada blog saya ini.
OK, seperti biasa, jika ada pertanyaan atau komentar, silahkan tuliskan pada kolom komentar dibawah. Saya akan berusaha sebaik saya untuk menjawabnya.
Disclaimer
The information contained in my Scripts/Ideas/Algos/Systems does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My Scripts/Ideas/Algos/Systems are only for educational purposes! USE AT YOUR OWN RISK!!!
Colmar, 10/08/2023, Summer.
I’m impressed, I have to say. Actually hardly ever do I encounter a weblog that’s both educative and entertaining, and let me tell you, you might have hit the nail on the head. Your idea is excellent; the problem is something that not enough people are talking intelligently about. I’m very happy that I stumbled throughout this in my search for something regarding this.
Thank You.