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

 
fxsaber:
mt5, 1375, アップグレード後に発生しました。 vinhp32

何をどうアップデートするのか?不具合の可能性を指摘する場合は、インクを節約せず、できるだけ詳しく事情を述べてください。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

エラー、バグ、質問

カルプトフ ウラジミール 2016.08.07 14:11

  1. MetaEditorのビルドは何ですか?
  2. MT4とMT5のどちらから動かしているのでしょうか?
  3. 以前、このMetaEditorでファイルを開いたことがあるのでしょうか?
  4. MetaEditorのファイルに対する権利はどうなっているのでしょうか?
  5. 最近、あるいは端末インストール 直後に発生したのでしょうか?
  6. どのようなOSで起動するのですか(Windows、Wine下)?

 

実行時のエラー

操作の順序。

1.エラーが発生するまで同じ種類のテキストを一行ずつチャート上に表示するTest.ex5エキスパートを実行します。

2.同じチャートで、エラーを示す簡略化したスクリプトを実行します。

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

結果を得ることができます

2016.08.08 02:21:25.979 テスト(EURUSD,M15)120-136

...となり、"OK "となるはずです。

ファイル:
Test.ex5  13 kb
 
A100:

実行時のエラー

操作の順序。

1.エラーが発生するまで同じ種類のテキストを一行ずつチャート上に表示するTest.ex5エキスパートを実行します。

2.同じチャートで、エラーを示す簡略化したスクリプトを実行します。

結果を得ることができます

2016.08.08 02:21:25.979 テスト(EURUSD,M15)120-136

...となり、"OK "となるはずです。

エラーは出ていません。ChartGetStringの呼び出しの 間に、チャートコメントが変更されています。そのため、チャートコメントに追加された行のサイズだけ、16文字の差が生じているのです。
 
Ilyas:
ChartGetStringの呼び出しの 間に、チャートコメントが変更されています。そのため、チャートコメントに追加された行のサイズだけ、16文字の差があります。

エキスパートがアンロードされる(つまり、グラフに影響を与えることができなくなる)。テストスクリプトを読み込む(10行)。質問:与えられた行のうち、どれがチャートのコメントを変更しますか?

::ChartGetString( )の呼び出しの間には何のコードもありません。

ファイル:
Test.ex5  6 kb
 

モバイル版フォーラムの不具合は?

返信」を押すと、ワニのようなhtlmのコードで引用文が表示される。そして、カーソルを出すことができないのです。

Android 2.3.4


 
A100:

エキスパートがアンロードされる(つまり、グラフに影響を与えることができなくなる)。テストスクリプトを読み込む(10行)。質問:与えられた行のうち、どれがチャートのコメントを変更しますか?

::ChartGetString( )の呼び出しの間には何のコードもありません。

アクション別(チャート操作は同期/シーケンシャル、EAとスクリプトはそれぞれ別のスレッドで動作)。

  1. スクリプトは、最初の ChartGetString を呼び出します。
  2. Expert Advisor がChartSetString を 呼び出す。
  3. エキスパートアドバイザーが終了する
  4. スクリプトは2番目のChartGetStringを呼び出します。
 
Ilyas:
動作別(チャートの場合、操作は同期/連続、Expert Advisorとスクリプトはスレッド単位で動作)。

  1. スクリプトは最初の ChartGetString を呼び出します。
  2. エキスパートがChartSetStringを呼び出す
  3. 専門家による仕上げ
  4. スクリプトは2番目のChartGetStringを呼び出します。

Test.ex5のエキスパートは、スクリプトが実行される時点で、すでに事前にアンロードされているため、何も呼び出すことができません(ポイント2)。

つまり、ステップ3はステップ1の前にあることが明らかです。

以下は、Test.ex5スクリプトの結果です。

2016.08.08 02:21:25.979 テスト(EURUSD,M15)120-136

...で、「OK」であること。

 
A100:

Test.ex5のエキスパートが何かを呼び出すことはできません(ポイント2)。なぜなら、スクリプトが実行される頃には、すでに事前にアンロードされているからです。

つまり、ステップ3はステップ1の前にあることが明らかです。

以下は、Test.ex5スクリプトの結果です。

2016.08.08 02:21:25.979 テスト(EURUSD,M15)120-136

...で、「OK」であること。

ExpertRemove は、Expert Advisor をチャートから即座に削除するのではなく、OnTick が完了した時点で削除します。また、exit()関数とは似て非なるものです

ログの引用は、ExpertRemove()関数を 呼び出した事実のみを示しています。Expert Advisor を削除した事実は、クライアントターミナルのログに「Expert removed」として反映されます。

Expert Advisorのソースコードの表示

 
Slawa:

ログの引用は、ExpertRemove()関数を 呼び出した事実のみを示しています。Expert Advisor は、クライアントターミナルのログから「Expert removed」として削除されます。

詳細なアクションの流れ。

  1. 新しいチャートを開く
  2. Expert Advisor のチャート上で Test.ex5 を実行します(数秒後、Experts タブに以下のメッセージが表示されます)。'2016.08.08 15:40:47.267 Test (EURUSD,M15) ExpertRemove() function called' でチャートからEAがアンロードされる。
  3. ログ]タブに以下のような形式のメッセージが表示されていることを確認します。'2016.08.08 15:40:47.286 専門家エキスパートテスト(EURUSD,M15)を削除しました'
  4. 同じチャート上でスクリプトScript1.ex5を実行(ここでのスクリプトの名前はExpert Advisorの名前と一致しません。)

その結果、「エキスパート」タブに以下のような形式のメッセージが表示されます。'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'です。
そうでなければならない。'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'.

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
ファイル:
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

そうでなければならない。'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'.

これは、Script1.mq5の(*)の行を次のように置き換えると、簡単にわかります。

               text1 = ChartGetString( 0, CHART_COMMENT );