記事"MQL5でExpert Advisorを書くための初心者向けステップバイステップガイド"についてのディスカッション - ページ 6

 

こんにちは!

現在、この記事の例を参考にExpert Advisorの書き方を勉強しているのですが、次のような問題が発生しました - 取引のリクエストを送信しようとすると、エラー10014 - 数量が間違っています。取引に許容される最大取引量を確認したところ、SYMBOL_VOLUME_MAX- 0 が返ってきました。しかし、同時に手動取引は正常にオープンされています。

何が間違っているのか、あるいはどこを見ればいいのか教えてください。私は記事に添付されているExpert Advisorのコードを使用しています。

ありがとうございました。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
ありがとう。
 

こんにちは、

コードは素晴らしいのですが、試してみると次のようなエラーが発生します。

2011.11.13 23:39:58 2011.11.01 14:20:00 Alert: TheSell order request could not be completed -error:4756
2011.11.13 23:39:58 2011.11.01 14:20:00 failed instant sell 1.00 EURUSD at 1.36833 sl: 1.37133 tp: 1.35833 [リクエストが無効です。]

トレードが実行されません。

どなたか修正方法を教えてください。

ありがとうございます。

F

 
Financialabs:

こんにちは、

コードは素晴らしいのですが、試してみると次のようなエラーが発生します。

2011.11.13 23:39:58 2011.11.01 14:20:00 Alert: TheSell order request could not be completed -error:4756
2011.11.13 23:39:58 2011.11.01 14:20:00 failed instant sell 1.00 EURUSD at 1.36833 sl: 1.37133 tp: 1.35833 [Invalid request]

取引は実行されない。

どなたか修正方法を教えてください。

ありがとうございます。

F

同じ質問をしたのですが、誰も答えてくれませんでした。

私はそれを見つけた。

バグです。次のコードを追加する必要があります。

ZeroMemory(mrequest);

この行はmrequest.action=...mrequest.price=...などの行の前に書く必要があります。

 

こんにちは。

詳細でわかりやすいガイドをありがとうございました。

問題があります。プログラムはコンパイルされるのですが、最初にリクエストを作成しようとすると、次のようなエラーが表示されます:"Request to set Sell order failed -error code:4756"

ドキュメントには何も書かれていません。どうしたらよいか、またはどこで情報を得られるか教えてください。

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

問題があります。プログラムはコンパイルできるのですが、最初にリクエストを作成しようとすると、次のようなエラーが表示されます。

ドキュメントには何も書かれていません。この場合、どうすればよいのでしょうか。

エキスパートアドバイザーのアップデート版をダウンロードしてください。

問題は mrequest 構造体にあり、ZeroMemory 関数を使用して事前にゼロにする必要があります。mrequest.action=TRADE_ACTION_DEAL;」(P.199とP.245)の行の前に「ZeroMemory(mrequest);」を追加してください。

 
senerzen:

私も同じ質問をしたが、誰も答えてくれなかった。

見つけたよ。

バグです。コードの行を追加する必要があります

ゼロメモリー(mrequest);

この行はmrequest.action=...mrequest.price=...などの行の前にあるべきです。

ありがとうございました
Get in touch with developers using Service Desk!
  • www.mql5.com
We therefore attach great importance to all user reports about issues in our programs and try to answer each one of them.
 
papaklass:
つまり、リクエストの前にリクエスト構造体をゼロにする必要がありますか?
リクエストを送信する前に、構造体のすべてのフィールドを初期化する必要があります(この場合、ZeroMemory 関数を使用して行われますが、要素ごとに行うこともできます)。
 
Automated-Trading:
リクエストを送信する前に、構造体のすべてのフィールドを初期化する必要があります(この場合、ZeroMemory 関数を使用して行われますが、要素ごとに行うこともできます)。

リファレンス・マニュアルにそう書いてありますか?(今は確認する機会がない)。

つまり、構造体型の変数は、プログラムのグローバル・レベルで一度宣言し、一度初期化すれば、ZeroMemory 関数を再度使う必要はないということでしょうか?

 
Yedelkin:

ハンドブックに何か書いてありますか?(今確認する機会がないのですが)。

変数は宣言されたときに強制的にゼロにされるわけではありません。変数を使用する前に、プログラマー自身がすべての変数を消去/代入する必要があります。

初期化されていない(あるいは不完全な)変数(特に構造体)を使うことは、プログラミングにおいて非常によくある間違いだ。

構造体型の変数は、プログラムのグローバル・レベルで一度宣言して初期化すれば十分であり、ZeroMemory 関数を使うという問題に再び戻る必要はないことがわかった。

変数をグローバル・レベルに持ってきて初期化で(無駄に、そしてより危険な)争うよりも、変数を正しく初期化したほうがいい。

なぜ誰かが変数や特に複雑な構造体を初期化してくれると思うのだろう」と自問するのはとても簡単だ。

そう宣言するときに不便なZeroMemoryを 使わずに構造体をゼロにできるのはとても便利だ:

   MqlTick my={0};