初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 84

 
lobo:

質問:信号が入らないようにするには、何をどこに設定すればよいのでしょうか?私はどのシグナルも購読していません。


ターミナルで信号 タブを+、無効にする。

 
sergeev:

ターミナルで信号 タブを+、無効にする。


アラート」タブのコンテキストメニューはアクティブではなく、そこでは「作成」のみ可能です。シグナル」タブでは、受信したシグナルのみを表示することができ、配信停止や削除はできません。
 

こんにちは!!!

mql5を理解し、バージョン4からEAを書き直そうとしているのですが、いくつかの問題にぶつかりました。

1.変数が代入されているにもかかわらず、コンパイラはif(fcorH==1) countH=cH; の行に 'cH' - 未宣言の識別子を書き込んでいます。キャッチは何ですか?

             if(fdelH==0)                                   // проверить на близость при отсутствии уровня в массиве удаленных
               {
                int cH=countH-1;                            // предыдущее значение счетчика
                ...
                fcorH=1;                                    // перезапись уровня в массиве
               }
             if(f1==0)                                      // если занесение хая в массив разрешено
               {
                if(fcorH==1) countH=cH;                     // если разрешена перезапись уровня, то счетчик отматывается на один назад
                ...
               }

2.別の変数TimeResで同じ話をする。

   for(int y2=0;y2<finish;y2++)                          // поиск ближайших уровней
      {
       double Level=SupRes[y2][0];                       // выбор проверяемого уровня
       double rL=Level-Bid;                              // разность цены и уровня
       if((rL<dPlus && rL>0) || (rL>0 && dPlus==0))      // при наличии положительной разницы
         {
          dPlus=rL;                                      // фиксировать ее
          Res=NormalizeDouble(SupRes[y2][0],_Digits);    // уровень сопротивления
          datetime TimeRes=SupRes[y2][1];                // время сопротивления
         }
      }
   ObjectSetInteger(0,oRes,OBJPROP_TIME,TimeRes);        // отрисовка ближайшего сопротивления

しかし、それとは別に、2番目の例では、datetime 行のTimeRes=SupRes[y2][1]に「型変換によるデータ損失の可能性」という警告が表示されているのです。

グローバルレベルの配列は、このような形で結合されます - double SupRes[][2];

これらのエラーや警告を修正するには、どうしたらよいか教えてください。

 
WindSW:

こんにちは!!!

mql5を理解し、バージョン4からEAを書き直そうとしているのですが、いくつかの問題にぶつかりました。

1.if(fcorH==1) countH=cH; では、変数は代入されているのに、コンパイラは 'cH' - 未宣言の識別子を書き込んでいます。キャッチは何ですか?

2.もう一つの変数TimeResでも同じ話。

どちらの場合も、条件/サイクルの内部で変数を宣言していることになります。つまり、条件を満たさない場合は、変数は定義されません。

変数の定義を関数の先頭に置くか、グローバル化する。

しかし、それ以外に、2番目の例では、datetime 行のTimeRes=SupRes[y2][1]で 型変換によるデータ損失の可能性」の警告が発生します。

グローバルレベルでの配列は、このような形で結合されます - double SupRes[][2];

これらのエラーや警告を修正するために何をすべきかアドバイスをお願いします。

または1つのタイプに変換する

datetime TimeRes=(datetime)SupRes[y2][1];
または、最初に配列と変数を同じ型として定義する。
 
fyords:

どちらの場合も、条件/サイクルの内部で変数を宣言していることになります。つまり、条件を満たさない場合は、変数は定義されません。

変数定義は関数の最初に置くか、グローバルにする。

変数定義を関数の先頭に置いたのですが、cHとTimeResの変数で「初期化されていない変数の使用の可能性」の警告が発生しました。

datetime行のTimeRes=SupRes[y2][1];で「型変換によるデータ損失の可能性」の警告が出るがどうするのか?

 
WindSW:

変数を定義したところ、「初期化されていない変数 'cH' を使用している可能性があります」という警告が表示されました。

これはいいのですが、初期化値を与えていますか?

int cH=0;
結局、コードで値を読み取っているわけで、そこに何もなければ何を読み取れるというのでしょう。ここでは警告である。
 
fyords:

まあ、同じようなタイプに減らすか

または、最初に配列と変数を同じ型として定義します。
また、配列がdoubleでレベルを持ち、そのレベルの時刻がdatetimeでなければならない場合、どのようにして配列と変数を一つの型で定義するのでしょうか?
 
fyords:

datetime TimeRes=(datetime)SupRes[y2][1];

ありがとうございます、あなたのヒントが役に立ちました。(datetime)SupRes[y2][1];のような定義はどこに書いてあるのでしょうか?
 
WindSW:
また、配列に含まれるレベルがdoubleで、そのレベルの時刻がdatetimeである場合、同じ型の配列と変数をどのように定義すればよいのでしょうか。

この場合、doubleとdatetimeの2つの配列が必要になります。

そして、レベルが見つかって1番目の配列に書き込まれたら、時間を 取得して2番目の配列に書き込む必要があります。

 
WindSW:
ありがとうございます、あなたのヒントが役に立ちました。(datetime)SupRes[y2][1];の型定義はどこで読めますか?

種類を持ち込む

理由: