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

 

MQL4からMQL5へ 乗り換える際に不具合が発生しました。

コード

ResetLastError()。

int ObjTotal = ObjectsTotal(0);

int Error = GetLastError();

を返します。

ObjTotal = 0.

エラー=4022

このエラーは何ですか?なぜドキュメントに記載されていないのですか?

ObjectsTotal(0, -1, -1), ObjectsTotal(ChartID(), 0, OBJ_TREND) など、さまざまなバリエーションを試しました。

結果は同じです。

どうすればうまくいくのか?

ターミナル:MetaTrader 5、バージョン5.00ビルド2025。
 
Игорь Евдокимов:

アドバイス:何か聞きたいことがあれば、コードの一部ではなく、FULLコードを挿入してください。

何が言いたいかというと、誰でもあなたのコードを受け取って勝手に実行してしまうのです。そして、ほとんど誰もチャンキーコードを見ません。チャンキーコードは無礼講なのです。

あなたのコードの例

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError();
   int ObjTotal=ObjectsTotal(0);
   int Error=GetLastError();
   Print("ObjectsTotal: ",ObjTotal,", GetLastError: ",Error);
//---
  }
//+------------------------------------------------------------------+

グラフィカルなオブジェクトが描かれていないグラフで実行します。結果

2019.05.10 13:26:59.169 1 (EURUSD,H1)   ObjectsTotal: 0, GetLastError: 0

つまり、エラーはないのです。


端末を使用する。

2019.05.10 13:25:35.665 MetaTrader 5 x64 build 2025 started (MetaQuotes Software Corp.)
2019.05.10 13:25:35.668 Windows 10 (build 17763) x64, IE 11, UAC, Intel Core i3-3120 M  @ 2.50 GHz, Memory: 3712 / 8077 Mb, Disk: 77 / 415 Gb, GMT+2
2019.05.10 13:25:35.668 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
ファイル:
1.mq5  2 kb
 
Vladimir Karputov:

一言アドバイス:何か聞きたいことがあるときは、断片ではなく、FULLコードを挿入してください。

アドバイスありがとうございます、そうします。

しかし、疑問は残ります。

明確化:前の投稿のコードの一部がインジケーターのOnDeinit()関数にある場合、結果はこうなります。

2019.05.10 14:08:20.105 PtS (EURUSD,H1)ObjectsTotal: 0, GetLastError: 4022

前の投稿のスクリプト(1.mq5)のように、チャートからインジケータを削除してから同じコードを実行すると

2019.05.10 14:08:33.609 1 (EURUSD,H1) ObjectsTotal: 8575, GetLastError: 0

理由を教えてください。

開発者の皆さん!ドキュメントにないこのエラーは何ですか?

 
Vladislav Andruschenko :

最適化中にストラテジーテスターで エラーが発生した。

"タスクは テスターエージェントによって 拒否さ れました"

例えば、お客様の口座の通貨がEURの場合。

  • EURJPY 問題なし
  • GBPJPYでのエラー


口座の通貨がUSDの場合

  • USDCAD 問題なし
  • USDJPY 問題なし
  • EURAUDでのエラー


は、コード内で他の通貨ペアが使用されている場合に表示されます。

私の例では、動的ロットの計算を使用しています。



EAが他の通貨の価格を要求している場合など。

ウラジスラフ・アンドルシェンコ

こんにちは、この問題に対する答えや解決策は見つかりましたか?

 
Vladimir Pastushak:

スケジュール/期間を変更した場合、入力フィールドにどのような値を指定しても、PBBは10という値を受け取ります。

再初期化の瞬間は、あたかも初回実行のような状態になります。

問題を解決する方法は2つあります。

1 - PBBの値をグローバル変数に格納し、そこから周期を取得する。

2 - OnChartEventが発生したら、MAインディケータを再初期化し、新しいハンドルを取得する...

すべてのオプションを確認しました。機能しない。

MQL5の不具合。

新しい値を初期化することはない。パラメータ入力時のみ int PBB_=.他の選択肢はない。これでは全然ダメです。

 
Uladzimir Izerski:

すべてのオプションを確認した。動作しない。

MQL5プログラムの不具合。

新しい値は初期化されない。int PBB_=パラメータを入力した場合のみ。他の選択肢はない。これでは全然ダメです。

MQLではすべてがうまくいっています。あなたは自分のコードで何をしているのか、すべてがどのように動くのかを理解していないだけです...。

もう一度、ChartSetSymbolPeriod(0,_Symbol,_Period) を呼び出すと、以下のようになります

すべてをデフォルトにリセットするのか...。

また、テキストフィールドに値を要求する場合は、initeを試してみてください。

初めてインジケータを起動すると、すべてが作成され、フィールドのデータを変更すると、新しいユニティが呼び出され、テキストフィールドから値が設定されます...。

 
Vladimir Pastushak:

MQLではすべてがうまくいっています。ただ、コードの中で何をしているのか、すべてがどのように動くのかを理解していないだけです...。

もう一度、ChartSetSymbolPeriod(0,_Symbol,_Period) を呼び出すと、以下のようになります

すべてをデフォルトにリセットするのか...。

また、テキストフィールドに値を要求する場合は、initeを試してみてください。

ロジック後、インジケーターの最初の起動で、全て作成されますが、フィールドのデータを変更すると、テキストフィールドからユニティと値の設定で新たな呼び出しがあります...。

テキストフィールドで試したり、GlobalVariableを通して試したりしましたが、何もしていません。まるで水槽の中のような静寂さ。

他のバリアントではOnCalculateは 問題なく動作します。

 
Uladzimir Izerski:

テキストフィールドからとGlobalVariable経由の両方、そしてその他何でも試しました。戦車のような静粛性。

OnCalculateの他のバージョンは問題なく動作します。

それは、あなたが何か間違ったことをしているということです

 
自分のアカウントにアクセスすると、ウィンドウが開き、認証でアカウントへの接続が許可されているにもかかわらず、準備されていない「行」を読んではいけないと言われました...どうしたらいいのでしょうか?
 
Vladimir Pastushak:

それなら、何か間違ったことをしているのでは?

すでにコードが掲載されていますね。

私が無能なら、誰かがプロになるに違いない。まだ見えませんね。

答えを見つけようとする努力は認めます。それ以外にもいろいろあるんですよ。つまり、開発者のレベルでは。