[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 25

 
Liebe Programmierer. Als Anfänger fällt es mir schwer, einen Algorithmus zu schreiben, ich kann ihn bearbeiten, also helfen Sie mir bitte. Ich wäre Ihnen sehr, sehr dankbar!!!
Ein so einfacher EA und er braucht:

Wenn Bedingung1 erfüllt ist, dann:
-Prüfung auf offene SELL-Aufträge
-Prüfen Sie, ob SELL-Aufträge offen sind und schließen Sie diese.
Prüfen Sie, ob SELL-Aufträge eröffnet wurden - falls ja, schließen Sie diese.
-Eröffnung BUY-Bestellung

Das Gleiche gilt, wenn Bedingung 2 erfüllt ist, dann
-Prüfen, ob BUY-Aufträge geöffnet sind
-falls vorhanden, schließen Sie sie
Prüfen Sie, ob es offene BUY-Aufträge gibt - falls ja, schließen Sie sie.
-Eröffnung eines SELL-Auftrags
+ Fehleranalyse (nicht die Hauptsache, aber es ist möglich)
Dies alles gilt für das aktuelle Währungspaar.

int start()                       
  {
   double M_0, M_1,               // Значение MAIN на 0 и 1 барах
          S_0, S_1;               // Значение SIGNAL на 0 и 1барах
//--------------------------------------------------------------------
                                  // Обращение к функции техн.индикат.
   M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,  0);// 0 бар
   M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,  1);// 1 бар
   S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 бар
   S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 бар
//--------------------------------------------------------------------
                                  
   if( M_1 < S_1 && M_0 >= S_0 )  // УСЛОВИЕ 1: Зеленая пересекает красную снизу
     
   if( M_1 > S_1 && M_0 <= S_0 )  // УСЛОВИЕ 2: Зеленая пересекает красную сверху
     
//--------------------------------------------------------------------
   return;                            // Выход из start()
  }
 
Können Sie mir bitte sagen, ob es möglich ist, mehreren globalen Variablen innerhalb einer Funktion einen Wert zuzuweisen, und wo diese Variablen in diesem Fall deklariert werden sollten?
 
ideasforlife:
Liebe Programmierer. Als Anfänger fällt es mir schwer, einen Algorithmus zu schreiben, ich kann ihn bearbeiten, also helfen Sie mir bitte. Ich wäre Ihnen sehr, sehr dankbar!!!
Ein so einfacher EA und er braucht:

Wenn Bedingung1 erfüllt ist, dann:
-Prüfung auf offene SELL-Aufträge
-Prüfen Sie, ob SELL-Aufträge offen sind und schließen Sie diese.
Prüfen Sie, ob SELL-Aufträge eröffnet wurden - falls ja, schließen Sie diese.
-Eröffnung BUY-Bestellung

Das Gleiche gilt, wenn Bedingung 2 erfüllt ist, dann
-Prüfen, ob BUY-Aufträge geöffnet sind
-falls vorhanden, schließen Sie sie
Prüfen Sie, ob es offene BUY-Aufträge gibt - falls ja, schließen Sie sie.
-Eröffnung eines SELL-Auftrags
+ Fehleranalyse (nicht die Hauptsache, aber es ist möglich)
Dies alles gilt für das aktuelle Währungspaar.

In CodeBase gibt es viele Expert Advisors für Stochastik. Ansicht und Wiederholung
 
ideasforlife:
Liebe Programmierer. Als Anfänger fällt es mir schwer, einen Algorithmus zu schreiben, ich kann ihn bearbeiten, also helfen Sie mir bitte. Ich wäre Ihnen sehr, sehr dankbar!!!
Ein so einfacher EA und er braucht:

Wenn Bedingung1 erfüllt ist, dann:
-Prüfung auf offene SELL-Aufträge
-Prüfen Sie, ob SELL-Aufträge offen sind und schließen Sie diese.
Prüfen Sie, ob SELL-Aufträge eröffnet wurden - falls ja, schließen Sie diese.
-Eröffnung BUY-Bestellung

Das Gleiche gilt, wenn Bedingung 2 erfüllt ist, dann
-Prüfen, ob BUY-Aufträge geöffnet sind
-falls vorhanden, schließen Sie sie
Prüfen Sie, ob es offene BUY-Aufträge gibt - falls ja, schließen Sie sie.
-Eröffnung eines SELL-Auftrags
+ Fehleranalyse (nicht die Hauptsache, aber es ist möglich)
Das ist alles für das aktuelle Währungspaar.

Und noch einfacher wäre ein Beispiel aus dem Lehrbuch: https://book.mql4.com/ru/samples/expert.

Ist es so schwer, ein Lehrbuch von vorne bis hinten zu lesen?

 
ideasforlife:
Liebe Programmierer. Als Anfänger fällt es mir schwer, einen Algorithmus zu schreiben, ich kann ihn bearbeiten, also helfen Sie mir bitte. Ich wäre Ihnen sehr, sehr dankbar!!!
Ein so einfacher EA und er braucht:

Wenn Bedingung1 erfüllt ist, dann:
-Prüfung auf offene SELL-Aufträge
-Prüfen Sie, ob SELL-Aufträge offen sind und schließen Sie diese.
Prüfen Sie, ob SELL-Aufträge eröffnet wurden - falls ja, schließen Sie diese.
-Eröffnung BUY-Bestellung

Das Gleiche gilt, wenn Bedingung 2 erfüllt ist, dann
-Prüfen, ob BUY-Aufträge geöffnet sind
-falls vorhanden, schließen Sie sie
Prüfen Sie, ob es offene BUY-Aufträge gibt - falls ja, schließen Sie sie.
-Eröffnung eines SELL-Auftrags
+ Fehleranalyse (nicht die Hauptsache, aber es ist möglich)
Dies alles gilt für das aktuelle Währungspaar.


Fertige Lösung - in Lehrbuchform, hier. Nehmen Sie alles über den MACD weg - hier und das war's... :-Р

P.S. Sogar die Namen der Variablen sind fast identisch. Sie können unser Tutorial lesen, es enthält sowohl die Beschreibung als auch alles andere. :-Р

 
Roman.:


Fertige Lösung - in Lehrbuchform, hier. Nehmen Sie alles über den MACD weg - hier und das war's... :-Р

P.S. Sogar die Namen der Variablen sind praktisch identisch. Lesen Sie das Lehrbuch - dort gibt es eine Beschreibung und alles andere. :-Р

Ich zuerst! :-P :-P
 
Code:

Hallo, liebe Forumsmitglieder.

Natürlich habe ich einige Fragen von einem Neuling. Ich versuche, mql4 zu lernen, da ich noch nie ein Programm entwickelt habe, daher sind die Fragen vielleicht sehr primitiv. Aber ich war nie in der Lage, es selbst zu tun.

Ich habe mich entschlossen, mit der Anzeige von Volumina "herumzupfuschen", indem ich eine Linie anstelle eines Balkendiagramms mit einigen Bearbeitungen zeichne. Der Code sollte den folgenden Sinn ergeben. Ausgehend vom zweiten Balken, der sich in die gleiche Richtung wie der vorherige Balken bewegt (beide Balken sind aufwärts gerichtet), wird das Volumen vom zweiten Balken abgeleitet. Als Ergebnis erhalte ich eine unterbrochene Linie im Indikatorfenster, die zwar ab dem zweiten Balken aufwärts gezeichnet wird, aber aus irgendeinem Grund nicht in allen Fällen. Die Linie ist unterbrochen, weil andere Bedingungen ihrer Zeichnung überhaupt nicht definiert sind, sie ist eine Sache der Zukunft. Aber hier selbst zu verstehen, warum die Linie nicht auf jedem zweiten Balken nach oben gezogen wird, kann ich nicht. Bitte helfen Sie mir.

Hier ist der Code. Wenn Sie weitere Kommentare zu anderen Fehlern im Code haben, würde ich mich freuen.


Was ist die Bedeutung dieses Indikators? Warum brauche ich das überhaupt?


Warum sollten Sie eine solche Charakterisierung brauchen?

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;

Oder sie ist es, aber sie ist bereits aufgedeckt:

ExtVolumesBuffer[i]=Volume[i]+(Volume[i]+Volume[i+1])/(2-(Close[i]-Open[i+1])*1000);

???


Und zu den Fehlern im Kodex. Ihre Zeilen.

