EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: StickeT on กรกฎาคม 20, 2018, 10:56:48 am
-
ผมได้ลองฝึกเขียน EA ครับ แล้วทีนี้ในหนึ่งแท่งเทียนที่เป็นแท่งยาวๆ EA มันเปิดออเดอร์หลายครั้งในแท่งเดียวครับ อยากให้เปิดแค่ครั้งเดียวต้องแก้ยังไงหรือครับ รบกวนผู้รู้ด้วยครับ ผมมือใหม่หัดเขียนเรียนโค้ตครับ อาจมีอะไรที่ไม่ทราบอีกมาก
ผมได้เขียนคำสั่งเปิดออเดอร์ไว้แบบนี้ครับ สร้างเป็น function เอาไว้
void OpenBuy(){
double sl =Ask-SL*Point;
double tp =Ask+TP*Point;
OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,sl,tp,"My order",MagicNumber,0,clrGreen);
}
void OpenSell(){
double sl =Bid+SL*Point;
double tp =Bid-TP*Point;
OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,sl,tp,"My order",MagicNumber,0,clrRed);
}
และผมได้สร้างตัวนับออเดอร์เอาไว้แล้วครับ สร้างเป็น function เอาไว้
int CountOrder(int type){
int CntOrder = 0;
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType() == type && OrderMagicNumber()== MagicNumber){
if(OrderSymbol() == Symbol()){
CntOrder++;
}
}
}
return(CntOrder);
}
ขอรบกวนทุกท่านด้วยครับ
-
ตัวอย่างครับ
void countorder()
{
int total = OrdersTotal();
for (int pos = 0; pos < total; pos++)
{
if ( OrderSelect( pos, SELECT_BY_POS, MODE_TRADES ) )
if ( OrderSymbol() == Symbol() && OrderMagicNumber() == Magic )
{
if( OrderType()== OP_BUY )
{
if(bcount==0) { FirstBuy = OrderOpenPrice(); }
bcount++;
LastBuy=OrderOpenPrice();
LastBuyTime=OrderOpenTime();
TotalProfitBuy += OrderProfit();
}
else if( OrderType()== OP_SELL )
{
if(scount==0) { FirstSell = OrderOpenPrice(); }
scount++;
LastSell=OrderOpenPrice();
LastSellTime=OrderOpenTime();
TotalProfitSell += OrderProfit();
}
// BarFromOpen=iBarShift(Symbol(),PERIOD_M15,OrderOpenTime());
}
}
}