Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1791

 
MakarFX #:

Damit Sie sich eine Erinnerung schreiben können - was ist die Funktion

:))) als ob ich das nicht selbst könnte, wenn ich es brauche: zwei Schrägstriche einfügen und ein paar Wörter schreiben. Haben Sie versucht, etwas in diesem Rahmen zu schreiben? Der Schrägstrich auf der rechten Seite wird um die Anzahl der eingegebenen Zeichen nach rechts verschoben, aber was ist, wenn Sie mehr als eine Zeile schreiben müssen? Anstatt etwas zu tun, muss ich meine Zeit damit verschwenden, Rahmen zu zeichnen. Es ist nur so, dass die Ideologie eine Art kranke Vision davon aufzwingt, wie es sein sollte.

 
Nerd Trader #:

:))) als ob ich das nicht selbst könnte, wenn ich es brauche: zwei Schrägstriche einfügen und ein paar Wörter schreiben. Haben Sie versucht, etwas in diesem Rahmen zu schreiben? Der Schrägstrich auf der rechten Seite wird um die Anzahl der eingegebenen Zeichen nach rechts verschoben, aber was ist, wenn Sie mehr als eine Zeile schreiben müssen? Anstatt etwas zu tun, muss ich meine Zeit damit verschwenden, Rahmen zu zeichnen. Ich vertrete nur eine kranke Vorstellung davon, wie es sein sollte.

Setzen Sie zwei Schrägstriche vor die Funktion, und schon kann es losgehen.

//
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime& time[],
                 const double& open[],
                 const double& high[],
 
MakarFX #:

Setzen Sie zwei Schrägstriche vor die Funktion, und Sie sind startklar

Ich habe bereits oben geschrieben, dass ein Rahmen eingefügt wird, wenn sich zwischen dem Kommentar und der Funktion eine Leerzeile befindet.
 

Wenn die Schaltfläche angeklickt wird, wird eine horizontale Linie erstellt. Sie werden je nach Position des Cursors in Bezug auf den Preis in einer anderen Farbe dargestellt. Das Problem ist, dass gelbe und graue Linien flackern und ständig neu erzeugt werden (grün ist OK), wenn sich der Cursor an der entsprechenden Position vom Preis entfernt befindet. Ein ähnlicher Code, bei dem nur die Eigenschaft der Linienfarbe geändert und nicht neu erstellt wird, funktioniert korrekt.

Das logische NOT steht hier an seiner Stelle, d.h. statt == 0 zu schreiben.

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
  ...
  ...
  ...
  if(ObjectGetInteger(0,"Button Stop Order",OBJPROP_STATE)){
    int x = (int)lparam;
    int y = (int)dparam;
    //Переведём координаты X, Y в дату и время
    if(ChartXYToTimePrice(0,x,y,window,dt,price)){
      //Линия меняет цвет с зелёного на желтый
      if(price < Bid){
        if(!ObjectFind("Buy Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Sell Stop";
          CreateLine(line_name, clrYellow);
        }      
      }
      //Линия меняет цвет с желтого на зелёный
      if(price > Ask){
        if(!ObjectFind("Sell Stop") || !ObjectFind("not allowed")){
          ObjectDelete(line_name);
          line_name = "Buy Stop";
          CreateLine(line_name, clrGreen);
        }
      }
      //Линия меняет цвет на серый если в зоне спреда
      if(price > Bid && price < Ask){
        if(!ObjectFind("Buy Stop") || !ObjectFind("Sell Stop")){
          ObjectDelete(line_name);
          line_name = "not allowed";
          CreateLine(line_name, clrGray);
        }
      }
      //Прикрепляем линию к курсору
      if(id == CHARTEVENT_MOUSE_MOVE)
        if(ObjectMove(0,line_name,0,0,price))
          ChartRedraw(0);
    }
  }else if(ObjectFind(line_name) == window) Print(ObjectDelete(line_name));
 
Nerd Trader eine horizontale Linie erstellt. Sie werden je nach der Position des Cursors in Bezug auf den Preis in einer anderen Farbe dargestellt. Das Problem ist, dass gelbe und graue Linien flackern und ständig neu erzeugt werden (grün ist OK), wenn sich der Cursor an der entsprechenden Position des Preises befindet. Ein ähnlicher Code, bei dem nur die Eigenschaft der Linienfarbe geändert und nicht neu erstellt wird, funktioniert korrekt.

Das logische NOT steht hier an seiner Stelle, d.h. statt == 0 zu schreiben.

ObjectFind ist ein int, nicht ein bool
 
Nerd Trader #:

Denn es ärgert mich wirklich, wenn man sich entscheidet, zu einer nativen mql4-Umgebung zu wechseln, und schon ist es passiert! Möchten Sie einen Rahmen? Und wir werden es trotzdem verkaufen.

Sie müssen die Makar-Methode anwenden, um zu bekommen, was Sie wollen.

MakarFX #:

Ich kannte die Formatvorlagen nicht, also habe ich sie so formatiert, wie ich sie lesen wollte.

 
MakarFX #:
ObjectFind ist ein int, nicht ein bool
In diesem Fall gibt es keinen Unterschied zwischen "!" und "==0".
 
Nerd Trader #:
In diesem Fall gibt es keinen Unterschied zwischen "!" und "==0".

Das ist ein Unterschied!!!

      if(!ObjectFind("Buy Stop"))Print("All right Христофор Бонифатич!");
      else Print("Something is wrong!");
      if(ObjectFind("Buy Stop")!=0)Print("All right Христофор Бонифатич");
 
Nerd Trader #:
In diesem Fall gibt es keinen Unterschied zwischen "!" und "==0".
if(!ObjectFind("Buy Stop"))

Diese Abfrage lautet wie folgt:

Wassili Iwanowitsch Tschapajew und Petka fliegen in einem Flugzeug, und plötzlich schreit Wassili Iwanowitsch, der am Steuer des Flugzeugs sitzt, auf:

"Petya, die Instrumente!"

Petya antwortet: "Achtunddreißig".

Wassili Iwanowitsch: "Achtunddreißig was?"

Petya: "Was ist mit den Instrumenten?"

 
MakarFX #:

Dieser Antrag sieht folgendermaßen aus:

Nein, Makar, es sieht so aus:

Die Funktion ObjectFind() gibt die Nummer des Hauptfensters zurück. Und diese Zahl ist 0. Andererseits ist 0 == false. Daraus folgt, dass die Funktion, wenn sie 0 zurückgibt, immer noch false zurückgibt. Natürlich würde ich dies nicht verwenden, denn wenn die Funktion -1 zurückgibt, d. h. einen Fehler, können wir davon ausgehen, dass sich das Objekt nicht im Hauptfenster befindet. Und außerdem weiß man nie, welche Korrekturen vorgenommen werden...

Generell gilt: Streiten Sie nicht und lernen Sie nicht, dies zu tun ...