double dVolume=Volume[i];
double vback1=Volume[i+1];

         {
         double vteor12=(dVolume+vback1)/2;
            if (Close[i+1]>Open[i+1] && Close[i]>Open[i]) double UP12=(Close[i]-Open[i+1])*1000; else UP12=0;
            if (UP12!=0) double vrealUP12=(dVolume+vback1)/UP12; else vrealUP12=0;
            if (Close[i+1]>Open[i+1])
            if (Close[i]>Open[i])
            ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;
            if (ExtVolumesBuffer[i]<0) ExtVolumesBuffer[i]=0;
              }

Äquivalente der folgenden Punkte:

double dVolume=Volume[i];
double vback1=Volume[i+1];

double vteor12=(dVolume+vback1)/2;
if (Close[i+1]>Open[i+1] && Close[i]>Open[i])
{
   double UP12=(Close[i]-Open[i+1])*1000;
   double vrealUP12=(dVolume+vback1)/(Close[i]-Open[i+1])*1000;
   ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;
   if (ExtVolumesBuffer[i]<0)
      ExtVolumesBuffer[i]=0;
}
else
{
   UP12=0;
   vrealUP12=0;
}

Sie sehen sich den optimierten Code an und fragen sich, warum überhaupt so viele Variablen eingeführt wurden? Und warum sollten sie "sonst" auf Null gesetzt werden?

Wenn ich das Konzept des Indikators verstehen würde, könnte ich Ihnen helfen.

 
MaxZ:

Wozu soll dieser Indikator gut sein? Warum brauchen Sie überhaupt eine?


Warum sollten Sie ein solches Merkmal brauchen?

oder ist es, aber bereits offengelegt:

???


Und zu den Fehlern im Kodex. Deine Zeilen

sind das Äquivalent zu den folgenden:

Sie sehen sich den optimierten Code an und fragen sich, warum überhaupt so viele Variablen eingegeben wurden? Und warum sollten sie "sonst" auf Null gesetzt werden?

Wenn ich die Idee des Indikators verstanden habe, kann ich Ihnen vielleicht helfen.


Ich danke Ihnen für Ihre Antwort und werde Ihre Fragen beantworten.

Genau dieses Merkmal ist der Grundgedanke des Indikators. Ich habe auch eine Übung zu MQL vorbereitet. Ich habe mir eine Aufgabe ausgedacht und verstehe intuitiv, dass ihre Umsetzung in einer Sprache nicht sehr schwierig ist. Ich setze mich und probiere es aus.

Das Wesen des Merkmals besteht also darin, dass ich ein bestimmtes festes theoretisches Niveau von zwei einseitig gerichteten Volumen mit dem tatsächlichen Niveau vergleiche. Das heißt, wenn das tatsächliche Verhältnis zwischen der Summe der beiden Volumina und dem tatsächlichen "Open-Close"-Intervall höher ist als das angegebene theoretische, füge ich dem tatsächlichen zweiten Volumen einen "Bonus" in Form der Differenz zwischen den berechneten theoretischen und tatsächlichen Ergebnissen hinzu. Wenn der tatsächliche Pegel niedriger ist als der theoretische, ziehe ich die gleiche Differenz vom Volumen des zweiten Balkens ab. Ist es mir gelungen, es klar zu erklären?

Vorsichtshalber möchte ich sagen, dass Sie bei der Angabe dieses Merkmals die Klammern falsch gesetzt haben, wahrscheinlich in Eile.

Außerdem scheint mir, dass die Zeichenketten, die Sie als gleichwertig mit den meinen betrachten, zur Division durch Null führen werden. Ich werde jetzt nachsehen.

 

Hallo zusammen!

Dank der unschätzbaren Hilfe der Experten dieses Zweiges (insbesondere Roman) ist es mir gelungen, einen einfachen Expert Advisor zu erstellen, der auf dem Testgerät läuft. Frage: Wie lässt sich feststellen, ob sie für den realen Handel platziert werden kann? Gibt es irgendwelche Kriterien?

 
MaxZ:
Ich zuerst! :-P :-P

Du gehst überhaupt in die falsche Richtung... Es geht nicht um die richtigen Handelskriterien, es geht um STO-HAS-TO-KE... :-Р