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更好。
ilunga:
在最长的一行中,有一个额外的大括号
在最长的一行中,有一个额外的大括号
如果我去掉它,它说 "预计结束括号"。
valenok2003:
我复制了你的版本--它又说 "不平衡的括号"
liana:
我复制了你的版本,它又说 "不平衡的括号"。
我复制了你的版本,它又说 "不平衡的括号"。
是的,我明白了,我会修正它。
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); }
由于某些原因,你的所有选项都显示 "预计结束括号",这是什么原因?
valenok2003:
你可以这样做,但这样一来,代码需要更多行。
你也可以这样做,但这样你在编辑时就会有不便之处。
例如,如果你想删除或移动一个带有开括号的行,你必须做额外的操作。
这就是为什么选项1更好。
这里是所有的代码。无论我如何修复,它都说 "预计有结尾括号 "或 "不平衡的括号"。
帮助,我已经在这些托架上挣扎了一个小时了。
我想检查未结订单 和挂单,然后开立一个订单。
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:
下面是整个代码。无论我如何修复,它都说 "预计有结尾括号 "或 "不平衡的括号"。
帮助,我已经在这些支架上挣扎了一个小时了。
我想检查是否有任何未结和待定的订单,然后开立一个订单。
你的最后一个函数ExistPositions没有关闭。而且没有bool的返回值,这也是一个错误。也就是说,如果条件没有得到满足,该函数还是应该返回一些东西。
拷贝代码时要小心。
valenok2003:
你的最后一个函数ExistPositions没有关闭。而且没有bool的返回值,也是一个错误。
谢谢你(我把金的功能复制错了)。你的最后一个函数ExistPositions没有关闭。而且没有bool的返回值,也是一个错误。
现在更正了--又说 "预计结束括号"。
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);
我想不出正确的方法来放括号。请解释我的错误是什么。