mql5言語の特徴、微妙なニュアンスとテクニック - ページ 149

 
fxsaber:

ありがとうございます、良いルールですね。自分の無能さの犠牲者になった。本当に、もっと分かりやすいルールが必要ですね。


たぶん、どちらの場合にも Warning clever to do?

ドンマイ)))全くもってつまらないでしょう)))

 
Vladimir Simakov:
このコードのどこが問題なのでしょうか? Deinitは定数ポインタによってオブジェクトを釘付けにした(ここのハンドルは知っている)。C++スタイルで通常の手足発射、さもなくばクリエイターが全員解散)))

起動時の不具合はありません。一度起動したら、しばらく待って、EAの実行が途切れるような状況を作ることができます。

謎というより、一見無難なコードから問題を探した方が理解が深まるということです。
 
fxsaber:

起動時の不具合はありません。一度起動したら、しばらく待って、EAの実行が途切れるような状況を作ることができます。

謎というより、一見無難なコードから問題を探した方が理解が深まるということです。
問題点はわかっている。時間軸を変えて、おっと・・・。つまり、ここでは標準的なことなんです。警告?何のために?私自身は、自分でそのようなことに直面しても、技量を上げることにしかカウントされないのです。あなたの例では、IMHO、コミュニティの20%の力でここに遭遇することができますので、なぜ開発のそれらを奪う?
 
Vladimir Simakov:
ここが問題なのは分かっているんです。時間軸を変えて、おっと・・・。つまり、ここでは標準的なことなんです。警告?何のために?私自身は、自分でそのようなことに直面しても、技量を上げることにしかカウントされないのです。あなたの例では、IMHO、コミュニティの20%の力でここに遭遇することができますので、なぜ開発のそれらを奪う?

さらに面白い事態になった。何の変化もなかったが、再接続後にOnDeinitが呼ばれた。これからは、Reasonに注目です。

 

必要なシンボルをMarket Watchで検索する必要性に常に直面しています。例えば、現在のチャートシンボル。

毎回、貴重な時間を割いています。以下のスクリプトをホットキーにすることで自動化しました。

// После запуска и нажатия ENTER делает активным в Обзоре рынка символ чарта.
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_KEYDOWN        0x0100
#define  WM_LBUTTONDOWN    0x0201

#define  VK_DELETE         0x2E

#define  WM_CHAR           0x0102

#define  GET_HANDLE                                                                       \
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT); \
                                                                                         \
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                              \
    Handle = user32::GetDlgItem(Handle, ControlID[i]);


bool SetSymbolNavigator( const string SymbName )
{
  const bool Res = ::SymbolInfoInteger(SymbName, SYMBOL_EXIST);

  if (Res)
  {
    static const int ControlID[] = {0xE81C, 0x804B, 0x27A0, 0x271B, 0x3E9};
    GET_HANDLE

    user32::SendMessageW(Handle, WM_LBUTTONDOWN, 0, 0);
    user32::SendMessageW(Handle, WM_KEYDOWN, VK_DELETE, 0);

    const int Size = ::StringLen(SymbName);
    
    for (int i = 0; i < Size; i++)
      user32::SendMessageW(Handle, WM_CHAR, SymbName[i], 0);
  }

  return(Res);
}

void OnStart()
{
  SetSymbolNavigator(_Symbol);
}
 
fxsaber:

必要なシンボルをMarket Watchで検索する必要性にいつも迫られるのです。 例えば、現在のチャートシンボル。

毎回、貴重な時間を割いています。以下のスクリプトをホットキーにすることで自動化しました。

同僚、目的をはっきりさせる。マーケットウォッチ」にシンボルを表示するか、「マーケットウォッチ」でハイライト表示するか?

 
Denis Kirichenko:

同僚、目的をはっきりさせる。シンボルをMarket Watchに表示するか、Market Watchでハイライト表示させるか?

強調すること。カスタムのものなどが多いですね。そのカスタムでTesterを走らせないと、どのチャートが見えるか。

そして、このスクリプトを実行し、その後、Market Watchで選択したシンボルをマウスでテスターにドロップしています。すべて数秒のことです。

 
fxsaber:

強調すること。例えば、カスタムのものがたくさんあります。そのカスタムでテスターを走らせないと、そのチャートが見れない。

そして、このスクリプトを実行し、その後、Market Watchでハイライトされたキャラクターをマウスでテスターにドロップするのです。すべて数秒のことです。

それでは、このスクリプトは私のために動作しません。何も起こらないし、シンボルもハイライトされない。

起動し、Enterキーを押す。ログにエラーが表示されるのですが。

2019.11.29 11:47:38.609 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found

はい、スクリプトの名前はSetActiveSymbol.mq5と しました。

 
Denis Kirichenko:

ログにエラーが表示される

ただ、このままでは始まらない。ファイルがない。

 
fxsaber:

ただ、このままでは始まらない。ファイルがない。

ありますね。ログから1つだけエントリーをあげています。フルはこんな感じです。

2019.11.29 12:37:18.851 Scripts script SetActiveSymbol (AUDJPY,H1) loaded successfully
2019.11.29 12:37:18.878 Scripts script SetActiveSymbol (AUDJPY,H1) removed
2019.11.29 12:37:26.419 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found
理由: