• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)

Bagaimana cara membuat close order dengan Moving Avarage?

mastah2 mau nanyak caranya biar pas price cross MA order nya ke close, mohon pencerahan

Ini maksudnya saat ada cross MA seluruh order akan = close ya?
Silakan coba code berikut ini:


Code:
//Fungsi untuk menutup semua posisi terbuka
void CloseAllOpenPositions(){
 for(int i = OrdersTotal() - 1; i >= 0; i--){
 if(OrderSelect(i, SELECT_BY_POS)){
//Memeriksa apakah order adalah posisi yang terbuka
 if(OrderType() == OP_BUY || OrderType() == OP_SELL){
 bool closed = OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);
 if(closed){
 Print("Posisi tertutup: ", OrderTicket());
} else {
 Print("Gagal menutup posisi: ", OrderTicket(), " Error: ", GetLastError());
}
}
}
}
}

//Fungsi untuk memeriksa apakah MA 20 sudah crossing dengan MA 50
bool CheckMACross(){
 double ma20Current = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);//MA 20 saat ini
 double ma50Current = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 0);//MA 50 saat ini
 double ma20Previous = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1);//MA 20 sebelumnya
 double ma50Previous = iMA(NULL, 0, 50, 0, MODE_SMA, PRICE_CLOSE, 1);//MA 50 sebelumnya

//Mengecek persilangan MA
 if ((ma20Previous < ma50Previous && ma20Current > ma50Current) || (ma20Previous > ma50Previous && ma20Current < ma50Current)){
 return true;//MA crossing terjadi
}
 return false;//Tidak ada persilangan
}

//Fungsi yang dijalankan setiap ada MA cross
void hapusSaatCross(){
//Mengecek apakah ada crossing antara MA 20 dan MA 50
 if(CheckMACross()){
//Menutup semua posisi terbuka jika ada crossing
 CloseAllOpenPositions();
 Print("MA 20 crossing dengan MA 50, posisi-posisi telah ditutup.");
}
}

OK, selamat mencoba .. happy coding :):):bob:
 
Back
Top