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

 
pavlick_:

コンパイルに失敗し、エラーが発生する。
a' -複雑すぎるため、マクロを簡略化 する temp.mq5 24 10
's' - 構造体メンバが未定義 temp.mq5 24 10
...

すなわち、プリプロセッサは a.m を再帰的に展開しようとしているようです。

バックライトの話に戻りますが

#define a       s.a

もし.がハイライトされていない場合、コンパイラはそれをマクロと見なさない。同時にそれはエラーでも ある。以下の例のように同期して動作するはずなのに、ハイライトが単独で...、実際のコンパイルが単独で行われることが判明しました。

#define b       b.x

void OnStart()
{
        int b = 1;
#define b   b + 2
        Print( b ); //Error: 'b' - too complex, simplify the macro
}
これ自体は間違っていますが(C++ではエラーなしでコンパイルして結果が3なので)、少なくとも同期です(illuminatorとコンパイラは同じロジックで導かれます)
 
fxsaber:

実際のデータでもうまくいかないんです。

テストEAを作成しました。

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
input int BreakTick = 5;
int OnInit()
  {
   count = 0;
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
static int count = 0;
void OnTick()
  {
   if(count++>5) DebugBreak();
   Print("count = ",count," , Ask = ",Ask);
   
  }
//+------------------------------------------------------------------+

MetaEditorの "実データでプロファイリングを開始 "ボタンを押すとDebugBreak()が動作せず、"実データでデバッグを開始/継続 F5 "を押すと動作します。

テスターでは全く動作せず、プログラムの実行を停止してデバッガやログに抜けることができない。

2018.12.05 14:46:19.413 tst EURUSD,H1: count = 6 , Ask = 1.13397.

2018.12.05 14:46:18.740 tst EURUSD,H1: count = 5 , Ask = 1.13396.

2018.12.05 14:46:09.004 tst EURUSD,H1: count = 4 , Ask = 1.13396

2018.12.05 14:46:03.079 tst EURUSD,H1: count = 3 , Ask = 1.13395.

2018.12.05 14:46:02.830 tst EURUSD,H1: count = 2 , Ask = 1.13395.

2018.12.05 14:46:02.595 tst EURUSD,H1: count = 1 , Ask = 1.13394.

2018.12.05 14:45:53.889 tst EURUSD,H1: 初期化されました。

2018.12.05 14:45:53.869 tst EURUSD,H1 inputs: BreakTick=5;

2018.12.05 14:45:52.131 expert tst EURUSD,H1: ロードに成功しました。

2018.12.05 14:45:45.899 Expert tst EURUSD,H1:削除しました。

2018.12.05 14:45:45.814 tst EURUSD,H1: uninit reason 1.

2018.12.05 14:45:44.510 tst EURUSD,H1: count = 14 , Ask = 1.13393

2018.12.05 14:45:44.177 tst EURUSD,H1: count = 13 , Ask = 1.13392.

2018.12.05 14:45:42.966 tst EURUSD,H1: count = 12 , Ask = 1.13393

2018.12.05 14:45:42.152 tst EURUSD,H1: count = 11 , Ask = 1.13393

2018.12.05 14:45:41.996 tst EURUSD,H1: count = 10 , Ask = 1.13392.

2018.12.05 14:45:39.544 tst EURUSD,H1: count = 9 , Ask = 1.13393

2018.12.05 14:45:39.345 tst EURUSD,H1: count = 8 , Ask = 1.13392.

2018.12.05 14:45:35.605 tst EURUSD,H1: count = 7 , Ask = 1.13394.

2018.12.05 14:45:32.049 tst EURUSD,H1: count = 6 , Ask = 1.13394

2018.12.05 14:45:29.085 tst EURUSD,H1: count = 5 , Ask = 1.13393

2018.12.05 14:45:27.735 tst EURUSD,H1: count = 4 , Ask = 1.13393

2018.12.05 14:45:27.580 tst EURUSD,H1: count = 3 , Ask = 1.13393

2018.12.05 14:45:26.212 tst EURUSD,H1: count = 2 , Ask = 1.13393

2018.12.05 14:45:25.853 tst EURUSD,H1: count = 1 , Ask = 1.13392.

2018.12.05 14:45:25.684 tst EURUSD,H1:初期化されました。

2018.12.05 14:45:25.664 tst EURUSD,H1 inputs: BreakTick=5;

2018.12.05 14:45:24.163 expert tst EURUSD,H1: ロードに成功しました。

まず、メタエディタから「実データでプロファイリングを実行する」を実行しました - 私は手でエキスパートを削除し、その時だけ私はエディタに入った、そしてF5で実行 - ここではすべてが動作しましたが、それは紛らわしいです Print("count = ",count," , Ask = ",Ask); これはブレークポイント 後に実行されました
 
Igor Makanu:

は、テストEAを作成しました。

MetaEditorの "実データでプロファイリングを開始 "ボタンを押すとDebugBreak()が動作せず、"実データでデバッグを開始/継続 F5 "を押すと動作します。

テスターでは全く動作せず、プログラムの実行を停止してデバッガやログに抜けることができない。

まずメタエディタから "Run profiling on real data "で実行 - 手でEAを削除してエディタに入り、F5で実行 - ここですべてがうまくいきました。

ありがとうございます、うまくいきます。何か恐ろしいほどよく誤記を投稿するようになった...。

 
fxsaber:

ありがとうございます。本当に効果があります。何か怖いくらいに誤字脱字が多い...。

私の祖父はいつも、「何もしない者だけが、間違っていない」と言っていました。

;)

私の例では、このように動作するはずでした、というか5ティックで停止するつもりでした。

void OnTick()
  {
   if(++count>5) DebugBreak();
   Print("count = ",count," , Ask = ",Ask);
  }

ログを表示します。

2018.12.05 15:27:06.815 tst EURUSD,H1: count = 5 , Ask = 1.13563.

2018.12.05 15:27:06.488 tst EURUSD,H1: count = 4 , Ask = 1.13563.

2018.12.05 15:27:05.469 tst EURUSD,H1: count = 3 , Ask = 1.13563.

2018.12.05 15:27:04.795 tst EURUSD,H1: count = 2 , Ask = 1.13563.

2018.12.05 15:27:04.288 tst EURUSD,H1: count = 1 , Ask = 1.13563.

2018.12.05 15:27:03.057 tst EURUSD,H1:初期化されました。

2018.12.05 15:27:03.024 tst EURUSD,H1 inputs: BreakTick=5;

2018.12.05 15:27:01.376 expert tst EURUSD,H1: ロードに成功しました。

 

仮想取引環境のシンクロナイザーが実環境と正しく動作するかどうかをテストする必要があります。

そのためには、VisualizerでテストEAを実行し、ポジションを置いたり、保留中の注文を削除したりと、手作業で干渉し始める必要があるのです。


MT5はいくつかの制限(ボタンしか押せない、インジケータが取引できない)があるため、絶対にそれに適さないことは明らかです。

MT4用のインジケータ(Expert Advisorやインジケータへの変更が難しくないEAではない)で、ビジュアライザウィンドウに入れ、Testerに取引注文を 手で送って「いじる」ために使用できるものをお願いしたいのです。


そのようなEX4-indicatorをお持ちの方は、ぜひプライベートメッセージとしてお送りください。市場にはたくさんありますが、どれもアドバイザー的な存在です。

SZYそう探して いると、指標は見つからなかったが、バイブルを見つけた。何とかします、ありがとうございました。

 
fxsaber:

仮想取引環境のシンクロナイザーが実環境と正しく動作するかどうかをテストする必要があります。

そのためには、VisualizerでテストEAを実行し、ポジションを置いたり、保留中の注文を削除したりと、手作業で干渉し始める必要があるのです。


MT5はいくつかの制限(ボタンしか押せない、インジケータが取引できない)があるため、絶対にそれに適さないことは明らかです。

MT4用のインジケータ(Expert Advisorやインジケータへの変更が難しくないEAではない)で、ビジュアライザウィンドウに入れ、Testerに取引注文を 手で送って「いじる」ために使用できるものをお願いしたいのです。


そのようなEX4-indicatorをお持ちの方は、ぜひプライベートメッセージとしてお送りください。市場にはたくさんありますが、どれもアドバイザー的な存在です。

SZYそう探して いると、指標は見つからなかったが、バイブルを見つけた。調べてみます、ありがとうございました。

指標にトレーディング機能を使用することは禁止されています。つまり、トレードができないのです。

 
Andrey Barinov:

インジケータは、取引機能を使用することはできません。つまり、取引はできない。

MT4でも?

 
fxsaber:

MT4でも?

残念ながら、どのインジケータでも取引関数の 呼び出しは禁止されています。
私のライブラリーを試してみて、何か発見があったのでしょうか?

 
Vladislav Andruschenko:
残念ながら、どのインジケータでも取引関数の 呼び出しは許可されていません。
私のライブラリーを試してみて、何か発見があったのでしょうか?

まだ調べていないんです。ライブラリを使ったバリアントは動くはずです。これからいじくるExpert Advisorにライブラリを書いて、マニュアルトレード用のパネルを用意する予定です。


MT4 Visualizer のテスト用 Expert Advisor と並行して、無限売買スクリプトをアタッチ(実行)することは可能でしょうか?

 
fxsaber:

まだ調べていないんです。ライブラリオプションは機能するはずです。私がいじくり回すEAにライブラリを書いて、手動取引用のパネルを用意する予定です。

なるほど。折を見て、ビブラーを最新版に更新します。