MetaTrader5
Babi Ngepet: Pakar EA untuk MetaTrader 5 yang Berkesan
Parameter Pakar EA (Inputs) Pakar EA ini menawarkan beberapa parameter luar yang boleh diubah suai oleh pengguna untuk mengawal tingkah lakunya: Parameter Umum Parameter Jenis Deskripsi MagicNumber int Pengidentifikasi unik untuk perdagangan EA. InitialLot double Saiz lot permulaan untuk perdagangan pertama dalam siri. AllowBuy bool Flag untuk membenarkan EA membuka perdagangan Buy (permulaan dan Martingale). AllowSell bool Flag untuk membenarkan EA membuka perdagangan Sell (permulaan dan Martingale). TakeProfit int Take Profit tetap dalam mata/pips yang digunakan semasa meletakkan pesanan tertangguh (walaupun tidak untuk pelaksanaan pasaran). FindHighLowBackBars int Bilangan bar sebelumnya untuk melihat bagi menentukan tahap tertinggi dan terendah untuk meletakkan pesanan tertangguh awal. ResetAfterBars int Bilangan bar selepas mana pesanan tertangguh awal akan dipadamkan dan dinilai semula (jika tiada posisi terbuka). Strategi Martingale Parameter Jenis Deskripsi ReverseMartingale bool Jika benar, perdagangan Martingale seterusnya akan berada dalam arah bertentangan dengan perdagangan terakhir dalam siri ini (ini biasanya pendekatan anti-Martingale atau hedging, tetapi kod membuka dalam arah yang sama jika salah). Logik semasa mencadangkan pembukaan dalam arah yang sama jika ReverseMartingale adalah salah. LotMultiplier double Faktor di mana saiz lot didarabkan untuk perdagangan seterusnya dalam siri yang merugi (contohnya, 2.0 bermakna menggandakan lot). SecureProfitMartingaleTarget double Jumlah keuntungan terapung (dalam mata wang akaun) di mana keseluruhan siri perdagangan terbuka akan ditutup. DistanceMartingalePips int Jarak (dalam pips) harga mesti bergerak bertentangan dengan harga terbuka perdagangan terakhir sebelum perdagangan Martingale baru dibuka. MaxTradesInSeries int Bilangan maksimum perdagangan yang dibenarkan dalam satu siri Martingale. Strategi Masa Parameter Jenis Deskripsi AllowMonday... AllowFriday bool Flag untuk membolehkan atau melarang perdagangan pada hari-hari tertentu dalam seminggu. ForbiddenDates string Satu senarai tarikh (format YYYY.MM.DD) yang dipisahkan oleh koma di mana perdagangan dilarang. Ringkasan Fungsi Utama OnInit() (Inisialisasi) Menetapkan MagicNumber EA, mod margin, dan deviasi. Ia mengatur semula status Martingale (s_currentLot, s_totalTradesInSeries, dan lain-lain) kepada nilai awal, bersedia untuk permulaan baru. OnDeinit() (Deinisialisasi) Fungsi mudah untuk pembersihan, mencetak mesej apabila EA dihentikan atau dibuang. IsTradingDateAllowed() dan IsTradingDayAllowed() (Penapis Perdagangan) Fungsi ini memeriksa hari dan tarikh semasa terhadap input yang ditetapkan oleh pengguna (AllowMonday hingga AllowFriday dan ForbiddenDates) untuk menentukan sama ada perdagangan dibenarkan. OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Pelaksanaan Pasaran) Fungsi ini mengendalikan pembukaan posisi pasaran baru (Buy atau Sell). Ia mengesahkan dan menormalkan saiz lot terhadap minimum, maksimum, dan saiz langkah broker. Ia memeriksa margin bebas yang mencukupi menggunakan CheckMargin(). Ia melaksanakan perdagangan tanpa Take Profit atau Stop Loss tetap (tp_calculated adalah 0). Ia mengemas kini variabel status Martingale global: s_currentLot, s_lastOpenPrice, s_seriesType, dan s_totalTradesInSeries. CloseAllPositions() Mengulang melalui semua posisi terbuka dan menutup mana-mana yang dibuka oleh EA ini (yang sepadan dengan MagicNumber). PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Penempatan Pesanan Tertangguh) Fungsi ini meletakkan Buy Limit atau Sell Limit: Ia mengesahkan saiz lot dan memeriksa margin yang mencukupi. Ia mengesahkan harga masuk terhadap jarak minimum broker (SYMBOL_TRADE_STOPS_LEVEL). Ia mengira Take Profit tetap (tp) berdasarkan input TakeProfit. Ia menghantar permintaan perdagangan. Nota: Fungsi UpdateHighLowAndOrders memanggil ini untuk meletakkan pesanan awal Buy Limit dan Sell Limit. UpdateHighLowAndOrders() (Logik Masuk Awal) Ini adalah mekanisme kemasukan awal apabila tiada posisi terbuka: Ia melihat kembali FindHighLowBackBars untuk mencari Tertinggi Tertinggi dan Terendah Terendah. Ia mengira priceSellLimit (Tertinggi Tertinggi + 1 tick) dan priceBuyLimit (Terendah Terendah - 1 tick). Ia memeriksa jika pesanan Buy Limit dan Sell Limit dengan MagicNumber EA sudah wujud. Ia meletakkan pesanan Sell Limit awal sedikit di atas tertinggi terkini dan pesanan Buy Limit awal sedikit di bawah terendah terkini, masing-masing menggunakan InitialLot. OnTick() (Logik Utama) Inti logik pelaksanaan EA: Pemeriksaan Masa: Menghalang pengiraan berlebihan pada tick yang sama. Pemeriksaan Penapis: Jika perdagangan tidak dibenarkan mengikut hari/tarikh, ia memadamkan semua pesanan tertangguh. Pemeriksaan Sasaran Keuntungan (Keluar Siri): Jika eaHasOpenPositions adalah benar DAN totalFloatingProfit adalah ≥ SecureProfitMartingaleTarget, ia memanggil CloseAllPositions() dan mengatur semula semua variabel status Martingale untuk memulakan siri baru. Pemplacement Pesanan Awal: Jika !eaHasOpenPositions DAN perdagangan dibenarkan, ia mengatur semula status Martingale dan memeriksa jika bar baru telah terbentuk. Jika bar baru terbentuk, ia memeriksa jika barsCount adalah ≥ ResetAfterBars. Jika ya, ia memadamkan pesanan tertangguh dan memanggil UpdateHighLowAndOrders() untuk meletakkan pesanan awal baru. Jika tidak, ia hanya memanggil UpdateHighLowAndOrders(). Logik Langkah Martingale: Jika eaHasOpenPositions adalah benar DAN s_totalTradesInSeries adalah $< MaxTradesInSeries: Ia memeriksa jika totalFloatingProfit adalah negatif DAN harga telah bergerak bertentangan dengan perdagangan terbuka terakhir sekurang-kurangnya DistanceMartingalePips. Jika kedua-dua syarat dipenuhi, ia mengira nextLot dengan mendarabkan s_currentLot dengan LotMultiplier. Ia menentukan arah orderToOpen (sama ada dalam arah yang sama seperti siri atau bertentangan, berdasarkan ReverseMartingale). Ia memanggil OpenTradeLogic() untuk membuka posisi baru yang didarab, meneruskan siri Martingale. Ringkasan Strategi EA "Babi Ngepet" melaksanakan strategi Martingale yang berisiko tetapi berpotensi tinggi dengan kombinasi kemasukan awal breakout/pembalikan julat: Kemasukan Awal: EA meletakkan satu Buy Limit (di bawah rendah terkini) dan satu Sell Limit (di atas tinggi terkini). Ini mencadangkan andaian awal tingkah laku terikat julat—ia memasuki pembelian apabila harga turun ke rendah, dan menjual apabila harga naik ke tinggi. Pengurusan Perdagangan: Jika salah satu perdagangan awal dicetuskan dan posisi bergerak ke dalam kerugian agregat (keuntungan terapung negatif), dan harga terus bergerak bertentangan dengan posisi terbuka oleh jarak yang ditetapkan, EA membuka posisi baru dalam arah yang sama dengan saiz lot yang lebih besar (Martingale). Strategi Keluar: Siri perdagangan terus meningkatkan saiz lot sehingga keuntungan terapung agregat semua perdagangan dalam siri mencapai SecureProfitMartingaleTarget, pada ketika itu semua posisi ditutup, dan EA mengatur semula untuk siri baru. Amaran: Strategi Martingale dikenali dengan penarikan balik yang tinggi dan risiko kehilangan modal yang tinggi kerana saiz lot meningkat selepas setiap langkah kerugian.
2025.10.05