MetaTrader4
Lebih Banyak Trading Setelah Break Even - Strategi untuk MetaTrader 4
Halo para trader! Kali ini kita akan membahas tentang salah satu fitur menarik dari Expert Advisor yang dapat membantu kita dalam mengelola trading, terutama setelah mencapai break even.
Fungsi Penghitung Order
Salah satu keunggulan dari EA ini adalah fungsi penghitung order. Berikut adalah potongan kode yang akan kita bahas:
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 order dibuka oleh EA ini
{
//--- jika break even sudah terjadi
/* Untuk buy hanya jika StopLoss sama atau lebih tinggi dari Harga Buka. Catatan: Implementasi ini tidak cocok jika Anda memiliki Pending Orders. Hanya cocok untuk buy dan sell saja. */
double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
if(!XBreakeven) // Jika hanya Break Even dan trailing stop belum aktif'
{
counter++; // hitung posisi
}
}
return counter;
}
Pada dasarnya, kita hanya menghitung order yang belum memiliki stoploss yang sama atau lebih tinggi dari harga buka untuk buy, dan di bawah harga buka untuk sell. Singkatnya, kita menghitung semua order yang belum mencapai break even atau trailing stop belum melindungi harga buka.
double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
if(!XBreakeven) // Jika hanya Break Even dan trailing stop belum aktif'
Dari situ, kita membuat penghitung yang mengembalikan nilai yang akan kita gunakan untuk membatasi jumlah posisi maksimum kita, yang dalam contoh ini kita atur menjadi 1 order pada satu waktu.
if(OrdersCounter()<MaximumOrders)
Jadi, setiap kali break even terjadi, fungsi ini akan mengabaikan perhitungan tersebut. Dengan begitu, karena kita hanya memiliki satu posisi dalam contoh ini, fungsi ini akan mengembalikan nol dan boom, kita buka lagi penjualan dan proses ini berlanjut.
Fungsi Break Even
Ini semua tidak akan mungkin terjadi jika saya tidak membuat fungsi break even, berikut adalah contohnya:
void BreakEvenFunction()
{
//---
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
{
// untuk buy jika Bid di atas Harga Buka + pip Break Even, sebaliknya untuk sell
double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());
/* Hanya untuk buy jika StopLoss sama atau lebih tinggi dari Harga Buka, sebaliknya untuk sell */
if(xHybrid)
{
bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
}
}
}
Gimana, tertarik untuk mencobanya?
2021.07.13