unbalanced parantheses - страница 2

 

liana возьмите себе за правило в любой функции в любом выражении с начало заканчивать строку оформляющими элементами, и только потом вписывать тело.

Допустим вы используете оператор if, сразу ставьте помимо открывающей скобки закрывающей. Если поставили открывающую фигурную скобку, сразу строчкой ниже ставьте закрывающую. Пишете функцию допустим NormalizeDouble, сразу ставьте (,Digits); и потом перед запятой вписывайте что вы хотите округлить. Так вы не будите ошибаться. А со временем глаз привыкнет и вы сразу будите видеть эти мелочи. Если я сразу не могу найти ошибку, я вырезаю самостоятельные части кода и компилирую, ошибка сохранилась - вероятно не в этой части кода (если она в двух местах), затем вставляю этот кусок на место. Если используется какая-то функция и ее нужно проверить, вырежьте ее содержимое и также.

 
liana:
Спасибо (неправильно скопировала функцию Кима).
Сейчас исправила - опять пишет "ending braket expected

в последней функции после return(False); ещё одна скобка должна быть
 

Старайтесь изначально ставить комплект скобок с новой строки, потом уже в них вписывать что нужно. И если несколько функций вложено "матрёшкой", то не ленитесь на пару пробелов отступ сделать для каждой внутренней функции и больше тогда "пропавших" скобок не будет :)

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()){// нет отложенных

 

я не могу прочитать, МетаЕдитор у меня не поддерживает русскую кодировку

 
liana:

я не могу, МетаЕдитор не поддерживает русскую кодировку


Ищите у него в ветке : https://www.mql5.com/ru/forum/107476, там все есть. страницы так с 10 по моему
Причина обращения: