unmetered.co.id
New Member
- Credits
- 0
Salam Profit untuk semua.....
Saya mau tanya..., Pertanyaan saya ini mungkin sudah pernah di bahas di thread forum ini, namun kami juga perlu tanya lagi, sebab kode robot EA mengalami kegagalan ekseskusi Pending Order ( PO ).
Pertanyaannya :
1. Ketika salahsatu dari dari 2 pending order tereksekusi, bagaimana caranya agar 1 PO lainnya juga ikut tertutup.
Sebab kode robot di bawah ini, jika Pending Order Sell yang tereksekusi, maka Pending Order Buy, juga ikut tersekusi. Anehnya, jika Pending Order Buy tereksekusi, Pending Order Sell tidak tereksekusi.
2. Setelah profit dan sudah tertutup semua open posisi, kenapa robot EA ini tidak mau melakukan Pending Order lagi ? Tolong siapa saja yang bisa memperbaikinya, kami ucapkan terima kasih....
Saya mau tanya..., Pertanyaan saya ini mungkin sudah pernah di bahas di thread forum ini, namun kami juga perlu tanya lagi, sebab kode robot EA mengalami kegagalan ekseskusi Pending Order ( PO ).
Pertanyaannya :
1. Ketika salahsatu dari dari 2 pending order tereksekusi, bagaimana caranya agar 1 PO lainnya juga ikut tertutup.
Sebab kode robot di bawah ini, jika Pending Order Sell yang tereksekusi, maka Pending Order Buy, juga ikut tersekusi. Anehnya, jika Pending Order Buy tereksekusi, Pending Order Sell tidak tereksekusi.
2. Setelah profit dan sudah tertutup semua open posisi, kenapa robot EA ini tidak mau melakukan Pending Order lagi ? Tolong siapa saja yang bisa memperbaikinya, kami ucapkan terima kasih....
Code:
//+------------------------------------------------------------------+
//| Simple_EaPending.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| create by 4605 |
//+------------------------------------------------------------------+
extern int TakeProfit = 50;
extern int PipStep = 30;
extern double Lots = 0.3;
extern int LockProfit = 15;
extern int Magic = 4605;
extern bool UseTimeFilter = true;
extern int HourStart = 18;
extern int HourEnd = 24;
double lotx;
double point;
int iTrade = 0;
int buy,sell;
int init()
{
//----
if (Digits==3 || Digits==5)
{point=Point*10;}
else
{point=Point;}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(AccountBalance()+profit_daily()>AccountBalance())
{
ClosePending();
Comment("target tercapai");
return(0);
}
//-----------Start EA----------//
if(UseTimeFilter)
{
if((Hour() >= HourStart && Hour() <= HourEnd))
{
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP ,Lots,Ask+PipStep*point,0,0,Ask+PipStep*point+TakeProfit*point,"4605",Magic,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PipStep*point,0,0,Bid-PipStep*point-TakeProfit*point,"4605",Magic,0,Red);
}
}
}else
{
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP ,Lots,Ask+PipStep*point,0,0,Ask+PipStep*point+TakeProfit*point,"4605",Magic,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-PipStep*point,0,0,Bid-PipStep*point-TakeProfit*point,"4605",Magic,0,Red);
}
}
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)
{
buy++;
}
if (OrderType()== OP_SELL)
{
sell++;
}
}
if(buy>0){ClosePending();buy=0;}
if(sell>0){ClosePending(); sell=0;}
DO_LockSL();
//----
return(0);
}
//+------------------------------------------------------------------+
void DO_LockSL()
{
for(iTrade=0; iTrade<OrdersTotal(); iTrade++)
{
if(OrderSelect(iTrade, SELECT_BY_POS, MODE_TRADES))continue;
if(OrderSymbol()!=Symbol()) continue;
if(OrderType() == OP_BUY && OrderMagicNumber() == Magic)
{
if (Bid-OrderOpenPrice() > LockProfit*Point&& OrderStopLoss()<Bid-Point*LockProfit)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+1*Point,OrderTakeProfit(),0);
}
if(Bid-OrderStopLoss()>LockProfit*Point && OrderStopLoss()<Bid-Point*LockProfit)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-LockProfit*Point,OrderTakeProfit(),0);
}
}
if(OrderType() == OP_SELL && OrderMagicNumber() == Magic)
{
if (OrderOpenPrice()-Ask > LockProfit*Point&& OrderStopLoss()<Ask-Point*LockProfit)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-1*Point,OrderTakeProfit(),0);
}
if(OrderStopLoss()-Ask>LockProfit*Point && OrderStopLoss()<Ask-Point*LockProfit)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+LockProfit*Point,OrderTakeProfit(),0);
}
}
}
}
void ClosePending()
{
for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
{
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))continue;
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderType() > OP_SELL && OrderType() > OP_BUY) {
bool result=false;
result=OrderDelete(OrderTicket());}
}
return (0);
}
double profit_daily()
{
int Now_day = Day();
double profit = 0;
for (int count = 0; count < OrdersHistoryTotal(); count++)
{
if(OrderSelect(count, SELECT_BY_POS, MODE_HISTORY))continue;
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (TimeDay(OrderOpenTime()) == Now_day) profit += OrderProfit();
}
return (profit);
}