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

 

Guten Tag!

Bitte helfen Sie mir: Das Ziel ist es, eine Positionsschließung zu implementieren, wenn der Preis den MA überschreitet.

In diesem Code-Abschnitt

if(Bid<iMA(Symbol(),0,Fast_Ma_Period,Fast_Ma_Shift,Fast_Ma_Method,Fast_Ma_Price,0) && CountBuy()>0)
          
           
     {
     for(int i=OrdersTotal ()-1; i>=0; i--)
     {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderMagicNumber ()== MagicNumber && OrderType() == OP_BUY)
       if(!OrderClose(OrderTicket(), OrderLots(),Bid, Slippage, Black))
       Print("Ошибка");

erhalte ich folgendes Bild auf dem Tester : der Preis kreuzt den MA und schließt die Position beim Schließen der Kerze / Öffnen der nächsten Kerze, bereits weit entfernt vom gewünschten Schließungsniveau (MA-Grenze)....

Dateien:
 
rex1818 Positionsschließung zu implementieren, wenn der Preis den MA kreuzt.

In diesem Codeabschnitt

Ich erhalte das folgende Bild auf dem Tester : der Preis kreuzt den MA und schließt die Position bei der Schließung der Kerze / Eröffnung der nächsten Kerze, bereits weit von der gewünschten Schließung Ebene (MA Grenze)....

Die Ticks sind viel volatiler als der durchschnittliche MA auf dem Tick Cloz, so dass die Spanne zwischen den Ticks, innerhalb derer der MA-Wert erschien, eine übliche Sache ist. Der Preis ist diskret, und ich hoffe, Sie verwechseln nicht Bid und Ask (d.h. der MA nach Bid und die offenen Schlusskurse sind auch Bid, und der MA nach Ask und die Preise sind auch Ask).

Zy, können Sie nicht neu berechnen ma von bid oder ask, aber addieren Spread und subtrahieren, wird der Fehler minimal sein.
 
Valeriy Yastremskiy #:

Die Ticks sind viel volatiler als der durchschnittliche MA auf dem Tick Cloz, so dass die Spanne zwischen den Ticks, innerhalb derer der MA-Wert erschien, eine übliche Sache ist. Der Preis ist diskret, und ich hoffe, Sie verwechseln nicht bid und ask. d.h. ma by bid und closing open prices sind auch bid, und ma by ask und prices sind auch ask).

Zy, können Sie nicht neu berechnen ma von bid oder ask durch die Art und Weise, sondern fügen Sie Spread zu subtrahieren, wird der Fehler minimal sein.

Vielen Dank für die Antwort!

Heute werde ich versuchen, es herauszufinden, unter Berücksichtigung Ihrer Empfehlungen.

 
rex1818 Positionsschließung zu implementieren, wenn der Preis den MA kreuzt.

In diesem Codeabschnitt

Ich erhalte das folgende Bild auf dem Tester : der Preis kreuzt den MA und schließt die Position bei der Schließung der Kerze / Eröffnung der nächsten Kerze, bereits weit von der gewünschten Schließung Ebene (MA Grenze)....

Ist das Testen nach Schlussbalken nicht ausgewählt?

 
Alexey Viktorov #:

Wird die Prüfung nicht durch Barverschlüsse ausgewählt?

Guten Tag!

Testmodell: Alle Ticks (.....). Ich verstehe, dass die genaueste...

 
rex1818 #:

Guten Tag!

Testmodell: Alle Zecken (.....). Soviel ich weiß, ist die genaueste...

Und der Expert Advisor ist nicht auf der Grundlage der Eröffnung eines neuen Bar geschrieben?

Der Teil des Codes, den Sie gezeigt haben, ist nicht genug, um die Ursache eines solchen Verhaltens genauer zu vermuten.

 

Vielen Dank an alle, die geantwortet haben!

Ich habe die Fehler gefunden.

Jetzt funktioniert alles wie es soll.

 

Kann jemand beraten, wenn das Diagramm hat eine Grenze von 3000 Bars, und wir müssen die Geschichte von 2000000 Bars, mögliche Optionen, um historische Daten zu ziehen, ohne Änderung der Parameter - max. Bars im Fenster ????.


Mein System überlastet, wenn das Array wird 2 Millionen Indizes. Ich muss nach einer Lösung suchen, um die Geschichte unter Umgehung des Diagramms zu entladen.

   void SMA(const int aRatesTotal,const int aPrevCalc,const double  &aData[], double  &aMA[])
     {
      int Start=0;
      if(aPrevCalc==0)
        {
         for(int i=0;i<aRatesTotal;i++)
           {
            if(aData[i]!=0 && aData[i]!=EMPTY_VALUE)
              {
               Start=i+m_MAPeriod-1;
               break;
              }
           }
         aMA[Start]=0;
         for(int i=Start;i>Start-m_MAPeriod;i--)
           {
            aMA[Start]+=aData[i];
           }


Aber vor, dass ich dieses Array füttern.


   rt=aRatesTotal;
   prv=aPrevCalc;
   for(int i=0; i<m_max_period; i++)
     {
      ArrayResize(d[i].m,rt);
      ArrayResize(d[i].f,rt);
     }

   chsma.Solve(rt,prv,aData,d[m_max_period-1].m);
Es scheint, dass das System nicht wegen eines Arrays abstürzt, sondern weil es anfängt, Arrays von solcher Größe zu erstellen.
 

Guten Tag zusammen!

Ich möchte von Mql4 auf Mql5 umsteigen. Habe angefangen das Mql5 Referenzhandbuch zu lesen. Leider verstehe ich zwar alles, aber nicht alles. Wo kann ich Informationen wie Kovalevs Lehrbuch zu Mql4 finden , das von den Grundlagen ausgeht und die Funktionen von Mql5 detailliert beschreibt und vor allem konkrete Beispiele für die Codierung der einfachsten und häufigsten Operationen gibt. Das heißt, wir brauchen Schulungsinformationen nicht für fortgeschrittene Benutzer, sondern für Anfänger, die die Grundlagen lernen müssen und von ihnen ausgehend weitermachen.

Vielen Dank für Ihre Hilfe

 
ANDREY #:

Guten Tag, liebe Kolleginnen und Kollegen!

Ich möchte von Mql4 auf Mql5 umsteigen. Habe angefangen das Mql5 Referenzhandbuch zu lesen. Leider verstehe ich zwar alles, aber nicht alles. Wo kann ich Informationen wie Kovalevs Lehrbuch zu Mql4 finden , das von den Grundlagen ausgeht und die Funktionen von Mql5 im Detail beschreibt und vor allem konkrete Beispiele für die Programmierung der einfachsten und häufigsten Operationen gibt. Das heißt, wir brauchen Schulungsinformationen nicht für fortgeschrittene Benutzer, sondern für Anfänger, die die Grundlagen erlernen müssen und von ihnen aus weitermachen.

Vielen Dank für Ihre Hilfe

In der Code-Basis gibt es Expert Advisors und Indikatoren, die ursprünglich für MT4 geschrieben wurden und dann auf MT5 umgeschrieben wurden - Sie können sie für die Schulung verwenden.

In vielerlei Hinsicht sind sich die Sprachen ähnlich, stellen Sie sich die Aufgabe, den Code, den Sie verstehen, auf MT5 umzuschreiben - und nutzen Sie aktiv die Suche in den Anleitungen und im Portal - Sie werden immer eine Antwort finden, auch in den Artikeln.

Grund der Beschwerde: