不平衡的括号 - 页 2

 

在任何表达方式中,都要规定先用表单元素结束字符串,然后才写正文。

例如,如果你使用if语句,要放一个开头括号和一个结束括号。如果你放了一个开头的大括号,在它下面放一个结尾的大括号。当你写函数时,比如,NormalizeDouble,写上(,Digits);然后在逗号之前,写上你想四舍五入的内容。这样,你就不会犯错。而随着时间的推移,你的眼睛会习惯于它,你会立即看到这些小细节。如果我不能马上找到错误,我就把代码的独立部分剪掉,然后进行编译,错误可能不在这一部分(如果它在两个地方),然后我再把它贴回去。如果某些功能被使用并需要检查,就把它的内容剪掉,以此类推。

 
liana:
谢谢你(我把金的功能复制错了)。
现在我纠正了它--它说的是 "预期的结束括号"。

在最后一个函数中的return(False);后面应该有一个括号。
 

试着最初把一组括号放在新的一行,然后在括号里输入你需要的内容。如果几个函数嵌套在一个 "matryoshka "中,不要偷懒,将每个内部函数缩进几个空格,这样就不会再有 "丢失 "的括号了 :)

Function1()
{
  action1;
   Function2()
   {
     action2;
     action3;
   }
}
 

修复了它--仍然有问题。
谁能给我写一下如何正确地调用这两个金函数,如果没有订单,就开一个订单。

int pending;
int positions;
int ticket;
int magic=576;

int start() { 
//----
   pending = ExistOrders(NULL);
   if(pending >0 ) return(0); // ???? ???????? ????????? ???????? ?????? ????? ?? ???????
   positions = ExistPositions(NULL);
   if(positions >0) {
      return(0);     // ???? ?? ???????? ???? ?????????
   }
   else { // else ????????? ? ?????????? if
      ticket=OrderSend(Symbol(),OP_SELL,0,1,Bid,3,Bid+20*Point,Bid-40*Point,"",magic,0,Red);
     
   }
//----
   return(0);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Exist pending. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal(), ty;
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ty=OrderType();
      if (ty>1 && ty<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (ot<=OrderOpenTime()) return(True);
          }
        }
      }
    }
  }
  return(False);
}

//+----------------------------------------------------------------------------+
//|  Exist open positions. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
  }
 
liana:

修复了它--仍然有问题。
谁能给我写一下,调用这两个金氏函数,如果没有订单--开出订单,怎么做才是正确的。


应向函数传递参数,它们在函数描述中有所描述

ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0)

当从start()调用用户函数时,你应该把这些参数传给它

 
valenok2003:


必须传递给函数的参数,它们在函数描述中进行了描述

当从start()函数调用用户函数时,你必须将这些参数传递给它


我不需要这些参数。我只需要
2.检查当前图表符号上的任何位置
ExistPositions(NULL)。
但如何正确调用这个参数?

 
liana:


我不需要这些参数。我只需要 2。要检查当前图表工具上任何位置的可用性 ExistPositions(NULL); 但如何正确调用这个参数?


你是否需要检查是否有任何空缺职位
 
liana:


我不需要这些参数。我只需要
2.检查当前图表符号上的任何位置
ExistPositions(NULL)。
但如何正确调用这个参数?


在没有参数的情况下调用它。

if(!ExistPositions()){//没有空缺职位

if(!ExistOrders()){//没有待定的订单

 

我不能读它,我的MetaEditor不支持俄文编码

 
liana:

我不能,MetaEditor不支持俄语编码。


搜索他的主题:https://www.mql5.com/ru/forum/107476, 都在那里。从第10页开始,我想。