Konfirmasi Ganda: EA Stochastic + MACD di MetaTrader 4
Paper ini merancang EA yang memakai prinsip konfirmasi ganda: transaksi hanya dibuka bila indikator MACD dan Stochastic memberi sinyal ke arah yang sama pada saat bersamaan. Idenya mirip paper EMA+RSI+Bollinger di seri ini — menyaring sinyal palsu dengan menuntut kesepakatan antar indikator.
MACD dipakai membaca arah dan momentum tren, sementara Stochastic membaca kondisi jenuh beli/jenuh jual. Kombinasi keduanya dimaksudkan menutupi kelemahan masing-masing: MACD cenderung terlambat, Stochastic cenderung terlalu sering memberi sinyal di pasar menyamping.
Sisi penutupan transaksi ditangani otomatis lewat take profit, stop loss, dan trailing stop yang nilainya diisi trader pada tab Input. Penulis juga menyediakan tab parameter untuk pengaturan money management.
Batas yang perlu disebut terus terang: paper ini fokus pada PERANCANGAN dan pengujian fungsional — apakah EA berhasil membuka dan menutup transaksi sesuai aturan yang diprogram. Penelitian dinyatakan berhasil bila "expert advisor dapat berjalan dengan baik dan telah siap digunakan". Tidak ada laporan profit factor, drawdown, atau backtest jangka panjang seperti pada paper Donchian atau Ichimoku di seri ini. Jadi paper ini bagus untuk belajar STRUKTUR pemrograman EA konfirmasi ganda, bukan untuk menyimpulkan strateginya menguntungkan.
Ilustrasi Kode Expert Advisor
//+------------------------------------------------------------------+
//| ILUSTRASI EDUKASI: Konfirmasi ganda MACD + Stochastic |
//| Entry hanya bila KEDUA indikator sepakat arah |
//+------------------------------------------------------------------+
input int MACD_Fast = 12;
input int MACD_Slow = 26;
input int MACD_Signal = 9;
input int Stoch_K = 5;
input int Stoch_D = 3;
input int Stoch_Slow = 3;
input double OversoldLvl = 20.0;
input double OverboughtLvl = 80.0;
input int TrailingStopPoints = 200;
int macdHandle, stochHandle;
int OnInit() {
macdHandle = iMACD(_Symbol, PERIOD_CURRENT, MACD_Fast, MACD_Slow, MACD_Signal, PRICE_CLOSE);
stochHandle = iStochastic(_Symbol, PERIOD_CURRENT, Stoch_K, Stoch_D, Stoch_Slow, MODE_SMA, STO_LOWHIGH);
return INIT_SUCCEEDED;
}
void OnTick() {
double macdMain[], macdSig[], stochMain[], stochSig[];
CopyBuffer(macdHandle, 0, 0, 2, macdMain);
CopyBuffer(macdHandle, 1, 0, 2, macdSig);
CopyBuffer(stochHandle, 0, 0, 2, stochMain);
CopyBuffer(stochHandle, 1, 0, 2, stochSig);
// MACD: garis utama memotong garis sinyal = pergantian momentum
bool macdBull = macdMain[0] > macdSig[0] && macdMain[1] <= macdSig[1];
bool macdBear = macdMain[0] < macdSig[0] && macdMain[1] >= macdSig[1];
// Stochastic: cross harus datang dari wilayah jenuh, bukan tengah
bool stochBull = stochMain[0] > stochSig[0] && stochMain[1] <= stochSig[1] && stochMain[1] < OversoldLvl;
bool stochBear = stochMain[0] < stochSig[0] && stochMain[1] >= stochSig[1] && stochMain[1] > OverboughtLvl;
if (PositionsTotal() == 0) {
if (macdBull && stochBull) {
// trade.Buy(lot, _Symbol);
} else if (macdBear && stochBear) {
// trade.Sell(lot, _Symbol);
}
} else {
ManageTrailingStop(TrailingStopPoints); // penutupan diserahkan ke trailing stop
}
}
void ManageTrailingStop(int points) {
// Menggeser stop loss mengikuti harga setelah posisi untung,
// sesuai mekanisme trailing stop yang dibahas paper.
}
Seluruh artikel di Trading Zone membahas metode dari paper akademik yang sudah terbit — tujuannya murni edukasi (belajar metode dari literatur ilmiah), BUKAN sinyal atau rekomendasi beli/jual. Kode EA yang ditampilkan adalah ilustrasi struktur logika untuk belajar, bukan kode produksi siap pakai. Kami mendorong kamu membaca paper aslinya secara lengkap dan menguji sendiri di akun demo sebelum menyimpulkan apa pun. Perdagangan berjangka/forex adalah transaksi high-risk, high-return.