OrderClose не работает - страница 4

 

Здравствуйте,

Я скомпилировал следующее, но получил ошибку: Могу ли я узнать, какая часть пошла не так?


'postin forum.mq4'      postin forum.mq4        1       1
',' - unexpected token  postin forum.mq4        59      53
expression has no effect        postin forum.mq4        59      54
1 error(s), 1 warning(s)                2       2
//+------------------------------------------------------------------+
//|                                                       chuale.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.abc.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.abc.com"
#property version   "1.00"
#property strict

extern double   TakeProfit=500;
extern double   Lots=0.1;
extern double   StopLoss=300;

double     bar1;
double     bar2;
double     bar3;
int        total,ticket;
//datetime   previousTime; 

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  
//---
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {

  total=OrdersTotal();
      bar1=(iClose(Symbol(),PERIOD_M1,2)-iClose(Symbol(),PERIOD_M1,3))*100;
      bar2=(iClose(Symbol(),PERIOD_M1,1)-iClose(Symbol(),PERIOD_M1,2))*100;
      bar3=(iClose(Symbol(),PERIOD_M1,0)-iClose(Symbol(),PERIOD_M1,1))*100;
     Comment("Bar1="+DoubleToString(bar1,Digits)+"\n"+
             "Bar2="+DoubleToString(bar2,Digits)+"\n"+
             "Bar3="+DoubleToString(bar3,Digits)+"\n"
             );
                         
   if(total>0)
   {
   OrderSelect(0,SELECT_BY_POS);
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2) OrderClose(OrderTicket(), Lots,Ask,3,Red);
   }
   //if(Time[0]==previousTime) return(0);
   //previousTime=Time[0];
   if(total<1)
     {
      if (bar3>1)
      {  
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Chua EA",12345,0,Green);
      //if(ticket<0)Print("Error OP_BUY order failed, error:"+GetLasterror());
      return(0);
      }
      
      if (bar3<-1)
      {
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid+-TakeProfit*Point,"Chua EA",12345,0,Red);
      //if(ticket<0)Print("Error OP_SELL order failed, error:"+GetLasterror());
      return(0);
      }
     }
   
   return(0);
  }
//+------------------------------------------------------------------+
 
Сравните две линии.
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2)  OrderClose(OrderTicket(),Lots,Ask,3,Red);
 

В отчете об ошибке указано, где находится ошибка

',' - неожиданный токен postin forum.mq4 59 53

и если вы дважды щелкните по ошибке, курсор переместится прямо на проблему

 

Привет, ГумРай,


Спасибо, я все исправил. Ошибка возникает из-за случайно вставленных круглых скобок.

 

Спасибо вам, WHRoeder.

Это

 

Привет, Трдель,

Time[0] относится к времени бара 0? Есть ли Time[1], Time [2] и т.д.? Я пытался погуглить, но в интернете не так много информации. Также, если я прикреплю этот советник к двум валютным парам, означает ли это, что OrderSelect выбирает только ордера на самом графике или все ордера в терминале?

 

Здравствуйте,


Почему я получаю это предупреждение "implicit conversion from 'number' to 'string' postin forum.mq4 69 61" для кодировки " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?

 
chuale:

Относится ли Time[0] к времени бара 0? Существует ли Time[1], Time [2] и т.д.?

Да

chuale:

Я пробовал гуглить, но в интернете не так много информации.

http://bit.ly/1fJi4XA

chuale:

Также, если я прикреплю этот советник к двум валютным парам, означает ли это, что OrderSelect выбирает только ордера на самом графике или все ордера в терминале?

зависит от вашего кода

 
Спасибо qiol
 
chuale:

Привет, Трдель,


Почему я получаю это предупреждение "implicit conversion from 'number' to 'string' postin forum.mq4 69 61" для кодировки " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?


"Неявное преобразование из 'числа' в 'строку'" может быть болью в заднице, когда у вас большие циклы.

Это означает необходимость прокручивать множество строк в отчете об ошибках.

В вашем случае GetLastError() - это целочисленный код, поэтому он просто предупреждает вас о том, что он будет преобразован в строку для оператора печати.

Если вы уверены, что это не проблема, то можете добавить (string), чтобы прекратить эти раздражающие предупреждения.

if(ticket<0)   Print("Error OP_BUY order failed, error:" + (string) GetLastError());

Кстати, если вы не знали...

Я обычно помещаю это после Externs/Inputs

#include <stdlib.mqh>

и затем вы можете использовать

if(ticket<0)   Print("Error OP_BUY order failed, error: " + ErrorDescription(GetLastError() ) );

Чтобы выводилось описание ошибки, а не только код.

Причина обращения: