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

 

Hallo zusammen!

1) Zusammenstellung des EA.

2) Führen Sie es im Testprogramm aus.

3) Es gibt drei Einträge im Protokoll:

2020.10.25 20:06:08.484 2020.09.24 00:00:00 OVERLOAD Test gestartet

2020.10.25 20:06:07.015 TestGenerator: aktuelle Spanne 7 verwendet
2020.10.25 20:05:51.296 Expert UPDATE GBPUSD,M1: erfolgreich geladen


4) Die Visualisierung bleibt an Ort und Stelle.

Unabhängig davon, welcher logische Fehler gemacht wurde, werden die Geschäfte zum Beispiel nicht ausgeführt, sondern der Prüfer sollte mit dem Zählen der Balken beginnen. Aber das Diagramm friert ein und bleibt stehen.

Ich habe mehrere andere Expert Advisors ausprobiert, und sie funktionieren alle.

Wenn ich dieses Programm ausführe, bleibt alles stehen.

Hatte jemand ein solches Problem? Wie kann man das beheben?

 
Andrey Ilinykh:

Wenn Sie berechnete Werte in ein Protokoll oder eine Datei schreiben, wie hilft das?

Finden Sie den Fehler, bilden Sie einen Algorithmus.

 
Alexey Viktorov:

Nun, man kann den Winkel mit einem Tangens berechnen. Und man braucht nicht unbedingt einen Winkel, sondern nur eine Tangente.

Die Tangente ist auf jeden Fall ein Kilometer pro Stunde oder ein Punkt pro Meile oder tausend Punkte pro Tag, und das ist die Geschwindigkeit. Die Dimensionalität des Diagramms. und die Tangente daran ist der Winkel, der mit der Ordinate und der Abszisse verbunden ist. Dies ist der richtige Ort für den Anfang.

 
Aleksei Stepanenko:

Ja, auch hier ist die Geschwindigkeit nur eine Einheit: Pips pro Minute. Was die Wochenenden und Löcher betrifft, habe ich beschlossen: Was die Kerzen auf dem Diagramm sind, ist das Zeitintervall, und was nicht (Tage/Stunden) ist, existiert nicht. Denn wenn wir die Wochenenden mit einbeziehen und der Preis zu dieser Zeit stillsteht, wird die Geschwindigkeit ohne Grund merklich sinken. Aber das ist wiederum jedem selbst überlassen :)

Warum Angst vor Geschwindigkeit. Es ist nur eine Konvention, Typen zu geben.
Als eine Variante der Winkeldefinitionsfunktion:

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

Nach MT5 ist das Gefühl von MT4 einfach furchtbar. Der Zugang zur Geschichte ist irgendwie entschärft. Ich spreche nicht einmal von den Zecken.



Dateien:
Angle.mq4  11 kb
iCanvas.mqh  49 kb
 

Bitte teilen Sie mir mit, ob es eine Möglichkeit gibt, die Anzeige von Handelsstufenbeschreibungen im Chart programmatisch zu steuern. Ist es möglich, sie mit den MQL4-Tools zu deaktivieren (und dabei die Handelsstufen auf dem Diagramm zu belassen) oder sie zu ändern?


Ich muss einige Handelsstufen visuell markieren und sie mit eigenen Beschreibungen versehen. Dazu erstelle ich horizontale Linien, die den Handelsstufen ähnlich sind, sich aber farblich unterscheiden, gebe ihnen eine Beschreibung (OBJPROP_TEXT) und aktiviere die Anzeige von Objektbeschreibungen im Chart (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). In diesem Fall überlagert die von mir erstellte Beschreibung die auf dem Screenshot gezeigte, so dass keine der beiden Beschreibungen lesbar ist.

Ist es möglich, die Beschreibungen der vom Terminal erstellten Handelsstufen zu deaktivieren oder zu ändern? Sind diese Beschreibungen über das MQL-Programm zugänglich?

 
Janis Ozols:

