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

 

なぜエラーが発生するのか、教えてください。

2019.02.17 06:13:28.974 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 06:13:28.983 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден

このコードでは

      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

最初のエラーはまだ理解できる-オブジェクトが見つからないが、エラーなしで見つからないオブジェクトの検索の実装が明確でない場合、2番目のエラーは、オブジェクトが明確に作成されている間、明確ではない-グラフが形成され、エラーの理由が明確ではありません。

エラーをなくすには?

 
Aleksey Vyazmikin:

なぜエラーが発生するのか、教えてください。

このコードでは

最初のエラーはまだ理解できる-オブジェクトが見つからないが、エラーなしで見つからないオブジェクトの検索の実装が明確でない場合、2番目のエラーは、オブジェクトが明確に作成されている間、明確ではない-グラフが形成され、エラーの理由が明確ではありません。

どうすればエラーを解消できますか?

ResetLastError()は、この関数を呼び出す前に行う必要があります。ここにあるのは何なのか。

graphic.Create()

は不明です。これがCCanvasの場合、Create()メソッドは チャートオブジェクトを参照せずに グラフィカルなリソースを作成します。 そして、trueかfalseのどちら かを返します。

作成

チャートオブジェクトにバインドすることなく、グラフィカルリソースを作成します。

virtual bool  Create(
   const string       name,                                 // имя
   const int          width,                                // ширина
   const int          height,                               // высота
   ENUM_COLOR_FORMAT  clrfmt=COLOR_FORMAT_XRGB_NOALPHA      // формат
   );

パラメータ

名前

[in] グラフィカル・リソースの名前のベースとなるものです。リソース名は、作成時に擬似ランダム文字列を付加して形成される。

Width [in] 横幅(Xサイズ)をピクセル単位で指定します。

高さ

[in] 高さ(Y 軸のサイズ)をピクセル単位で指定します。

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[中】色処理方法。色の処理方法の詳細については、ResourceCreate() 関数の説明を参照すること。

戻り値は

true - 成功した場合,そうでない場合はfalse


一般的に、表示された内容から理解するのは難しいです。

でも、この方法なら試せますよね。

//+------------------------------------------------------------------+
ResetLastError();
if(ObjectFind(chart,name)<0)
  {
   Print("1 Тут ошибка потому, что объекта нет ещё",GetLastError()," ",cLng::CodeDescription(GetLastError()));
   ResetLastError();
   if(!graphic.Create(chart,name,0,0,0,pix_X,pix_Y))
      Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
  }
//+------------------------------------------------------------------+

そこにCGraphicがある場合、Create()のコードが何を返すかは、ヘルプに一言も書かれていないので、そのコードに入り込んで理解する必要があります。

Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
  • www.mql5.com
Стандартная библиотека / Научные графики / CGraphic / Create - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

ResetLastError()は、この関数が呼ばれる前に実行する必要があります。ここにあるもの

は不明です。CCanvas の場合、Create() メソッドは チャートオブジェクトを参照せずに グラフィックリソースを作成します。 そして、trueかfalseのどちら かを返します。

作成

チャートオブジェクトにバインドすることなく、グラフィカルリソースを作成します。

パラメータ

名前

[in] グラフィカル・リソースの名前のベースとなるものです。リソース名は、作成時に擬似ランダム文字列を付加して形成される。

Width [in] 横幅(Xサイズ)をピクセル単位で指定します。

高さ

[in] 高さ(Y 軸のサイズ)をピクセル単位で指定します。

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[中】色処理方法。色の処理方法の詳細については、ResourceCreate() 関数の説明を参照すること。

戻り値は

true - 成功した場合,そうでない場合はfalse


一般的に、表示された内容から理解するのは難しいです。

でも、この方法なら試せますよね。

そこにCGraphicがある場合、ヘルプには一言も書かれていないので、Create()のコードに入り込んで、何を返しているのか理解する必要があります。

エラーリセットで上記を確認し、エラーが発生する場所を特定済みです。

しかも、そこで異なる関数から2回発生します。最初の関数の後、エラーは解消されますが、その後、再び発生します。

そして、私の創作の変種

作成

チャートオブジェクトにリンクしたグラフィカルリソースを作成 します。

bool Create()
const longchart,// チャートID
const stringname,//name
const intsubwin,// サブウィンドウの数
const intx1,//座標 x1.
const inty1,//座標 y1.
const intx2,//座標x2
const inty2//座標値 y1
)

パラメータ

チャート

チャートの[in]識別子。

名前

[中】 名前

サブウイン

[サブウィンドウの番号です。

x1

[座標X1.

y1

[座標 Y1.

x2

[座標 X2.

y2

[座標 Y2.

 
Aleksey Vyazmikin:

エラーリセットで 上記を確認 し、エラーの発生箇所を特定済みです

オブジェクト検索機能にアクセスする前に、エラーをリセットしない

 
Artyom Trishkin:

オブジェクト検索機能にアクセスする前にエラーをリセットしていない

はい、コード引用では、私はリセットしない、私はすでに上記のコードをチェックしたように - そこにエラーはありませんので、私は以下のように同様のチェックラインを消しました。

 
こんにちは、私のアラート関数は、ファイルから文字列を読み取り、中国語または日本語のいずれかの文字で出力します、どのように私はそれを修正することができますか?
 
Artyom Trishkin:

オブジェクト検索機能を呼び出す前に、エラーをリセットしない

もう一度、実験を繰り返すことにしました。

      //--- отключим показ ценового графика
      ChartSetInteger(0,CHART_SHOW,false);
      long chart=ChartID();

      CGraphic graphic;
         Print("0 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

その結果がこちらです。

2019.02.17 08:55:19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
エラーの原因に心当たりはありますか?
 
Denis Nikolaev:
こんにちは、私のアラート関数は、ファイルから文字列を読み取り、中国語または日本語のいずれかの文字で出力します、どのように私はそれを修正することができますか?

Windowsでフォントを設定する。Unicodeをサポートしないプログラム用の言語」にロシア語を設定する。

"地域標準" - "先進".

 
Vladimir Karputov:

Windowsでフォントを設定する。Unicodeをサポートしないプログラム用の言語」にロシア語を設定する。

"リージョナルスタンダード-アドバンスド "です。

これはうまくいかなかった。

ファイルから読み込んだ行を日本語や中国語に自動翻訳してしまうのですが、なぜでしょうか?

 
Aleksey Vyazmikin:

もう一度、実験を繰り返すことにしました。

以下はその結果です。

エラーの原因に心当たりはありますか?

さて、前回のエラーを リセットしたので、このエラーコードが発生するCGraphicの荒野を探します。