OrderClose no funciona - página 4

 

Hola,

Compilo lo siguiente y me da errores como este: ¿Puedo saber qué parte salió mal?


'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);
  }
//+------------------------------------------------------------------+
 
Compara las dos líneas.
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2)  OrderClose(OrderTicket(),Lots,Ask,3,Red);
 

El informe de error le indica dónde está el error

',' - token inesperado en forum.mq4 59 53

y si haces doble clic en el error, el cursor es llevado directamente al problema

 

Hola GumRai,


Gracias, lo he arreglado. El error viene de los paréntesis insertados accidentalmente.

 

Gracias WHRoeder.

Es

 

Hola thrdel,

¿Se refiere Time[0] al tiempo de la barra 0? ¿Existe Time[1], Time [2], etc.? He intentado buscar en Google pero no hay mucha información en Internet. Además, si adjunto este EA a dos pares de divisas, ¿significa que OrderSelect sólo selecciona las órdenes en el propio gráfico o todas las órdenes en el terminal?

 

Hola thrdel,


¿Por qué recibo este mensaje de advertencia "conversión implícita de 'número' a 'cadena' postin forum.mq4 69 61" para la codificación " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?

 
chuale:

¿El tiempo[0] se refiere al tiempo de la barra 0? ¿Existe el tiempo[1], el tiempo [2], etc.?


chuale:

He intentado buscar en google pero no hay mucha información en internet.

http://bit.ly/1fJi4XA

chuale:

Además, si adjunto este EA a dos pares de divisas, ¿significa que OrderSelect sólo selecciona las órdenes en el propio gráfico o todas las órdenes en el terminal?

depende de su código

 
Gracias qiol
 
chuale:

Hola thrdel,


¿Por qué recibo este mensaje de advertencia "conversión implícita de 'número' a 'cadena' postin forum.mq4 69 61" para la codificación " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?


"La conversión implícita de 'número' a 'cadena' puede ser un dolor de cabeza cuando tienes bucles grandes.

Significa tener que desplazarse por un montón de líneas en el informe de errores.

En tu caso GetLastError() es un código entero, por lo que sólo te está avisando de que se convertirá en una cadena para la sentencia print.

Si estás contento de que no sea un problema, puedes añadir (string) para detener estas molestas advertencias.

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

Por cierto, si no lo sabías-

Yo suelo colocar esto después de los Externs/Inputs

#include <stdlib.mqh>

y luego puedes usar

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

Para que se imprima la descripción del error, no sólo el código