error code 5004 ครับ

  • 4 replies
  • 891 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

*

ออฟไลน์ gaothun

  • **
  • 105
  • 0

error code 5004 ครับ

« เมื่อ: 12, เมษายน 2019, 09:44:47 PM »
ไฟล์ตัวนี้มันเปิดได้คู่เดียวครับ อยากให้เปิดได้หลายคู่ครับ ไม่รู้แก้อย่างไร ครับ



int init()
  {
//----

 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

 
//----
   return(0);
  }

int OpenTradesForMNandPairType(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
       if (OrderSymbol()== sOrderSymbol)
        {
          if (OrderMagicNumber()==iMN)
            {
              retval++;
            }       
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
  int TotalTradesForMNandPairType(string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
       if (OrderSymbol()== sOrderSymbol)
        {         
              retval++;
             
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
  int CloseTradesForMNandPairType(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersHistoryTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_HISTORY);
       // check for opened position, symbol & MagicNumber
       if (OrderSymbol()== sOrderSymbol)
        {
          if (OrderMagicNumber()==iMN)
            {
              retval++;
            }       
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
 
  int CloseAll(double iMN)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();
   

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
     
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
      int type   = OrderType();
      if(type == OP_BUY){
       Print(OrderMagicNumber());
      if (OrderMagicNumber()==iMN)
            {
             
              OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3);
            } 
         
      }
      else{}
     } // for loop

   return(0);
  }
 
  int CloseTrade(double iMN, string cmm)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();
   
   for(icnt = itotal - 1; icnt >= 0 ; icnt--)
   //for(icnt=0;icnt<itotal;icnt++) // for loop
     {
     
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
      int type   = OrderType();
      if(type == OP_BUY){
       //Print(OrderMagicNumber());
      if ((OrderMagicNumber()==iMN)&&(OrderComment()==cmm))
            {
             
              OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3);
            } 
         
      }
      else{}
     
     } // for loop

   return(0);
  }   
 
  int CloseTrade1(double iMN, string cmm)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

  for(icnt = itotal - 1; icnt >= 0 ; icnt--)
   //for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
      int type   = OrderType();
      if(type == OP_SELL){
          if ((OrderMagicNumber()==iMN)&&(OrderComment()==cmm))
            {
              OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3);
            } 
         
     
      }
      else{}
     } // for loop
     return(0);
  }
 
  int CloseTrade2(double iMN)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
      int type   = OrderType();
      if(type == OP_BUYSTOP){
       if (OrderMagicNumber()==iMN)
            {
               OrderDelete(OrderTicket());
            } 
     
       
      }
      else{}
     } // for loop

   return(0);
  }   
 
  int CloseTrade3(double iMN)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
      int type   = OrderType();
      if(type == OP_SELLSTOP){
          if (OrderMagicNumber()==iMN)
            {
               OrderDelete(OrderTicket());
            } 
      }
      else{}
     } // for loop
     return(0);
  }
 
  int TotalBuy(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
        if( (OrderType()==OP_BUY) ) {
              if (OrderMagicNumber()==iMN)
            {
              retval++;
            } 
             
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
 
  int TotalSell(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
        if( (OrderType()==OP_SELL) ) {
              if (OrderMagicNumber()==iMN)
            {
              retval++;
            } 
             
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
 
  int TotalBuyStop(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
        if( (OrderType()==OP_BUYSTOP) ) {
              if (OrderMagicNumber()==iMN)
            {
              retval++;
            } 
             
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
 
  int TotalSellStop(double iMN, string sOrderSymbol)
  {
   int icnt, itotal, retval;
   retval=0;
   itotal=OrdersTotal();

   for(icnt=0;icnt<itotal;icnt++) // for loop
     {
      OrderSelect(icnt, SELECT_BY_POS, MODE_TRADES);
       // check for opened position, symbol & MagicNumber
        if( (OrderType()==OP_SELLSTOP) ) {
              if (OrderMagicNumber()==iMN)
            {
              retval++;
            } 
             
        } // sOrderSymbol
     } // for loop

   return(retval);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int bs = 0;

int start()
  {
 
  datetime tcur = TimeCurrent();
  datetime opentime,closetime;
  string ordertype;
 
 
  double max;
  double min ;
 
  double lot = Lots;
  int    spread = MarketInfo(Symbol(),MODE_SPREAD);
  double profit = Ask + Point*TakeProfit; 
  double stoploss = Ask - Point*StopLoss;
  double sprofit = Bid - Point*TakeProfit; 
  double sstoploss = Bid + Point*StopLoss;
  int TS = 0;
  //double stoploss1 = 0;
  if(TakeProfit == 0)
  {
   profit = 0;
   sprofit = 0;
  }
 
  if(StopLoss == 0)
  {
   stoploss = 0;
   sstoploss = 0;
  } 
 
  int zz = 0;
  int l3 = 0;
  int ticket;
  int total,total1;

 if(0.01 == MarketInfo(0,MODE_MINLOT))
 {
   lot = NormalizeDouble(lot,2);
   
   if(lot < 0.01){lot = 0.01;}
   else{}
 }
 else if(0.1 == MarketInfo(0,MODE_MINLOT))
 {
   lot = NormalizeDouble(lot,1);
   
   if(lot < 0.1){lot = 0.1;}
   else{}
 }
 else if(1.0 == MarketInfo(0,MODE_MINLOT))
 {
   lot = NormalizeDouble(lot,0);
   
   if(lot < 1.0){lot = 1.0;}
   else{}
 }
 else{} 
 
  dshow();   

//---
   ResetLastError();
   int file_handle=FileOpen(fileName,FILE_READ|FILE_TXT|FILE_ANSI);
   if(file_handle!=INVALID_HANDLE)
   {     
      int    str_size;
      string str;
      //--- read data from the file
      int count = 0;
      while(!FileIsEnding(file_handle))
        {
         str_size=FileReadInteger(file_handle,INT_VALUE);
         str=FileReadString(file_handle,str_size);
         if(count > 0)
         {
            string to_split=str;string sep=",";ushort u_sep;string result[];string comment;
            u_sep=StringGetCharacter(sep,0);   
            int k = StringSplit(to_split,u_sep,result);   
           
            if(k == 3)     
            {     
               opentime = StrToTime(result[1]);
               closetime = StrToTime(result[2]);
               ordertype = result[0];
               comment=result[1];
            }
                       
            total=OpenTradesForMNandPairType(Magic_Number, Symbol());
           
            if((total < 1)&&(k == 3)&&(tcur >= opentime)&&(tcur <= opentime+300))
            {   
             if((ordertype == "BUY")&&(getlastordercloseprofit() >= 0))
             {           
                  OrderSend(Symbol(),OP_BUY,lot,Ask,3,stoploss,profit,comment,Magic_Number,0,Green);
             }       
             else if((ordertype == "SELL")&&(getlastordercloseprofit() >= 0))
             {
                  OrderSend(Symbol(),OP_SELL,lot,Bid,3,sstoploss,sprofit,comment,Magic_Number,0,Red);
             }
             else if((ordertype == "BUY")&&(getlastordercloseprofit() < 0))
             {           
                  OrderSend(Symbol(),OP_BUY,OrderLots()*LotsMultiply,Ask,3,stoploss,profit,comment,Magic_Number,0,Green);
             }       
             else if((ordertype == "SELL")&&(getlastordercloseprofit() < 0))
             {
                  OrderSend(Symbol(),OP_SELL,OrderLots()*LotsMultiply,Bid,3,sstoploss,sprofit,comment,Magic_Number,0,Red);
             }
             else{}
            }     
            else
            {
             if((tcur >= closetime))
             {
                  CloseTrade(Magic_Number,comment); 
                  CloseTrade1(Magic_Number,comment);               
             }   
             else{}
            }               
         }
         count++;
        }     
      FileClose(file_handle);
   }
   else{PrintFormat("Failed to open %s file, Error code = %d",fileName,GetLastError());}
     
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

void dshow() {

     if (ObjectFind("BG") < 0) {
         ObjectCreate("BG", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("BG", "g", 130, "Webdings", DeepSkyBlue);
         ObjectSet("BG", OBJPROP_CORNER, 0);
         ObjectSet("BG", OBJPROP_BACK, TRUE);
         ObjectSet("BG", OBJPROP_XDISTANCE, 0);
         ObjectSet("BG", OBJPROP_YDISTANCE, 15);
      }
      if (ObjectFind("BG1") < 0) {
         ObjectCreate("BG1", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("BG1", "g", 130, "Webdings", DimGray);
         ObjectSet("BG1", OBJPROP_BACK, FALSE);
         ObjectSet("BG1", OBJPROP_XDISTANCE, 0);
         ObjectSet("BG1", OBJPROP_YDISTANCE, 42);
      }
      if (ObjectFind("BG2") < 0) {
         ObjectCreate("BG2", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("BG2", "g", 130, "Webdings", DimGray);
         ObjectSet("BG2", OBJPROP_CORNER, 0);
         ObjectSet("BG2", OBJPROP_BACK, TRUE);
         ObjectSet("BG2", OBJPROP_XDISTANCE, 0);
         ObjectSet("BG2", OBJPROP_YDISTANCE, 42);
      }
      if (ObjectFind("NAME") < 0) {
         ObjectCreate("NAME", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("NAME", "Leo Timing EA - " + Symbol(), 9, "Arial Bold", Black);
         ObjectSet("NAME", OBJPROP_CORNER, 0);
         ObjectSet("NAME", OBJPROP_BACK, FALSE);
         ObjectSet("NAME", OBJPROP_XDISTANCE, 5);
         ObjectSet("NAME", OBJPROP_YDISTANCE, 23);
      }
      if (ObjectFind("BG3") < 0) {
         ObjectCreate("BG3", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("BG3", "g", 110, "Webdings", DimGray);
         ObjectSet("BG3", OBJPROP_CORNER, 0);
         ObjectSet("BG3", OBJPROP_BACK, TRUE);
         ObjectSet("BG3", OBJPROP_XDISTANCE, 0);
         ObjectSet("BG3", OBJPROP_YDISTANCE, 73);
      }
      if (ObjectFind("BG5") < 0) {
         ObjectCreate("BG5", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("BG5", "g", 130, "Webdings", DimGray);
         ObjectSet("BG5", OBJPROP_CORNER, 0);
         ObjectSet("BG5", OBJPROP_BACK, FALSE);
         ObjectSet("BG5", OBJPROP_XDISTANCE, 0);
         ObjectSet("BG5", OBJPROP_YDISTANCE, 73);
      }


   Comment(""
      + "\n"
      + "\n"
      + "\n"
      + "EXPERT VERSION: 1.0 "
      + "\n"
      + "======================="
      //+ "\n"
      //+ "-----------------------------------------------------------------------------------"
      //+ "\n"
      //+ "AUTHENTICATION STATUS"
      //+ "\n"
      //+ "-----------------------------------------------------------------------------------"
      //+ "\n"
      //+ "STATUS MESSAGE:   " + gs_396
      //+ "\n"
      //+ "-----------------------------------------------------------------------------------"
      + "\n"
      + "ACCOUNT INFORMATION"
      + "\n"
      + "-----------------------------------------------------"
      + "\n"
      //+ "Account Name:                " + AccountName()
      //+ "\n"
      + "Account Number:             " + AccountNumber()
      + "\n"
      //+ "Account Type:                 " + gs_live_380
      //+ "\n"
      + "Account Leverage:           1:" + DoubleToStr(AccountLeverage(), 0)
      + "\n"
      + "Account Balance:             " + DoubleToStr(AccountBalance(), 2)
      + "\n"
      + "Account Equity:               " + DoubleToStr(AccountEquity(), 2)
      + "\n"
      + "Server Time:                   " + TimeToStr(TimeCurrent(), TIME_SECONDS)
      + "\n"
      + "=======================" + "\n"
      + "Successfully"     
      );
     
}

void DrawPriceHHLine(datetime x1, datetime x2, double y1,
                        double y2, color lineColor, double style)
  {
   string label = "MACD_DivergenceHHLine.0# " + DoubleToStr(x2, 0);
   ObjectDelete(label);
   ObjectCreate(label, OBJ_HLINE, 0, x2, y2, 0, 0);
   ObjectSet(label, OBJPROP_RAY, 0);
   ObjectSet(label, OBJPROP_COLOR, lineColor);
   ObjectSet(label, OBJPROP_STYLE, style);
  }

  double getlastordercloseprofit()
  {     
   for(int i = (OrdersHistoryTotal()-1); i >= 0; i --)
   {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
           
      if((OrderMagicNumber()==Magic_Number)) {         
          if((OrderType() == OP_BUY)||(OrderType() == OP_SELL))
          {
               return(OrderProfit());
          }
          else{}         
      }       
      else{}                 
   } 
   return(0.0);
  } 

Share Topic.

« แก้ไขครั้งสุดท้าย: 14, เมษายน 2019, 08:57:43 AM โดย gaothun »

traderider forex ไทย
*

ออฟไลน์ admin

  • *
  • 65,374
  • 2614

Re: error code 5004 ครับ

« ตอบกลับ #1 เมื่อ: 12, เมษายน 2019, 09:45:43 PM »
เดี๋ยว รอ programmer เรามาตอบนะครับ
 (TH)**
"เอาชนะใจตัวเองให้ได้ ก่อนที่จะไปเอาชนะตลาด"

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

Re: error code 5004 ครับ

« ตอบกลับ #2 เมื่อ: 12, เมษายน 2019, 10:47:53 PM »
error code 5004

https://docs.mql4.com/constants/errorswarnings/errorcodes

5004

ERR_FILE_CANNOT_OPEN

Cannot open file

ลองเช็คว่าไฟล์  Leo Time Set.txt ในเครื่องมีหรือเปล่า  ถ้ามีตั้ง permission ให้เปิดได้หรือเปล่าครับ ลองเปิดแชร์ หรือตั้ง security ให้สิทธิดูครับ

*

ออฟไลน์ iRuler

  • *
  • 1,254
  • 39

Re: error code 5004 ครับ

« ตอบกลับ #3 เมื่อ: 13, เมษายน 2019, 08:35:56 AM »
คำถามว่า เปิดมากกว่า 1 คู่เงิน
อาจเป็นไปได้ว่า ไฟล์ที่เปิดไม่ได้ เพราะมีการเปิดใช้ไฟล์โดย ea ตัวก่อนหน้าแล้ว

ไฟล์จะถูกเปิดได้ทีละ 1 โปรเซส โดยจะต้องปิดไฟล์ก่อน โปรเซสอื่นถึงจะทำงานกับไฟล์นั้นๆ ได้

 (TH)**

*

ออฟไลน์ gaothun

  • **
  • 105
  • 0

Re: error code 5004 ครับ

« ตอบกลับ #4 เมื่อ: 13, เมษายน 2019, 11:02:49 AM »
ขอบคุณทุก ทุกท่านที่เข้ามาชี้แนะ และสอนเป็นวิทยาทานด้วยนะครับ


Tags:
 

เครื่องมือเทรด Forex

ข่าว Forex กราฟ Forex EURUSD GBPUSD GBPJPY ตารางข่าว Forex ร่วมงานกับเรา

เครื่องมือเทรดทองคำ

ราคาทอง วันนี้ ราคาทอง ย้อนหลัง SPDR ล่าสุด กราฟราคาทองคำ วิเคราะห์ ราคาทอง ข่าว ราคาทองคำ ข่าว ราคาน้ำมัน

โบรคเกอร์ Forex

XM Exness FBS Nordfx Land-FX Admiral Markets