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

 

現在、MT5のカスタムインジケータで、矢印のサイズ変更がうまくいきません。修正するか、変更方法をアドバイスしてください。

PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW);
PlotIndexSetInteger(0, PLOT_ARROW, 233);
PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 2); //1,2,3 - размер не меняется
PS. なんとか原因を解明面白ささえも。MT5では、MT4と異なり、チャート幅の拡大(Zoom Out)時に、矢印の大きさを任意に最小に縮小しています。
 
テスターで動作しているEAから、WinAPIを使って端末のハンドルを調べる方法を教えてください。
 
fxsaber:
WinAPIを使ってTesterで動いているEAから端末のハンドルを調べる方法を教えてください。

間違っているかもしれませんが、プロセスのPIDを探しているのだと思います。"winapi id of your program "でググってみてください。

ZS:GetCurrentProcessId

 
Igor Makanu:

間違っているかもしれませんが、プロセスのPIDを探しているようなので、"winapi id of your program "というクエリでググってみてください。

Agent上で動作するEAが、Agentで動作するように送信されたターミナルハンドルを取得できるようにする必要があります。

 
 return a++;

この場合、++ は機能しません。もっと複雑な形では、"a" を返して、何らかの方法で ++ を実行しますが、つまり、返される値は "a" と等しくありません。

 int tt=0;
 #define AAA (0==0) ? (tt++):0
int Primer() {return AAA;}
void OnStart()
  {
  int a=Primer();
  Print(a," ",tt, a!=tt? " WTF?!!": "");
  
  }

2019.12.09 16:17:51.363 proba (EURUSD,H1) 0 1 WTF?!


ビルド2093
 
fxsaber:

エージェント上で動作するEAが、エージェントで実行するために送信されたターミナルハンドルを取得できるようにする必要があります。

親プロセスのPIDをググると、さらに複雑になりそうです。

どうすればいいのかわからないが、何らかの識別子(マジックナンバー)をエージェントに渡して、そこで処理する必要があると思う。


SZZ:親プロセスを探すためにWinAPIを何度も呼び出すよりも、RAMDiskにあるファイルを読み込む方が速い気がする。

 
Alexandr Andreev:

2019.12.09 16:17:51.363 プロバ (EURUSD,H1) 0 1 WTF!!!!

その通りです。aはインクリメントの前にttを取得します。

 
 
fxsaber:

そうです、aはインクリメントの前にttを取得します。

そうだ、"i++" "++i" のことをすっかり忘れていた。

 

なるほど、端末間のデータ交換という永遠の課題を解決しているのですね。

SZZY: 昨日、SQLiteについて読んだのですが、データベースは書き込み用と読み込み用の両方を開くことができること、DB dll自体を別にインストールすることができること、最適なデータ交換ソリューションを探したことなどが明確に説明されていて、この内容を勉強しなければなりません。