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

 

Nachmittags.

Ein paar Fragen zum Tester in MT5:

1) In MT5, im visuellen Testmodus des Expert Advisors, werden alle Indikatoren, die durch iCustom im Expert Advisor Code berechnet werden, auf den Chart selbst angewendet. Wie kann sie deaktiviert/angepasst werden?

2) Ich habe einen einzelnen Testlauf im Tester mit "visuellem Modus mit Anzeige von Charts, Indikatoren und Handel" aktiviert, und dann habe ich den gleichen Testlauf mit deaktiviertem Modus (ohne Visualisierung). Im ersten Fall ist das Gleichgewichtsdiagramm ganz normal gezeichnet, während es im zweiten Fall nur eine gerade Linie in einigen Zellen ist. Womit kann das zusammenhängen?

 
satorifx:

Nachmittags.

Ein paar Fragen zum Tester in MT5:

1) In MT5, im visuellen Testmodus des Expert Advisors, werden alle Indikatoren, die durch iCustom im Expert Advisor Code berechnet werden, auf den Chart selbst angewendet. Kann dies auf irgendeine Weise deaktiviert/angepasst werden?


1.testHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Wie unterscheidet man zwischen dem Löschen eines grafischen Objekts und dem Umbenennen eines grafischen Objekts? In beiden Fällen wird ein Löschungsereignis erzeugt. Wie kann ich das eine vom anderen unterscheiden?
 
leonerd:
Wie unterscheidet man zwischen dem Löschen eines grafischen Objekts und dem Umbenennen eines grafischen Objekts? Das Löschereignis wird in beiden Fällen erzeugt. Wie kann man das eine vom anderen unterscheiden?

Das können Sie nicht. Umbenennen heißt, löschen und neu anlegen. Versuchen Sie also, die Erstellung nach der Löschung zu erfassen.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 

Können Sie mir sagen, was ich schreiben muss, um zufällige 6-stellige Zahlen zu erhalten?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

Können Sie mir sagen, was ich schreiben muss, um zufällige 6-stellige Zahlen zu erhalten?

Ich habe diese Lösung gefunden

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

Diese Lösung gefunden

Vitaly, das ist nicht die beste Lösung.

Zunächst einmal sollten Sie in diesem Fall besser eine do while-Schleife verwenden.

Zweitens ist es meiner Meinung nach sicherer, bei der Potenzierung eine Zahl mit mehr als 6 Ziffern zu erhalten als bei der Multiplikation. Aber in diesem Fall ist es möglich, INF zu bekommen. Aber Sie können den Wert der Leistung begrenzen... In meinem Beispiel beträgt die Leistung nicht mehr als 16.

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

Nimm den Rest der Division und erhalte eine sechsstellige Zahl.

 
Alexey Viktorov:

Vitaly, das ist nicht die beste Option.

Zunächst einmal ist es in diesem Fall besser, eine do while-Schleife zu verwenden.

Zweitens ist es meiner Meinung nach sicherer, bei der Potenzierung eine Zahl mit mehr als 6 Ziffern zu erhalten als bei der Multiplikation. Aber in diesem Fall ist es möglich, die INF zu bekommen. Aber Sie können den Wert der Leistung begrenzen... In meinem Beispiel beträgt die Leistung nicht mehr als 16.

Und der Rest der Division ergibt eine sechsstellige Zahl.

Danke, ich habe den Teil im Code ersetzt.

 
Vitaly Muzichenko:

Danke, ich habe einen Teil davon im Code ersetzt.

Und was war das Ergebnis? Ich behaupte nicht, unfehlbar zu sein...)))

Grund der Beschwerde: