Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 876

 
Vitaly Muzichenko:

Leider bin ich nicht auf den Artikel gestoßen, vielleicht kann ihn jemand anderes empfehlen.

Sie werden keine Aufträge erteilen können, weil Sie nicht in der Lage sind, den richtigen Einstellpreis einzugeben. Das Gleiche gilt für Grundstücke.

Ich stelle mit der Maus ein.

  • Klick über Preis+Strg - Verkaufslimit
  • Klicken Sie unter dem Preis+Strg -Kaufen Limit
  • Klick über dem Preis+Strg+Umschalttaste - Kaufstopp
  • Klicken Sie unter dem Preis+Strg+Umschalttaste - Verkaufsstopp
Sie können auch BuyStopLimit und SellStopLimit verschieben
 
Artyom Trishkin:

Ich wette mit der Maus.

  • Klick über Preis+Strg - Verkaufslimit
  • Klicken Sie unter dem Preis+Strg -Kaufen Limit
  • Klick über dem Preis+Strg+Umschalttaste - Kaufstopp
  • Klicken Sie unter dem Preis+Strg+Umschalttaste - Verkaufsstopp
Sie können auch BuyStopLimit und SellStopLimit mit dem Shift setzen

Das Bedienfeld aus diesem Artikel https://www.mql5.com/ru/articles/62 wird im Tester funktionieren (nur Tasten)?

Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • 2010.04.15
  • Евгений
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
 
Sergey Savinkin:

Funktioniert das Bedienfeld aus diesem Artikel https://www.mql5.com/ru/articles/62 im Testgerät (nur Tasten)?

Also probieren Sie es aus - was hält Sie davon ab?

Ich habe gerade selbst geschrieben, wie ich die ausstehenden Aufträge in den Visualisierer einfüge.

 
Artyom Trishkin:

Also probieren Sie es aus - was hält Sie davon ab?

Ich habe einfach geschrieben, wie ich die schwebenden Aufträge im Visualizer einstelle.

Ich probiere es jetzt aus. Ich wollte keine Zeit verschwenden, ich brauche das Panel nicht für den Betrieb des Roboters, ich brauche es nur für einen Test. Daher hatte ich nicht vor, mich eingehend mit dem Thema zu befassen.

 
Guter Artikel, aber dasOnChartEvent()-Ereignis wird im Testgerät nicht aufgerufen, die Schaltflächen funktionieren nicht. Ich habe die Lösung im Forum gefunden: https://www.mql5.com/ru/forum/42817/page2
Использование переменных в событии OnChartEvent индикатора в тестере
Использование переменных в событии OnChartEvent индикатора в тестере
  • 2016.02.25
  • www.mql5.com
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
 

Können Sie mir sagen, warum das Array of Range auftritt, wenn ich den Code unten von close[i-1] zu close[i-2] ändere? Der Code wurde streng nach MQL5 Buch geschrieben, aber es erklärt nicht, warum der Puffer überlaufen ist, wenn der Preis um mehr als 2 Zellen verschoben wird.

  {
   int values_to_copy;
   int start;
   int calculated=BarsCalculated (iBands1_handle);

   
   if (calculated <=0)
   {
    return (0);
   }
   if (prev_calculated==0 || calculated!=bars_calculated)
   {
    start=1;
    if (calculated> rates_total) values_to_copy=rates_total;
    else values_to_copy=calculated;
    }
    else
    {
   start=rates_total-1;
   values_to_copy=1;
   }
   
   if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0);

   for (int i=start; i <rates_total &&!IsStopped ();i++)
   {
    Print("C ", close[i-2]);
   }
 
clickaider:

Können Sie mir sagen, warum das Array of Range auftritt, wenn ich den Code unten von close[i-1] zu close[i-2] ändere? Der Code wurde streng nach dem MQL5-Buch geschrieben, aber er beschreibt nicht, warum die Entnahme aus dem Puffer erfolgt, wenn der Preis um mehr als 2 Zellen verschoben wird.

Ich glaube, wir sprechen von einem Indikator. Betrachten wir also zwei Fälle des Zugriffs auf eine Array-Zeitreihe"close": (1) was passiert, wenn"start" gleich "1" ist und (2) was passiert, wenn"start" gleich "rates_total-1" ist.

Berechnen Sie einfach im Geiste den resultierenden"close"-Array-Index, wenn Sie versuchen, "close[i-2]" für Fall (1) und für Fall (2) auszuführen.

 
Vladimir Karputov:

Ich verstehe, dass wir über einen Indikator sprechen. Betrachten wir also zwei Fälle des Zugriffs auf das Zeitreihen-Array"close": (1) was passiert, wenn"start" gleich "1" ist und (2) was passiert, wenn"start" gleich "rates_total-1" ist.

Berechnen Sie einfach im Geiste den resultierenden"close"-Array-Index, wenn Sie versuchen, "close[i-2]" für Fall (1) und für Fall (2) auszuführen.

Danke, ich habe es überprüft, es war notwendig, eine Zahl größer als 1 in den Wert start = 1 zu setzen, das Debugging zeigte, dass der Fehler auftritt, wenn das close-Array versucht, einen Wert aus einer Zelle zu nehmen, die zu Beginn der Neuberechnung noch nicht erschienen ist.

 
Ich würde gerne ein zweidimensionales Array mit den Eröffnungs- und Schlusszeiten und den Candlestick-Längen erstellen, und das wäre sehr interessant. Ich möchte ein EA auf der Grundlage dieses Beispiels mit höheren Mathematik, nämlich das dreifache Integral zu erstellen. lassen Sie uns davon ausgehen, x und y kennen den Preis und die Zeit, finden z - in diesem Fall ich tun.
 
Eine andere Frage - wenn dieser Code die Bedingung setzt, dass der Schlusskurs höher als die Linie sein wird (nehmen wir an, dass diese Bedingung tatsächlich vor dem Start des Programms ist), funktioniert der Code so, wie er sein sollte, aber wenn wir eine umgekehrte Bedingung hinzufügen, d.h. andere aktuelle Bedingungen vor dem Start des Codes, werden die Daten nach dem Debugging nicht korrekt sein. Bitte teilen Sie mir mit, warum das passiert? Schließlich handelt es sich hier nur um einen Vergleich in einer Bedingungsanweisung, warum sollte sich dies überhaupt nachteilig auf die Leistung des Codes auswirken?
   for (int i = start; i < rates_total &&!IsStopped ();i++)
   {
    if(close[i] > Upper[i])
    Print("C ", close[i]);
    
Beispiel: wenn
if(close[i] < Upper[i])

Das Ergebnis der Fehlersuche sieht wie folgt aus:

Die Daten werden korrekt übertragen und im gleichen Rhythmus wie der Preis aktualisiert.

Aber wenn wir anfangs eine solche Bedingung stellen:

if(close[i] > Upper[i])

Dann ist das Ergebnis falsch:

Das heißt, die Werte der Schlusskurse stimmen nicht mit dem aktuellen Kurs überein


Ich kann nicht verstehen, warum das so ist.

Grundlegender Code-Block in Beitrag
Grund der Beschwerde: