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

 
Alexey Viktorov:

Die Frage scheint sich auf MT5 zu beziehen. Die Antwort lautet: Nicht programmatisch. Die Frage kann abgeschlossen werden.

Dankeschön

 

Guten Tag zusammen, wie versprochen bin ich wieder da, um weitere TutorialsЈ ;-) Natürlich habe ich die Gralsmaschine zum Laufen gebracht, aber sie war beim Testen langsam, also habe ich nach Möglichkeiten gesucht, den Code darin nur dann auszuführen, wenn ein neuer Takt eintrifft. Ich habe die folgende Option gefunden. Auf der globalen Ebene wird eine Variable definiert

int intBars;// ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

Dann habe ich eine Funktion geschrieben, die überprüft, ob ein neuer Balken aufgetreten ist - das ist ein Meisterwerk


bool f_IsNewBar()
{
   if(intBars != Bars) 
   {
      intBars = Bars;
      return(true);
   } 
return(false);
}

Als ich diese Variante fand, hieß es, ich solle eine Funktion mit der gesamten Logik des On-Ticks erstellen. Ich mag diesen Ansatz bei Funktionen ehrlich gesagt nicht, also prüfe ich einfach, ob es einen neuen Balken gibt, und wenn das der Fall ist, führe ich den Code im On-Tick aus. In vereinfachter Form - ohne wirkliche Arbeit - sieht das so aus

void OnTick()
{//НАЧАЛО ОН ТИК
   // если появился новый бар:
   if(f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    {// ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
}// КОНЕЦ ОН ТИК

Ich habe eine andere Frage. Der Gral wird natürlich auch im echten Fall funktionieren. Also, in der Version des Grals, die nicht im Tester getestet werden, aber wird auf dem realen Konto arbeiten, sollten wir diese Überprüfung zu entfernen, um die EA Arbeit auf jedem Tick zu machen oder sollten wir es für das reale Konto als auch verlassen? Wenn diese Prüfung auch in der Version für reale Konten enthalten ist, wie sollten wir einen zweiten Versuch planen, Aufträge zu öffnen, wenn sie beim ersten Mal nicht geöffnet wurden?

 
DanilaMactep:

Guten Tag an alle, wie versprochen bin ich zurück für weitere TutorialsЈ ;-) Natürlich habe ich die Gralsmaschine zum Laufen gebracht, aber sie war beim Testen langsam, also habe ich nach Möglichkeiten gesucht, den Code darin nur dann auszuführen, wenn ein neuer Takt eintrifft. Ich habe die folgende Option gefunden. Auf der globalen Ebene wird eine Variable definiert

Dann habe ich eine Funktion geschrieben, die überprüft, ob ein neuer Balken aufgetreten ist - das ist ein Meisterwerk


Als ich diese Variante fand, hieß es, ich solle eine Funktion mit der gesamten Logik des On-Ticks erstellen. Ich mag diesen Ansatz bei Funktionen ehrlich gesagt nicht, also prüfe ich einfach, ob es einen neuen Balken gibt, und wenn das der Fall ist, führe ich den Code im On-Tick aus. In vereinfachter Form - ohne wirkliche Arbeit - sieht das so aus

Ich habe eine andere Frage. Der Gral wird natürlich auch im echten Fall funktionieren. Diese Prüfung sollte also in der Version des Grals entfernt werden, die nicht im Tester getestet wird, sondern auf dem echten Tick ausgeführt wird, so dass der EA auf jedem Tick funktioniert, oder sollten wir diese Prüfung auch für den echten Tick beibehalten? Wenn diese Prüfung auch in der Version für reale Konten enthalten ist, wie sollten wir einen zweiten Versuch planen, Aufträge zu öffnen, wenn sie beim ersten Mal nicht geöffnet wurden?

Wenn die Berechnungen für die Balkenwerte von OPT, HI, LO, CLOSES durchgeführt werden, müssen wir dies nicht bei jedem Tick tun. Aber es ist richtig, den Kurs bei jedem Tick zu beobachten. Dies sollte durch separate Berechnungen oder Konditionsprüfungen erfolgen.

Der neue Takt wird auch durch die Öffnungszeit des Nulltaktes verfolgt.

FlagNewBar=false;   // глобальная или статик булева переменная
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }
 
Artyom Trishkin:

In diesem Thread möchte ich damit beginnen, denjenigen zu helfen, die wirklich das Programmieren in der neuen MQL4 verstehen und lernen wollen und einfach zu MQL5 wechseln wollen - die Sprachen sind sehr ähnlich.

Dieser Blog wird ein guter Ort sein, um Aufgaben, Algorithmen zu ihrer Lösung und alle anderen Fragen zur MT-Programmierung zu diskutieren.

Ich hoffe, dass sich andere erfahrene Mitglieder unseres Forums an der Diskussion beteiligen werden und dass die Branche für alle interessant sein wird.

MQL4-Aufgaben: Bestimmen Sie die Positionsnummer eines Großbuchstabens in einer Zeichenkette. Ich danke Ihnen.

 
Mikhail Nazarenko:

MQL4 Aufgabe: Bestimmen Sie die Positionsnummer eines Großbuchstabens in einer Zeichenkette. Ich danke Ihnen.

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   pos=StringFind(uppercase,StringSubstr(str,i,1));
   if(pos>=0) break;
   }
printf(pos);
 
Aleksei Stepanenko:

Ich danke Ihnen.

 
Mikhail Nazarenko:

Ich danke Ihnen.

Falsch, wir wollen nicht das Ergebnis von StringFind , sondern das i.

Richtig:

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   if(StringFind(uppercase,StringSubstr(str,i,1))>=0)
      {
      pos=i;
      break;
      }
   }
printf(pos);
 
Mikhail Nazarenko:

MQL4 Aufgabe: Bestimmen Sie die Positionsnummer eines Großbuchstabens in einer Zeichenkette. Danke.

Sie können StringGetCharacter() verwenden. Das Zeichen "A" ist 65 und "a" ist 32 mehr - 97. Und das gilt auch für alle anderen Figuren. Wenn also ein Zeichencode > 90 und <= 122 ist, handelt es sich um ein lateinisches Kleinbuchstaben-Zeichen. Kyrillische Zeichen unterscheiden sich ebenfalls um 32

 
Alexey Viktorov:

Sie können

Genau, eine gute Option.

 
Hallo. Wie kann ich hier ein Führungskonto einrichten?
Grund der Beschwerde: