エラー、バグ、質問 - ページ 313

 

なぜかOnTester関数で現在の 口座の利益を得ることができない

このように0を得ることができる

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_PROFIT));

そして、こうして利益を得ることができるのです。

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
stringo:

何を議論しているのかw0は入れない。

PS メッセージがあるはずです(おそらく数行下にあります)


グローリー 私もそう思う。こういう議論は時間がかかるから、もういいや(議論)。:)

しかし、では、足で呼ばれるのは何かというと......あなた自身、すべて完璧に知っていると思いますが、それでも、この関数が外部で宣言によってのみ宣言されている場合、「const」「in」「out」といった修飾子が存在するのです。そして、おそらくこの機能には欠点があります。つまり、返せるパラメータであれば、返さない場合(「return」で返した場合)には警告を出し、関数の第二形態として、パラメータで戻り値を返した場合にも、返せる値である以上、警告を出すべきだということです。そうでなければ、成功/失敗の結果がパラメータを介して返され、値そのものがreturnを介して返された場合、不可能である。そして、成功か否かもALWAYSで返される。つまり - (http://users.telenet.be/bart.demeyere/C++InOutParameters.html) ここに、昔からある解決策があるのです。


しかし、私が何も気づかなかったように、一般的な会話は。IMHOでは、このような質問に答える必要があるのは、現在の実装で根本的に何かを変える予定がない場合です :)- "はい、そのような問題があります、それはプログラムの次のバージョンで解決されます、今我々はコードを修正しました、そして我々はエラーを修正するだけです"。誰も( 不十分な人でも)怒らないと思いますが、ただ問題そのものを解決することは重要で必要なことです。


ですから、このバージョンでoutなどの非常に(VERY)便利なモディファイアがあるかどうかは別として、エラーを最小限に抑えることができるのは事実です。


***

この通信をすべて行うには半日かかります。もういいや。:)

 
Erm955:

なぜかOnTester関数で現在の 口座の利益を得ることができない

このように0を得ることができる

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_PROFIT));

そして、こうして利益を得ることができるのです。

double OnTester()
{
   return(AccountInfoDouble(ACCOUNT_BALANCE)-100000);


グローバル変数を 宣言し、OnInit()で現在の残高の値を代入します。

OnTester()で、完了したすべての取引の結果に基づいて、利益の合計を計算します。

Профит=ТекущийБбаланс - Начальный баланс

を作成し、OnTester()で出力します。


そして、今、あなたが得ようとしているのは、現在の未確定 利益であり、すべてのポジションがクローズされればゼロとなります。

 
Academic:


グローリー 私もそう思います。こういう議論は時間がかかるので、わざわざ(議論に)参加する必要はありません。:)

このバージョンでは、outなどの非常に(VERY)便利なモディファイアがあり、それらはエラーを最小にすることができます。

"何を言い争ってるんだ?"- というのは、私の子供の頃の言葉で、「何を議論しているのだろう」という意味です。

パラメータを参照渡しする ことは、まさにinoutの意味するところです。単に、コンパイラがコントロールできない実装があるだけです。

実際、関数を入力することで実行の流れを分析することは非常に簡単です(Rashidが提示した例)。私たちは、この方法をあえて拒否しました。まさに、コンパイル時間が大幅に増えるからという理由でした。そこで、最もシンプルな方法である警告を表示することにしました。そのような警告は出さないほうがいいのでしょうか?はい、そうしてください。明示的に初期化を行った場合、警告は発生しません。

また、論理式の見積もりを短縮していることも重ねてお伝えします。この場合、最初の ObjectGetDouble が false を返すと(たとえば、プログラムの外部にあるオブジェクトが突然存在しなくなるため)、2 番目の ObjectGetDouble は呼び出されないことを意味します。

Документация по MQL5: Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this
Документация по MQL5: Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this
  • www.mql5.com
Основы языка / Типы данных / Ссылки. Модификатор & и ключевое слово this - Документация по MQL5
 
stringo:

"何を言い争ってるんだ?"- というのは、私の子供の頃の言葉で、「何を議論しているのだろう」という意味です。

パラメータを参照渡しする ことは、まさにinoutの意味するところです。単に、コンパイラがコントロールできない実装があるだけです。

実際、関数を入力することで実行の流れを分析することは非常に簡単です(Rashidが提示した例)。私たちは、この方法をあえて拒否しました。まさに、コンパイル時間が大幅に増えるからという理由でした。そこで、最もシンプルな方法である警告を表示することにしました。そのような警告は出さないほうがいいのでしょうか?はい、そうしてください。明示的に初期化を行った場合、警告は発生しません。

また、論理式の見積もりを短縮していることも重ねてお伝えします。この場合、最初の ObjectGetDouble が false を返した場合(例えば、プログラムの外部にあるオブジェクトが突然存在しなくなった場合など)、2番目の ObjectGetDouble は呼び出されないことを意味します。


そうですね、未定義の動作はありません。これはC言語のコードでは標準的な動作です。

修飾語のinとoutは、リファレンス以外にも可能です。そして、デフォルトでは常にリファレンスのために出たり入ったりしているのです。しかし、in修飾子で参照を渡すことができるので、この関数のパラメータは常に入力であり、参照で渡しても書き込みはできないことになります。http://users.telenet.be/bart.demeyere/C++InOutParameters.html をお読みになりましたか?


in: パラメータを読み込む (すべてのブランチで読み込まれない場合は警告が表示されます*)
(in:パラメータを読み込む(読み込めない場合は警告))
out: パラメータの書き出し先 (すべてのブランチで書き出されない場合は警告*)
(out):書き込めるパラメータ(書き込めない場合は警告)
in withoutout: パラメータを書き込むことができません。
out withoutin: パラメータは書き込まれる前に読み込むことはできません。
*すべてのブランチ:関数を通過するすべての正常な流れ(if 文の両方のブランチ、case 文のすべてのブランチ、...)で、ただし例外が投げられた場合は除きます。これはreturn 文と同じで、未定義の動作をさせないという制約です。


そして何より、inと outという キーワードを導入することで、コンパイル時にすでにいくつかの問題を 発見することができる。そして、一刻も早くエラーを見つけたいと思うのが人情ではないでしょうか

 

const修飾子がある。定数参照を明示的に渡すと、アウトを伴わないインパラメータを意味する。イン、アウト、インアウトの追加エンティティを導入することは絶対にありません。

 
stringo:

const修飾子がある。定数参照を渡すと、アウトなしで明示的にパラメータinを想定する。イン、アウト、インアウトの追加エンティティを導入することは絶対にありません。

やらないなら、やらない。しかし、それではまともな最適化ができないことを認識しなければなりません。また、その例でOUTがあったとしても、警告は発生しなかったはずです。しかし、すべて無駄になる - IMHO - 3分かかりますが、エラーははるかに少ないです。使いたくなければ使わなければいいのです。そうすれば、すべてがいつものようになる。今と同じようにね。:)


INせずにOUTだけを作るには?つまり、常に何かが返される、関数の戻り値のようなものですね?

 

デベロッパー

1.主要ペアのスプレッドは、1993年5月以降、現時点で約930本の週足が打たれている、ということですね?

そして、深い歴史の中では、日数を基準に鉄棒が作られていました。

したがって、Expert Advisorは1993年5月から正確にテストすることができます(D1以上のTFを使用する場合)?

GBPUSDで1993年5月9日よりも深いところを見ることができるのか(EURUSDで実施されているような)。
 

こんにちは。

Graphic Tag"オブジェクトを手動で作成すると、オン/オフ状態に指定されたbmpファイルがないのはなぜか、説明してください。

以下はそのコードです。

ObjectCreate(...)。

.......

ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "Imageson.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "Imagesoff.bmp");

ラベルは指定した位置、指定した色で完全に正しく作成されますが、"Imageson.bmp" と "Imagesoff.bmp" が指定されていません。MT5 の GUI の場合
オブジェクトのリストをクリックし、手動でマーカーにこれらのファイルを設定すると、それらが設定されます。しかし、なぜObjectSetStringはそうしないのでしょうか?

いかがでしょうか?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
MathX:

いかがでしょうか?

トライ

ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 0, "\\Images\\on.bmp");
ObjectSetString(0, "ColorLabel", OBJPROP_BMPFILE, 1, "\\Images\\off.bmp");


証明書の変更は近日中に行われる予定です。