订单关闭不工作 - 页 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

如果你双击错误,光标会被直接带到问题所在。

 

嗨,GumRai。


谢谢,我把它修好了。这个错误来自于不小心插入的括号。

 

谢谢你,WHRoeder。


 

嗨,threwel。

Time[0]是指第0条的时间吗?是否有Time[1],Time[2]等?我试着用谷歌搜索了一下,但网上的信息不多。另外,如果我把这个EA连接到两个货币对 上,这是否意味着OrderSelect只选择图表本身的订单,还是终端的所有订单?

 

嗨,threwel。


为什么我得到这个警告信息 "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]等?

是的。

丘尔

我试着在谷歌上搜索了一下,但网上的信息不多。

http://bit.ly/1fJi4XA

chuale:

另外,如果我把这个EA连接到两个货币对上,这是否意味着OrderSelect只选择图表本身的订单,还是终端的所有订单?

取决于你的代码

 
谢谢 qiol
 
chuale:

嗨,threwel。


为什么我得到这个警告信息 "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() ) );

这样就可以打印出错误的描述,而不仅仅是代码。