アンバランスな括弧 - ページ 2

 

どのような表現であっても、まずフォーム要素で文字列を終了させ、その後でボディを記述することをルールとする。

例えば、if文の場合は、開き括弧と閉じ括弧を付けます。開きカギカッコを付けたら、その下に閉じカギカッコを付けます。NormalizeDoubleの ような関数を書くときは、(,Digits)と書き、カンマの前に丸めたいものを書きます。そうすれば、失敗することもないでしょう。そして、時間が経つにつれて目が慣れてきて、こうした細かいディテールがすぐに見えるようになります。すぐにエラーが見つからない場合は、コードの独立した部分を切り取ってコンパイルし、エラーはおそらくこの部分にはない(2か所にある場合)、それからまた貼り付けます。使用されている機能で確認が必要なものがあれば、その内容も含めて切り出してください。

 
liana:
ありがとうございます(Kimさんの機能を間違ってコピーしてしまいました)。
今、訂正しました。「ending bracket expected」と書いてありました。

最後の関数の return(False); の後に、もうひとつ括弧があるはずです。
 

最初は改行で 括弧のセットを入れて、その中に必要なものを入力するようにしてください。また、いくつかの関数が「マトリョーシカ」の中にネストされている場合、怠らずにそれぞれの内部関数をスペース2つ分インデントすれば、「足りない」ブラケットをなくすことができます :)

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

修正しました - まだ何かおかしいです。
どなたか、この2つのキム関数を呼び出して、注文がなければ注文を出すというのはどうしたら正しいのか、書いていただけませんでしょうか。

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:

修正しました - まだ何かおかしいです。
どなたか、この2つのKimの関数を呼び出して、注文がなければ-注文を開くというのが正しいのか、書いていただけませんか?


パラメータは関数に渡す必要があり、関数の説明に記述されています。

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ページ以降にあると思います。