Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 149

 
fxsaber:

Danke, gute Regel. Ich wurde ein Opfer meiner eigenen Inkompetenz. Für einen so offensichtlichen Fall braucht man wirklich mehr Regeln.


Vielleicht für beide Fälle Warnung klug zu tun?

Nicht)))) Es wäre ja auch langweilig)))

 
Vladimir Simakov:
Was ist das Problem mit diesem Code? Deinit nagelte das Objekt durch einen konstanten Zeiger (ich kenne den Handle hier). Normales Gliedmaßenschießen im C++-Stil, sonst haben die Macher alle aufgelöst)))

Bei der Inbetriebnahme wird es keine Probleme geben. Einmal gestartet, können Sie eine Weile warten und dann eine Situation für den EA schaffen, in der seine Ausführung unterbrochen wird.

Es ist kein Geheimnis, aber man versteht es viel besser, wenn man das Problem in scheinbar harmlosem Code sucht.
 
fxsaber:

Bei der Inbetriebnahme wird es keine Probleme geben. Einmal gestartet, können Sie eine Weile warten und dann eine Situation für den EA schaffen, in der seine Ausführung unterbrochen wird.

Es ist kein Geheimnis, aber man versteht es viel besser, wenn man das Problem in scheinbar harmlosem Code sucht.
Ich weiß, was das Problem ist. Änderung des Zeitrahmens und hoppla... Ich meine, das ist hier Standard. Warnung? Und wozu? Wenn ich selbst mit so etwas konfrontiert werde, zähle ich es nur zur Steigerung meiner Fähigkeiten. Mit Ihrem Beispiel, IMHO, hier auf die Kraft von 20 Prozent der Gemeinschaft in der Lage sind, zu begegnen, also warum sie von der Entwicklung zu berauben?
 
Vladimir Simakov:
Ich weiß, was hier das Problem ist. Änderung des Zeitrahmens und hoppla... Ich meine, das ist hier Standard. Warnung? Und wozu? Wenn ich selbst mit so etwas konfrontiert werde, zähle ich es nur zur Steigerung meiner Fähigkeiten. Mit Ihrem Beispiel, IMHO, hier auf die Kraft von 20 Prozent der Gemeinschaft in der Lage sind, zu begegnen, also warum sie von der Entwicklung zu berauben?

Ich hatte eine noch interessantere Situation. Es hat sich nichts geändert, aber OnDeinit wurde nach dem erneuten Verbinden aufgerufen. Jetzt werde ich ein Auge auf Reason haben.

 

Ich muss ständig in der Market Watch nach dem gewünschten Symbol suchen. Zum Beispiel das aktuelle Diagrammsymbol.

Das kostet jedes Mal viel wertvolle Zeit. Ich habe es automatisiert, indem ich das folgende Skript per Hotkey eingegeben habe.

// После запуска и нажатия 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:

Ich muss ständig in der Market Watch nach dem gewünschten Symbol suchen. Zum Beispiel das aktuelle Diagrammsymbol.

Das kostet jedes Mal viel wertvolle Zeit. Ich habe es automatisiert, indem ich das folgende Skript als Hotkey verwendet habe.

Herr Kollege, klären Sie den Zweck. Möchten Sie, dass das Symbol in der "Marktbeobachtung" erscheint oder soll es in der "Marktbeobachtung" hervorgehoben werden?

 
Denis Kirichenko:

Herr Kollege, klären Sie den Zweck. Möchten Sie, dass das Symbol in der Marktbeobachtung erscheint oder soll es in der Marktbeobachtung hervorgehoben werden?

Hervorzuheben. Zum Beispiel eine ganze Reihe von Sonderanfertigungen. Ich muss den Tester auf der benutzerdefinierten Karte ausführen, die ich sehen kann.

Dann führe ich dieses Skript aus, und danach lasse ich das ausgewählte Symbol in Market Watch mit der Maus in das Prüfgerät fallen. Das Ganze dauert nur ein paar Sekunden.

 
fxsaber:

Hervorzuheben. Es gibt zum Beispiel eine Vielzahl von benutzerdefinierten Angeboten. Ich muss den Tester mit dem benutzerdefinierten Diagramm ausführen, das ich sehen kann.

Dann führe ich dieses Skript aus, und danach lasse ich das markierte Zeichen in Market Watch mit der Maus in das Prüfgerät fallen. Das Ganze dauert nur ein paar Sekunden.

Nun, dann funktioniert dieses Skript bei mir nicht. Es passiert nichts, das Symbol wird nicht hervorgehoben.

Starten, Enter drücken. Ich sehe einen Fehler im Protokoll:

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

Ja, ich habe das SkriptSetActiveSymbol.mq5 genannt.

 
Denis Kirichenko:

Ich sehe einen Fehler in den Protokollen

So springt er einfach nicht an. Es gibt keine Datei.

 
fxsaber:

So springt er einfach nicht an. Es gibt keine Datei.

Es gibt sie. Ich habe nur einen Eintrag aus dem Protokoll angegeben. Die vollständige Fassung sieht folgendermaßen aus:

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
Grund der Beschwerde: