//+------------------------------------------------------------------+
//| 23 Dasar-Dasar MQL.mq4 |
//| Copyright 2017, SoeHoe.net |
//| https://SoeHoe.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, SoeHoe.net"
#property link "https://SoeHoe.net"
#property version "1.00"
#property strict
input int TakeProfit = 500;
input int StopLoss = 200;
input double Lots = 0.05;
input bool UseMM = False;
input string Notes = "Keterangan EA";
input bool Trailling = true;
input int TrailingStop = 15;
input int Magic = 1989;
double pt;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(Digits==3 || Digits==5) pt=10*Point; else pt=Point;
//---
if(jumlahorder (OP_BUY)==0){
if (jumlahorder(OP_BUY)==0){
NewOrder(0);
}
}
if(jumlahorder(OP_SELL)==0){
if (jumlahorder(OP_SELL)==0){
NewOrder(1);
};
};
if (jumlahorder(OP_SELL))Alert(jumlahorder(OP_SELL),"SELL");
if(jumlahorder(OP_BUY)) Alert(jumlahorder(OP_BUY),"BUY");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
return;
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
jumlahorder(0);
dtrailing();
return;
}
//+------------------------------------------------------------------+
int jumlahorder( int tipe)
{
int total=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic || OrderType()!=tipe) continue;
total++;
}
return(total) ;
}
//NewOrder();
//==========================================
//Membuat Order
void NewOrder(int CMD,string myNotes=""){
double pTP = 0, pSL=0, pMarket=0;
//ini merupakan jumlah buy
if(CMD==OP_BUY){
pMarket = Ask;
pTP = pMarket+TakeProfit*Point();
pSL = pMarket-StopLoss*Point();
}
//ini merupakan jumlah sell
if(CMD==OP_SELL){
pMarket = Bid;
pTP = pMarket-TakeProfit*Point();
pSL = pMarket+StopLoss*Point();
}
pTP = NormalizeDouble(pTP,Digits);
pSL = NormalizeDouble(pSL,Digits);
if(TakeProfit<=0) pTP = 0;
if(StopLoss<=0) pSL = 0;
int ticket = OrderSend(Symbol(),CMD,Lots,pMarket,0,pSL,pTP,myNotes,Magic);
}
//=========================================== INI CODE TRAILING STOP ===================================
void dtrailing()
{
int mod=0;
for(int i=0; i<OrdersTotal(); i++){
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic ) continue;
if(OrderType()==OP_BUY) {
if(Bid-OrderOpenPrice()>pt*TrailingStop) {
if((OrderStopLoss()<Bid-pt*TrailingStop) || (OrderStopLoss()==0)) {
mod= OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pt*TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
if(OrderType()==OP_SELL) {
if((OrderOpenPrice()-Ask)>(pt*TrailingStop)){
if(OrderStopLoss()>(Ask+pt*TrailingStop) || (OrderStopLoss()==0)){
mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pt*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}}
//=========================================== SELESAI CODE TRAILING STOP ===================================
void Komen(){
Comment("\nNomor Akun: ",Symbol(),
"\nNama : ",AccountName(),
"\nNama : ",AccountName(),
"\nNama : ",AccountName(),
"\nNama : ",AccountName(),
"\nNama : ",AccountName(),
"\nBalance : ",AccountBalance());
}
//=========================================== SELESAI CODE Untuk Komen ===================================