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:
大括弧
大括弧
削除すると、"ending bracket expected" と表示される。
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); }
なぜかすべてのオプションが「ending bracket expected」と表示されるのですが、なぜでしょうか?
valenok2003:
のようにすることもできますが、そうすると、コードの行数が増えてしまいます。
することもできますが、その場合、編集時に不便が生じます。
例えば、開き括弧のついた行を削除したり移動したりしたい場合、余分な操作が必要になります。
だから、オプション1がいいんです。
これがすべてのコードです。どう修正しても、"end bracket expected" や "unbalanced parantheses" と表示されます。
助けて!このブラケットで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:
以下はコードの全体像です。どう修正しても、"end bracket expected" や "unbalanced parantheses" と表示されます。
助けて!このブラケットで1時間格闘しているんだ。
未決済・保留の注文があるかどうかを確認して、注文を出したいのですが。
最後の関数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);
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
ブラケットの正しい付け方がわからない。私の間違いは何なのか、説明してください。