Bibliotheken: Expert - Seite 12

 
Wenn der Expert Advisor das Laden einer DLL erfordert, setzt er selbst kein Häkchen in dieses Feld? Es geht um den Expertenmodus, so scheint es. Ich sehe die Schnittstelle nicht. Muss ich den Code oder die Vorlage selbst bearbeiten?
 
traveller00:
Wenn der Expert Advisor das Laden einer DLL erfordert, setzt er selbst kein Häkchen in dieses Feld? Es geht um den Expertenmodus, so scheint es. Ich sehe die Schnittstelle nicht. Muss ich den Code oder die Vorlage selbst bearbeiten?

Oben gab es Beispiele mit DLL.

 

Ich möchte die Semantik des Rückgabewerts der Methode Parameter klären. Im Moment gibt die Methode 0 zurück, wenn ein Fehler beim Empfang einer Zeichenkette mit einer Vorlage auftritt. Das bedeutet, dass 0 einen Fehler bedeutet.

In allen anderen Fällen ist der Rückgabewert ein String:

Res = (int)EXPERT::StringBetween(Str, EXPERT_FLAGS, STRING_END);

, d.h. es kommt der Wert von expertmode aus der Vorlage an, der ganz legal gleich 0 sein kann. EXPERT wird auf diese Weise auch in anderen Projekten verwendet, insbesondere in Tester:

void OnTimerReal()
{
  ...
  if ((this.Symb += BeginTick) && EXPERT::Parameters(0, Params, Names))
  {
    ... открытие рабочего чарта
  }
}

Wenn die Methode 0 zurückgibt, funktioniert Tester nicht. Und warum? Wenn das echte Handelsflag zurückgesetzt wird, bedeutet das imho nicht, dass das Testen verboten werden sollte. Außerdem macht der Tester in diesem Fall nichts, wenn er nicht funktioniert.

 
Stanislav Korotky:

Ich möchte die Semantik des Rückgabewerts der Methode Parameter klären. Wenn ein Fehler beim Empfang einer Zeichenkette mit einer Vorlage auftritt, gibt die Methode derzeit 0 zurück. Dies bedeutet, dass 0 einen Fehler bedeutet.

Der Rückgabewert hat sich seit den ersten Veröffentlichungen geändert. So hat sich herausgestellt, dass der Rückgabewert historisch gesehen nichts darüber aussagt, ob ein Fehler vorliegt oder nicht.

In allen anderen Fällen ist der Rückgabewert eine Zeichenkette:

Der Rückgabewert ist eine Zeichenkette, d.h. es kommt der Expertmode-Wert aus der Vorlage an, der ganz legal gleich 0 sein kann. In anderen Projekten, insbesondere im Tester, wird EXPERT auf diese Weise verwendet:

Wenn die Methode 0 zurückgibt, funktioniert Tester nicht. Und warum? Wenn das echte Handelsflag zurückgesetzt wird, bedeutet das imho nicht, dass das Testen verboten werden sollte. Insbesondere macht Tester in diesem Fall nichts im Stillen.

Laut dem von Ihnen zitierten Code funktioniert er in der Tat nicht, wenn der Autotrading deaktiviert ist. Ich weiß nicht mehr, ob das ein Fehler ist oder absichtlich gemacht wurde. Wahrscheinlich wurde es absichtlich so gemacht, damit es möglich war, DLLs zu verbinden.


ZЫ Ich werde die Bibel aktualisieren müssen. Es gibt eine starke Tendenz zur gemeinsamen Nutzung mit Sequence. Da nur ich diese Funktion benötige, ist eine Aktualisierung nicht vorrangig.

 

Das einzige Mal, dass das Konstrukt zur Erkennung von Endlosschleifen funktionierte.

ME      3       15:22:12.123    Message Endless loop:
KS      3       15:22:12.123    Message Expert.mqh
IP      3       15:22:12.123    Message 169
DG      3       15:22:12.123    Message bool EXPERT::TemplateApply(const long,const string&,const bool)
FQ      3       15:22:12.123    Message Condition: !::IsStopped()&&::ChartGetInteger(Chart_ID,CHART_COLOR_STOP_LEVEL,0,Value)&&(!(bool)((int)Value>>24))


Es passierte in Expert.mqh an diesem Punkt.

      while (_CS(!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(1); // https://www.mql5.com/ru/forum/170952/page190#comment_18830346


Ich benutze Expert.mqh jeden Tag, aber das ist das erste Mal, dass ich auf dieses Problem stoße. Offenbar gibt es eine sehr seltene Situation. Denken Sie daran.

 
Gute Arbeit, aber ich denke, im Moment wird der Experte mit der Standardvoreinstellung geladen? Es wäre auch gut, wenn Sie SET-Dateien für den gewählten Experten laden könnten
 

Hallo, danke EXPER.mqh ist erstaunlich.

1. wie kann ich den "Algo-Handel" für den mit EXPERT::Run(....) geöffneten EA aktivieren.

2. ich benutze die Version 2019. Gibt es eine neuere Version?

 
upinsa #:

1. wie kann ich den "Algo-Handel" für den mit EXPERT::Run(....) geöffneten EA aktivieren

Lesen Sie dies.

2. ich verwende die Version 2019. Gibt es eine neuere Version?

Letzte Version.


 
static bool GetInputNames( MqlParam &Parameters[], string &InputNames[] )
  {
    const int Size = ::ArraySize(Parameters);
    bool Res = (Size > 1);

    if (Res)
    {
      ::ArrayResize(InputNames, Size - 1);

      for (int i = 1; (i < Size) && Res; i++)
      {
        InputNames[i - 1] = EXPERT::GetInputName(Parameters[i]);
        Res &= (InputNames[i - 1] != NULL);
      }
    }

    return(Res);
  }

Eingabegruppe "【label1】";

Diese Situation scheint nicht berücksichtigt zu werden. Wenn der Parameter eine Gruppe ist, gibt es keinen spezifischen Wert, und der empfangene Wert ist Null, so dass die Parameter nach der Gruppe nicht empfangen werden.

 
hini #:

Eingabegruppe "【label1】";

Diese Situation scheint nicht berücksichtigt zu werden. Wenn der Parameter eine Gruppe ist, gibt es keinen spezifischen Wert, und der empfangene Wert ist Null, so dass die Parameter nach der Gruppe nicht empfangen werden.

Wenn es ein Problem gibt, geben Sie bitte fertige mq5-Dateien zu reproduzieren.