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

 
Andrey Barinov:

So wird es kompiliert:


Danke. Ich dachte naiverweise, dass die Behebung eines Dutzends Kompilierungsfehler einen funktionierenden mql4-Code in einen mql5-Indikator verwandeln würde)

Es will nicht das Maximum oder Minimum eines Tages anzeigen. Wie weit ist es noch vom Ziel entfernt?

 
bij:

Danke. Ich dachte naiverweise, dass die Behebung eines Dutzends Kompilierungsfehler einen funktionierenden mql4-Code in einen mql5-Indikator verwandeln würde)

Es will nicht ein Minimum von einem Tag anzeigen. Wie weit ist es noch vom Ziel entfernt?

Ich weiß es nicht :)

Versuchen Sie, die Arrays von Puffern zu Beginn von OnCalculate mit ArraySetAsSeries zu erweitern

 
bij:

Danke. Ich dachte naiverweise, dass die Behebung eines Dutzends Kompilierungsfehler einen funktionierenden mql4-Code in einen mql5-Indikator verwandeln würde)

Es will nicht das Maximum oder Minimum eines Tages anzeigen. Wie weit ist sie vom Ziel entfernt?

Es gibt so viele Codezeilen, nur um die Höchst- und Tiefstwerte des Tages anzuzeigen?
 
Alexey Viktorov:
Das ist eine riesige Menge an Codezeilen, nur um die Hochs und Tiefs des Tages anzuzeigen.
Ja, es gibt auch den Tagesschluss, aber der steht in der Historie, nicht nur der Vortag. Darin liegt die Schwierigkeit.
 
bij:
Ja, auch das Ende des Tages, aber es steht in der Historie, nicht nur der Vortag. Das ist der schwierige Teil.

Ist das Ihr Code? Oder wurde sie auf Bestellung geschrieben?

Können Sie mir einen Schnappschuss davon zeigen, wie es in MT4 aussieht?

 
Alexey Viktorov:

Ist das Ihr Code? Oder wurde sie auf Bestellung geschrieben?

Können Sie mir einen Schnappschuss davon zeigen, wie es in MT4 aussieht?

Der Indikator ist aus dem Netz. Ich habe MT4 nicht zur Hand, ich werde es Ihnen in Worten sagen. Linien vom Anfang bis zum Ende eines jeden Tages, nach Höchst-, Tiefst- und Schlusskursen des Tages. Aber statt einer Linie zumSchlusskurs des Tages möchte ich eine Linie zum Schlusskurs des Balkens um 21:00 Uhr setzen

Vielleicht kann man es wirklich einfacher machen als ausgeklügelt.

 

Ich schließe 4 Positionen auf einmal, wie kann ich sie in der Verlustzählung als eine in einer Reihe zählen?

Es kann sein, dass sie aufgrund von Schlupf nicht zum gleichen Preis schließen und der Zeitpunkt unterschiedlich sein kann.

Versuchen Sie es:

int CountLOS()
  {
  double priceold=0;
  datetime datold;
   int count=0;
   for(int trade=OrdersHistoryTotal()-1;trade>=0; trade--)
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            if(OrderMagicNumber()==_MagicNumber)
              {
               if(OrderProfit()<=0&&datold !=OrderCloseTime()) {count++; datold =OrderCloseTime();}
               //if(OrderProfit()<=0&&priceold !=OrderClosePrice()) {count++; priceold =OrderClosePrice();}
               else  break;
              }
           }
        }
     }
   return(count);
  }
 
lil_lil:

Ich schließe 4 Positionen auf einmal, wie kann ich sie in der Verlustzählung als eine in einer Reihe zählen?

Es kann sein, dass sie aufgrund von Slippage nicht zum gleichen Preis schließen, und der Zeitpunkt kann unterschiedlich sein

Der Preis aufgrund des Slippage ist unterschiedlich, ebenso die Zeit; der eine hat am Ende der Sekunde geschlossen, während der andere zu Beginn der nächsten Sekunde geschlossen hat. Versuchen Sie, die Auftragskennungen zum Zeitpunkt des Abschlusses zu erfassen. Sie können sie in einer Datei aufzeichnen...

 
lil_lil:

Ich schließe 4 Positionen auf einmal, wie kann ich sie in der Verlustzählung als eine in einer Reihe zählen?

Es kann sein, dass sie aufgrund von Schlupf nicht zum gleichen Preis schließen und der Zeitpunkt unterschiedlich sein kann.

Versuch:

Ich fahre die zuletzt geschlossenen durch. Wenn die letzte geschlossene Position negativ ist, dann betrachte ich alle geschlossenen Positionen für 120 Sekunden (2 Minuten) und berechne den Gesamtgewinn

 
lil_lil:

Ich schließe 4 Positionen auf einmal, wie kann ich sie in der Verlustzählung als eine in einer Reihe zählen?

Es kann sein, dass sie aufgrund von Schlupf nicht zum gleichen Preis schließen und der Zeitpunkt unterschiedlich sein kann.

Ich habe es versucht:

Etwa so:

 datetime _oct=0,time=0,_pt=0;
 int _cnt=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
    if(OrderSymbol()==symb && OrderMagicNumber()==mg) {
     int OrdersType=OrderType();
     // BUY && SELL
     if(OrdersType<=1) {
       CopyTime(OrderSymbol(),PERIOD_D1,0,1,itime);
       if((OrderCloseTime()>=itime[0] && OrderCloseTime()<itime[0]+86400)) {
         _Get.Hist.BS._ProfitDaily+=OrderProfit()+OrderCommission()+OrderSwap(); // Profit за сегодня
       }
       // 120 секунд разницы между закрытием первой и последней в сетке
       _oct=OrderCloseTime();
       if(_cnt==0 && _oct!=0) time=_oct;
        if(_oct+120>=time) {
          _Get.Hist.BS._ProfitOldClose+=OrderProfit()+OrderSwap()+OrderCommission(); // Profit последнего трейда
          _cnt++;
        }
     }
  }}}