Salah satu kehebatan EA ini adalah fungsi kiraan pesanan, yang membolehkan kita mengira berapa banyak pesanan yang masih terbuka tanpa mengira breakeven.
int OrdersCounter() { int counter=0; //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // jika pesanan dibuka oleh EA ini { //--- jika breakeven telah berlaku /* Untuk pembelian, jika StopLoss sama atau di atas harga buka, dan untuk jualan, di bawah harga buka */ double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // Jika breakeven dan trailing stop belum berlaku { counter++; // kira posisi } } return counter; }
Kita hanya mengira pesanan yang tidak mempunyai stoploss yang sama atau lebih tinggi dari harga buka untuk pembelian, dan lebih rendah untuk jualan. Ringkasnya, kita mengira semua pesanan yang belum mencapai breakeven atau di mana trailing stop belum melindungi harga buka.
double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // Jika hanya breakeven dan trailing stop belum berlaku
Dengan itu, kita menghasilkan satu kiraan yang mengembalikan nilai yang akan kita gunakan untuk mengehadkan maksimum posisi, dan dalam kes kita, kita set kepada 1 pesanan pada satu masa.
if(OrdersCounter()<MaximumOrders)Apabila breakeven berlaku, fungsi ini akan mengabaikan pengiraannya. Oleh itu, jika kita hanya mempunyai satu posisi dalam contoh ini, ia akan mengembalikan null dan boom, kita boleh membuka satu lagi jualan dan proses ini berterusan.
Ini juga tidak akan mungkin dilakukan jika saya tidak membuat fungsi breakeven,
void BreakEvenFunction() { //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) { // untuk pembelian, jika Bid di atas Harga Buka + Pips Breakeven, dan sebaliknya untuk jualan double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice()); /* Untuk pembelian, hanya jika StopLoss sama atau di atas Harga Buka, sebaliknya untuk jualan */ if(xHybrid) { bool modify = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE); } } }
Jadi, bagaimana? Cubalah!
Siaran berkaitan
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta Sinyal Dagangan Menggunakan Pola Candlestick Hammer dan Hanging Man
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI
- MQL5 Wizard: Sinyal Perdagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines dan RSI