MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 251

 

こんにちは、私は2つのバージョンmql4とmql5で私のEAのための取引パネルを書きたいと思っています。私はまだグラフィカルなオブジェクトに慣れていないので、標準ライブラリの CLabelクラスの例を使って、動くメニューを作りました。mql5では、メニューは正常に動作しますが、mql4では動作しません。チャートの期間を変更すると、メニューオブジェクトが複製され、互いの相対位置が変更されます。もしかしたら、mql5が持っているCLabelクラスのメソッドがmql4にはないのかも?このような問題を避けるために、このクラスで何を追加したらよいかを提案していただけませんか?

また、CLabelクラスのサンプルコードでは、これらの行が何をするものなのかがよくわかりません。

EVENT_MAP_BEGIN(CControlsDialog) 
  
EVENT_MAP_END(CAppDialog)
 
Aleksandr Teleguz:

こんにちは、私は2つのバージョンmql4とmql5で私のEAのための取引パネルを書きたいと思っています。私はまだグラフィカルなオブジェクトに慣れていないので、標準ライブラリの CLabelクラスの例を使って、動くメニューを作りました。mql5では、メニューは正常に動作しますが、mql4では動作しません。チャートの期間を変更すると、メニューオブジェクトが複製され、互いの相対位置が変更されます。もしかしたら、mql5が持っているCLabelクラスのメソッドがmql4にはないのかも?このような問題を避けるために、このクラスで何を追加したらよいかを提案していただけませんか?

また、CLabelクラスの例のコードでは、これらの文字列が何をするのかがよくわかりません。


指定された行は、ファイルDefines.mqhに記述されているマクロです。文字通り、1行目のマクロでCControlsDialog クラスのイベント処理関数に制御を渡し、これらのマクロの間で関数を実行し、最後のマクロでCAppDialogクラスに制御を渡して います。

 
Алексей Барбашин:

指定された行はマクロで、Defines.mqhファイルに記述されています。文字通り、マクロの最初の行でCControlsDialog クラスのイベント処理関数に制御を渡し、その後、これらのマクロの間の関数を実行し、最後のマクロでCAppDialogクラスに制御を渡して います


ありがとうございます、何か腑に落ちました)それと、マクロの話題のドキュメントのリンクを教えてください。

 
Aleksandr Teleguz:

ありがとうございます、意味がわかってきました)マクロの話題のドキュメントのリンクを教えてください。


https://www.mql5.com/ru/docs/basis/preprosessor/constant

Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
  • www.mql5.com
Основы языка / Препроцессор / Макроподстановка (#define) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

int OnDeinit()

{

Alert("beg OnDeinit()");

// err=StringToInteger(err)とする。

//------------------------

return(0)です。

Alert("end OnDeinit()");

}

//OnDeinit();-----------

キャプティブエラーを整数で表すと


何が問題なのかわからない。

メッセージを見る

 
buyanov:

int OnDeinit()

{

Alert("beg OnDeinit()");

// err=StringToInteger(err)とする。

//------------------------

return(0)です。

Alert("end OnDeinit()");

}

//OnDeinit();-----------

キャプティブエラーを整数で表すと


何が問題なのかわからない。

メッセージが表示されました


何が問題なのか、どこでエラーが発生しているのか、よくわかりません。int 型のerr変数がある場合、コメントアウトされた行で、なぜstringからintに変換しようとしているのでしょうか?具体的にどこでエラーが発生するのでしょうか?

 
Алексей Барбашин:

何が問題なのか、どこからエラーが出ているのかは不明です。int 型の変数errがあるのに、なぜコメント文字列でstring型からint型に変換しようとしているのでしょうか?どのような場所でエラーが発生するのでしょうか?

エラーは出ていないのですが、警告メッセージが表示され、整数から文字列に暗黙のうちに変換しています。いずれにせよ、解明する必要があります。
 
buyanov err の文字列が整数で記述されている 何が問題なのかわからない

コンパイラーメッセージには、エラーの発生した行と位置が表示されます。説明の行(写真では一番下の行)をクリックすると、カーソルがプログラムテキストにエラーを示します。DeInit関数は、インジケータまたはExpert Advisorがチャートから削除される直前に実行されます。ここでは、例えば、作成した図形を削除することができます。実行するアクションがない場合(関数が空) - 関数を削除することができます...文字列 x=125 のような場合、文字列 x = (文字列)125 に修正します。

err=StringToInteger(err) の代わりに err=StringToInteger((string)err); とすると、おかしいと思う人もいるかもしれないが

 
STARIJ:

コンパイラーメッセージには、エラーの発生した行と位置が表示されます。説明の行(写真では一番下の行)をクリックすると、カーソルがプログラムテキストにエラーを示します。DeInit関数は、インジケータまたはExpert Advisorがチャートから削除される直前に実行されます。ここでは、例えば、作成した図形を削除することができます。実行するアクションがない場合(関数が空) - 関数を削除することができます...文字列 x=125 のような場合、文字列 x = (文字列)125 に修正します。

err=StringToInteger(err) の代わりに err=StringToInteger((string)err); とすると、おかしいと思う人もいるかもしれないが


ms...

ご指摘の通りです。

err=StringToInteger((string)err) という行をOption関数に入れましたが、エラーに なりません。

しかし、文字列から数値への暗黙の変換の警告はまだ残っているので、やはり端末の再インストールが必要なようです。

 
buyanov: ご指摘の通り、OnDeinit関数にerr=StringToInteger((string)err) という行を入れましたが、エラーに なりません。

が、文字列から数値への暗黙の変換の警告はまだ残っているので、やはりターミナルを再インストールするしかないようです。

OnDeinit関数を 投稿してください - 見させていただきます。そして、それに何を求めているのかを教えてください。MetaEditorはこのようなエラーを出します。端末フォルダの コピーを持つ。アレクセイ・ヴィクトロフが、再インストールの方法を説明します。