Dalam dunia trading, pengurusan risiko adalah kunci kejayaan. Apabila satu trade ditutup menggunakan Stop Loss, volum yang digunakan akan digandakan. Sebaliknya, jika ditutup melalui Take Profit, volum minimum akan digunakan. Untuk mengetahui sama ada satu trade dilakukan selepas pengaktifan Stop Loss atau Take Profit, anda boleh menggunakan fungsi OnTradeTransaction.
Dalam build 1625, terdapat penambahan yang hebat, iaitu enumerasi ENUM_DEAL_REASON. Berikut adalah maklumat mengenai enumerasi ini:
| ENUM_DEAL_REASON | Keterangan Sebab |
|---|---|
| ... | ... |
| DEAL_REASON_SL | Operasi ini dilaksanakan sebagai hasil daripada pengaktifan Stop Loss |
| DEAL_REASON_TP | Operasi ini dilaksanakan sebagai hasil daripada pengaktifan Take Profit |
| ... | ... |
Anda boleh menyemak ini dalam OnTradeTransaction. Dengan kata lain, ia adalah cara yang sangat mudah dan boleh dipercayai untuk menentukan sama ada satu trade adalah hasil daripada Take Profit atau Stop Loss.
Setakat ini, dalam build 1626, EA ini hanya boleh disemak dalam ujian langsung dengan melancarkannya di atas carta atau dalam mod debug pada data sebenar (tekan F5 dalam MetaEditor). Saya menggunakan strategi berikut untuk mengatasi masalah ini:
Dalam OnTradeTransaction, kita boleh menentukan sama ada Take Profit atau Stop Loss yang diaktifkan:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
Siaran berkaitan
- Pemprosesan Pesanan Visual - Sistem Trading untuk MetaTrader 4
- Sistem Perdagangan Automatik 'Combo' - EA untuk MetaTrader 4
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic