Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: รบกวนช่วยดู EA ให้ทีคับ  (Read 10992 times)

TvT

  • Full Member
  • ***
  • Posts: 133
รบกวนช่วยดู EA ให้ทีคับ
« on: กุมภาพันธ์ 23, 2013, 02:58:25 pm »
อันนี้เขียนมา ปรากฏว่ามัน sell อย่างเดียว ใครพอบอกได้ว่า code ผิดจุดไหน

int start()
  {
double lotsize = 0.1;
double lastadx = iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1);
double high =  iHighest(NULL,0,MODE_HIGH,19,2);
double low =  iLowest(NULL,0,MODE_LOW,19,2);
double lasthigh = iHigh(NULL,0,1);
double lastlow =  iLow(NULL,0,1);
double close = iClose(NULL,0,1);
double ma14 =  iMA(NULL,0,14,0,MODE_SMA,PRICE_CLOSE,1);
double ma20 =  iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);
double upperBB = double iBands(NULL,0,14,2,0,PRICE_CLOSE,MODE_UPPER,1);
double lowerBB = double iBands(NULL,0,14,2,0,PRICE_CLOSE,MODE_LOWER,1);
double total = OrdersTotal();

   
//----
int ticket;
if ((total == 0) && (lastadx > 25))
   {
   if ((close > high) && (ma14 > ma20))
   {
      ticket = OrderSend(Symbol(),OP_BUY,lotsize,Ask,3,lowerBB,0,"Buy",0,0,Green);
      OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
      return(0);       
   }
   
   if ((close < low) && (ma14 < ma20))
   {
      ticket = OrderSend(Symbol(),OP_SELL,lotsize,Bid,3,upperBB,0,"sell",0,0,Red);
      OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
      Print("sell");
      return(0);       
   }
   }         
//---- close ----
int    i,Pos;
bool   Result;
//----close all buy
if((total>0) && (close < lowerBB))
  {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 all sell
if((total>0) && (close > upperBB))
  {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);
  }

ขอบคุณครับ
« Last Edit: กุมภาพันธ์ 23, 2013, 03:03:23 pm by TvT »

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนช่วยดู EA ให้ทีคับ
« Reply #1 on: กุมภาพันธ์ 23, 2013, 04:43:05 pm »
ผิดตรง 2 อันเนี้ยครับ

double high =  iHighest(NULL,0,MODE_HIGH,19,2);
double low =  iLowest(NULL,0,MODE_LOW,19,2);

TvT

  • Full Member
  • ***
  • Posts: 133
Re: รบกวนช่วยดู EA ให้ทีคับ
« Reply #2 on: กุมภาพันธ์ 23, 2013, 04:46:35 pm »
เอ่อ ยังไงครับต้องแก้เป็นอะไรหรือครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนช่วยดู EA ให้ทีคับ
« Reply #3 on: กุมภาพันธ์ 23, 2013, 05:21:10 pm »
จากโค้ดผมคิดว่าทุนต้องการหา  ราคาสูงสุด กับราคาต่ำสุด ใช่ไหมครับ

แต่คำสั่ง iHighest มันไม่ได้ให้ราคาสูงสุด  แต่มันให้  แท่งกราฟที่  ราคาสูงสุด

สมมุติกราฟมี 10 แท่ง  แท่งที่ราคาสูงสุดคือ แท่งที่ 3  มันก๋จะได้ค่าออกมาเท่ากับ 3

แล้วพอเอาไป  if(close > high ) มันก็ไม่มีทางเป็นไปได้  เพราะราคาอียูสูงสุดไม่เกิน 1.6

และที่มันเซลอย่างเดียว  เพราะ ราคาอียูหรือคู่อื่นๆก็เถอะ มันต่ำกว่า 2 ตลอด ดังนั้นพอ ma เข้าเงื่อนไขมันก็เซลทันที  เซลข้างบนก็มี  ทั้งที่จริงแล้วต้องเซลข้างล่างอย่างเดียว

TvT

  • Full Member
  • ***
  • Posts: 133
Re: รบกวนช่วยดู EA ให้ทีคับ
« Reply #4 on: กุมภาพันธ์ 23, 2013, 06:42:33 pm »
แจ่มแจ้งเลย ขอบคุณครับ