ตามนี้นะ คับ ท่าน admin พอดีอยากศึกษา ea เลยขอ ea เพื่อนเอามาลองดู เงื่อนไข การ buy และ sell ดูจากการเรียงกันของค่า ema
1. ema1>ema8>ema15>ema25>ema40 order buy ออกเมื่อ ema1<ema8
2. ema1<ema8<ema15<ema25<ema40 order sell ออกเมื่อ ema1>ema8
3. เปิด order ครั้งละ 1 order
ที่นี้พอเอา EA ไปใส่ 6 คู่่เงิน ตามภาพที่แนบมา คับ มันก็เปิดเพียงครั้งละหนึ่งออร์เดอร์ ทั้งที่คู่เงินอื่นๆ ก็เข้าเงื่อนไขแล้ว แต่ไม่เปิด
สิ่งที่ผมต้องการคือ จะต้องทำอย่างไรให้ ea ตัวเดียวกันใช้ได้กับหลายๆคู่เงิน เมื่อคู่ไหนเข้าเงื่อนไขก็เปิด โดยเปิดครั้งละแค่หนึ่งออร์เดอร์ต่อคู่เงิน
ผิดถูกประการใด ชี้แนะด้วย คับ
code ea ตัวนี้ คับ
int start()
{ double lotsize = 0.05;
double ma1 =iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
double ma8 =iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
double ma15 =iMA(NULL,0,15,0,MODE_EMA,PRICE_CLOSE,0);
double ma25 =iMA(NULL,0,25,0,MODE_EMA,PRICE_CLOSE,0);
double ma40 =iMA(NULL,0,40,0,MODE_EMA,PRICE_CLOSE,0);
double total=OrdersTotal();
//----
int ticket;
if(OrdersTotal()==0)
{if((ma1>ma8)&&(ma8>ma15)&&(ma15>ma25)&&(ma25>ma40))
{ticket=OrderSend(Symbol(),OP_BUY,lotsize,Ask,10,Ask-60*Point,0,"Buy",0,0,Yellow);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
return(0);
}
if((ma1<ma8)&&(ma8<ma15)&&(ma15<ma25)&&(ma25<ma40))
{ticket=OrderSend(Symbol(),OP_SELL,lotsize,Bid,10,Bid+60*Point,0,"Sell",0,0,Aqua);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
return(0);
}
}
//---- close ----
int i;
int Pos;
bool Result;
//----close------
if((total>0)&&(ma1<ma8))
{for(i=total-1; i>=0; i--)
{if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{Pos=OrderType();
if(Pos==OP_BUY || Pos==OP_SELL)
{if(Pos==OP_BUY)
Result=OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
}
}
}
}
//----close------
if((total>0) && (ma1>ma8))
{for(i=total-1; i>=0; i--)
{if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{Pos=OrderType();
if(Pos==OP_BUY || Pos==OP_SELL)
{if(Pos==OP_SELL)
Result=OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
}
//----
return(0);
}