Bitte teilen Sie mir mit, ob es eine Möglichkeit gibt, die Anzeige von Handelsstufenbeschreibungen im Chart programmatisch zu steuern. Ist es möglich, sie mit den MQL4-Tools zu deaktivieren (und dabei die Handelsstufen auf dem Diagramm zu belassen) oder sie zu ändern?


Ich muss einige Handelsstufen visuell markieren und sie mit eigenen Beschreibungen versehen. Dazu erstelle ich horizontale Linien, die den Handelsstufen ähnlich sind, sich aber farblich unterscheiden, gebe ihnen eine Beschreibung (OBJPROP_TEXT) und aktiviere die Anzeige von Objektbeschreibungen im Chart (ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true)). In diesem Fall wird die von mir erstellte Beschreibung über die auf dem Screenshot gezeigte Beschreibung gelegt, so dass beide nicht zu unterscheiden sind.

Ist es möglich, die Beschreibungen der vom Terminal erstellten Handelsstufen zu deaktivieren oder zu ändern? Sind diese Beschreibungen aus dem MQL-Programm heraus zugänglich?

Ja, die gibt es,

deaktivieren Sie das Kontrollkästchen.

1

 
Alekseu Fedotov:

Sie können unter
das Häkchen entfernen.

Wenn Sie dieses Kontrollkästchen deaktivieren, verschwinden die Handelsstufen (Linien) selbst zusammen mit ihren Beschreibungen aus dem Diagramm.

Mit meiner Frage wollte ich betonen, dass ich die Linien nicht entfernen, sondern nur ihre Beschreibungen im Diagramm ändern oder löschen möchte (im Screenshot durch Pfeile gekennzeichnet).

 
Janis Ozols:

Wenn Sie dieses Kontrollkästchen deaktivieren, verschwinden die Handelsstufen(Linien) zusammen mit ihren Beschreibungen aus dem Diagramm.

Mit meiner Frage wollte ich betonen, dass ich die Linien nicht entfernen, sondern nur ihre Beschreibungen im Diagramm ändern oder löschen möchte (im Screenshot durch Pfeile gekennzeichnet).

Du brauchst sie nicht, du erstellst deine Linien an diesen Stellen.

 
Vitaly Muzichenko:

Du brauchst sie nicht, du erstellst deine Linien an diesen Stellen.

Ich möchte nur einige der vorhandenen Ebenen hervorheben(für das im Screenshot gezeigte Beispieldie oberste Ebene) und die anderen so lassen, wie sie sind.

Wenn es nicht möglich ist, programmatisch auf die Beschreibungen dieser Ebenen zuzugreifen, müssen wir wahrscheinlich die Ebenen selbst deaktivieren und dann bei jeder Abfrage des Terminals die Ebenen unabhängig voneinander zeichnen, indem wir die entsprechenden Ebenen in einer anderen Farbe hervorheben und sie mit einer anderen Beschreibung versehen. Und es gibt nicht nur offene Levels, sondern auch Stop-Losses und Take-Profits, die ebenfalls gezogen werden müssen.

Vielleicht gibt es eine trivialere Möglichkeit, die Beschreibung der Handelsstufen zu deaktivieren (so dass nur Zeilen übrig bleiben) oder sie zu ändern?

 

Können Sie bitte in einfacher Sprache erklären, worin der Unterschied zwischen diesen Funktionen besteht?

//+------------------------------------------------------------------+
int    CountOrder(int Order_Type) 
   {
    int Orders=0;
    for(int a=OrdersTotal()-1;a>=0;a--)
    {
     if(OrderSelect(a, SELECT_BY_POS, MODE_TRADES)==false) continue;
     if(OrderSymbol()!=_Symbol) continue;
     if(Order_Type == OrderType() || Order_Type == -1) Orders++;
    }
    return Orders;
   }
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
  {
   int cnt=0;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
         if(OrderSymbol()==_Symbol)
            if(OrderType()==order_type)
               cnt++;
   return (cnt);
  }
//+------------------------------------------------------------------+
Grund der Beschwerde: