OrdemFechar não funciona - página 4

 

Hi,

Eu compenso os seguintes erros como este: Posso saber qual parte deu errado?


'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);
  }
//+------------------------------------------------------------------+
 
Compare as duas linhas.
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2)  OrderClose(OrderTicket(),Lots,Ask,3,Red);
 

O relatório de erro lhe diz onde está o erro

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

e se você clicar duas vezes sobre o erro, o cursor é levado diretamente ao problema

 

Olá GumRai,


Obrigado, consegui consertá-la. O erro vem dos parênteses inseridos acidentalmente.

 

Obrigado WHRoeder.

É

 

Oi thrdel,

O tempo[0] está se referindo à hora da barra 0? Existe Tempo[1], Tempo [2] etc.? Tentei pesquisar no Google, mas não há muita informação na Internet. Além disso, se eu anexar este EA a dois pares de moedas, isso significa que OrderSelect seleciona apenas as ordens no próprio gráfico ou todas as ordens no terminal?

 

Oi thrdel,


Por que recebo esta mensagem de aviso "conversão implícita de 'número' para 'string' postin forum.mq4 69 61" para a codificação " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?

 
chuale:

O tempo[0] está se referindo à hora da barra 0? Existe Tempo[1], Tempo [2] etc.?

Sim

chuale:

Tentei pesquisar no Google, mas não havia muita informação na Internet.

http://bit.ly/1fJi4XA

chuale:

Além disso, se eu anexar este EA a dois pares de moedas, isso significa que OrderSelect seleciona apenas as ordens no próprio gráfico ou todas as ordens no terminal?

depende de seu código

 
Obrigado qiol
 
chuale:

Oi thrdel,


Por que recebo esta mensagem de aviso "conversão implícita de 'número' para 'string' postin forum.mq4 69 61" para a codificação " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?


A "conversão implícita de 'número' para 'corda'" pode ser uma dor no traseiro quando se tem grandes laços.

Significa ter que percorrer muitas linhas no relatório de erro.

No seu caso, GetLastError() é um código inteiro, portanto é apenas um aviso de que ele será convertido em uma string para a declaração de impressão.

Se você estiver satisfeito por não ser um problema, então você pode adicionar (string) para parar estes avisos irritantes.

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

A propósito, se você não souber...

Normalmente coloco isto após os Externs/Inputs

#include <stdlib.mqh>

e então você pode usar

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

Para que a descrição do erro imprima, não apenas o código