1 添付ファイル 私はビルド 509 コンパイラをまだ使用していますが、左括弧のバランスが取れていないというエラーは、プログラマがソース プログラム全体を検索して不正な括弧を見つけることを余儀なくされるため、非常に厄介です。特に、EA に数百行のコードがある場合。ビルド 600 以降でこれが問題でなくなった場合でも、このアプリは、コード内の一致しない丸括弧、角括弧、中括弧、または山括弧をすばやく見つけるのに役立つ場合があります。それ以外の場合は、この投稿を無視してください。
この小さなプログラムを解凍して、Experts または Indiors フォルダーにインストールします。次にそれを実行し、検索するファイル (例: MyEA.mq4) と、レポートする左の文字 (丸括弧、角括弧、左中括弧または山括弧) を選択します。 [OK] をクリックすると、.mq4 ファイルと同じフォルダーにファイル (MyEA.out など) が生成され、不一致が強調表示されます。出力ファイルは、ソース コードの左側に追加の 5 列を出力します。列 2: コードの各行の左括弧の数 列 3: コードの各行の右括弧の数ブラケットが右ブラケットの数と等しくない場合、3 つのアスタリスク (***) が列 1 に出力され、問題の考えられる原因が強調表示されます、残っている場合は正 gt;右、右の場合はマイナス gt;左。これは、コードのブロックを開始/終了する一致する中括弧を見つけるのに役立ちます (各関数/サブルーチンの最後で常に 0 に戻る必要があります) 列 5: 行/行番号。 いつものように、アプリは「現状のまま」無料で提供されます。自己責任でダウンロードして使用してください。
以下は、アプリによって注釈が付けられた後に、私が書いた EA のコード フラグメントです。行番号 371 で不足しているブラケットが強調表示されていることがわかります。
挿入されたコード Diff ( ) /- 行 プログラム コード 1 1 354 for (oper=OP_BUY; operlt;=OP_SELL; oper ) { 1 1 355 buy_ok = (oper==OP_BUY);/デフォルト = そうでないことが証明されるまで true と仮定 2 2 356 if (StringFind(PullbackRequirements,P)gt;=0 High1gt;=High2) buy_ok = false;/必要な引き戻しは、高値を下げることを意味します 2 2 357 if (MA7gt;0 Low1gt;MA7) buy_ok = false;/EMA(7) への引き戻しが必要 3 3 358 if (MA7gt;0 MA20gt;0 MA7lt;=MA20) buy_ok = false;/MA アライメント、EMA(7) は EMA(20) より高くなければなりません 3 3 359 if (MA20gt;0 MA50gt;0 MA20lt;=MA50) buy_ok = false;/MA アライメント、EMA(20) は EMA(50) より高くなければなりません 3 3 360 if (StringFind(EntryType,M)gt;=0 Close1lt;=Open1) buy_ok = false;/必要な勢いではない (緑) ローソク足 3 3 361 if (StringFind(EntryType,R)gt;=0 Close1gt;=Open1) buy_ok = false;/必要なプルバック/反転 (赤) キャンドルではありません 362 1 1 363 Sell_ok = (oper==OP_SELL);/デフォルト = そうでないことが証明されるまで true と仮定 2 2 364 if (StringFind(PullbackRequirements,P)gt;=0 Low1lt;=Low2) Sell_ok = false;/必要な引き戻しは、より高い安値を意味します 2 2 365 if (MA7gt;0 High1lt;MA7) Sell_ok = false;/EMA(7) への引き戻しが必要 3 3 366 if (MA7gt;0 MA20gt;0 MA7gt;=MA20) Sell_ok = false;/MA アライメント、EMA(7) は EMA(20) よりも低くなければなりません 3 3 367 if (MA20gt;0 MA50gt;0 MA20gt;=MA50) Sell_ok = false;/MA アライメント、EMA(20) は EMA(50) よりも低くなければなりません 3 3 368 if (StringFind(EntryType,M)gt;=0 Close1gt;=Open1) Sell_ok = false;/必要な勢いではない (赤) ローソク足 3 3 369 if (StringFind(EntryType,R)gt;=0 Close1lt;=Open1) Sell_ok = false;/必要なプルバック/反転 (緑) ローソク足ではない 370 *** 3 2 1 371 if (PostDiagnosticInfo gt;= 3) dump(NumberToStr(oper,1' about to test buy_ok/sell_ok');/Post Diagnostic情報 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2 2 1 372 if (!buy_ok !sell_ok) return(0); 1 373 1 374 order_type = -1;/デフォルト値を設定します: -1 = 注文なし; 0=BUY; 1=SELL; 2=BUY LIMIT; 3=SELL LIMIT; 4=BUY STOP; 5=SELL STOP 1 375 dir = 0;/順序極性: 0 = 順序なし; 1 = 買い注文; -1 = 売り注文 1 376 int マジック = 0; 1 377 色 arrow_color = CLR_NONE;
https://www.forexgroove.com/attachme...1025925015.zip