Никак не пойму, как правильно расставлять скобки. Объясните пожалуйста в чем моя ошибка.
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); }
можно так, но тогда код больше строк занимает:
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); }
можно ещё так, но тогда возникают неудобства при редактировании:
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); }
например, если нужно удалить или переместить строку в которой открывающая скобка, то приходится делать дополнительные манипуляции.
Поэтому лучше 1 вариант.
лишняя фигурная закрывающая скобка в самой длинной строке
Если я ее убираю - пишет "ending braket expected"
Скопировала ваш вариант - опять пишет " unbalanced parantheses"
Скопировала ваш вариант - опять пишет " unbalanced parantheses"
да, вижу, щас исправлю
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); }
У меня почему-то все ваши варианты показывает "ending braket expected"В чем причина?
можно так, но тогда код больше строк занимает:
можно ещё так, но тогда возникают неудобства при редактировании:
например, если нужно удалить или переместить строку в которой открывающая скобка, то приходится делать дополнительные манипуляции.
Поэтому лучше 1 вариант.
Вот весь код. Как не исправляю - то пишет "ending braket expected", то " unbalanced parantheses" .
Помогите, уже час долбаюсь с этими скобками.
Хочу проверить нет ли открытых и отложенных ордеров и потом открыть ордер.
int pending; int positions; int ticket; int magic=576; int start() { //---- pending = ExistOrders(NULL); if(pending = True ) return(0); // ???? ???????? ????????? ???????? ?????? ????? ?? ??????? positions = ExistPositions(NULL); if(positions = True ) { 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); } } } } } }
liana:
Вот весь код. Как не исправляю - то пишет "ending braket expected", то " unbalanced parantheses" .
Помогите, уже час долбаюсь с этими скобками.
Хочу проверить нет ли открытых и отложенных ордеров и потом открыть ордер.
У вас оследняя функция ExistPositions не закрыта. И нет возвращаемого значения bool, тоже ошибка. То-есть если условия не выполняются, функция всё-равно должна что-то вернуть.
Будьте внимательны при копировании кодов.
У вас оследняя функция ExistPositions не закрыта. И нет возвращаемого значения bool, тоже ошибка.
Сейчас исправила - опять пишет "ending braket expected
int pending; int positions; int ticket; int magic=576; int start() { //---- pending = ExistOrders(NULL); if(pending = True ) return(0); // ???? ???????? ????????? ???????? ?????? ????? ?? ??????? positions = ExistPositions(NULL); if(positions = True ) { 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);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Никак не пойму, как правильно расставлять скобки. Объясните пожалуйста в чем моя ошибка.