OrderClose non funziona - pagina 4

 

Ciao,

Ho compilato il seguente, ha ottenuto errori come questo: Posso sapere quale parte è andata male?


'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);
  }
//+------------------------------------------------------------------+
 
Confrontare le due linee.
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2)  OrderClose(OrderTicket(),Lots,Ask,3,Red);
 

Il rapporto di errore ti dice dov'è l'errore

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

e se fai doppio clic sull'errore, il cursore viene portato direttamente al problema

 

Ciao GumRai,


Grazie, ho risolto il problema. L'errore deriva dalle parentesi inserite accidentalmente.

 

Grazie WHRoeder.

È

 

Ciao thrdel,

Time[0] si riferisce al tempo della barra 0? C'è Time[1], Time [2] ecc? Ho provato a cercarlo su Google ma non ci sono molte informazioni su internet. Inoltre, se collego questo EA a due coppie di valute, significa che OrderSelect seleziona solo gli ordini nel grafico stesso o tutti gli ordini nel terminale?

 

Ciao thrdel,


Perché ricevo questo messaggio di avvertimento "conversione implicita da 'numero' a 'stringa' postin forum.mq4 69 61" per la codifica " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?

 
chuale:

Time[0] si riferisce al tempo della barra 0? C'è Time[1], Time [2] ecc.


chuale:

Ho provato a cercarlo su Google ma non ci sono molte informazioni su internet.

http://bit.ly/1fJi4XA

chuale:

Inoltre, se collego questo EA a due coppie di valute, significa che OrderSelect seleziona solo gli ordini nel grafico stesso o tutti gli ordini nel terminale?

dipende dal tuo codice

 
Grazie qiol
 
chuale:

Ciao thrdel,


Perché ricevo questo messaggio di avvertimento "conversione implicita da 'numero' a 'stringa' postin forum.mq4 69 61" per la codifica " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());"?


"La conversione implicita da 'numero' a 'stringa'" può essere una spina nel fianco quando si hanno grandi cicli.

Significa dover scorrere un sacco di righe nel rapporto di errore.

Nel tuo caso GetLastError() è un codice intero, quindi ti sta solo avvertendo che sarà convertito in una stringa per l'istruzione di stampa.

Se siete felici che non sia un problema, allora potete aggiungere (string) per fermare questi fastidiosi avvertimenti.

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

Per inciso, se non lo sapeste-

Di solito metto questo dopo gli Externs/Inputs

#include <stdlib.mqh>

e poi puoi usare

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

In modo che la descrizione dell'errore venga stampata, non solo il codice

Motivazione: