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

 
Vladimir Pastushak:

Ich danke Ihnen. Ich habe Probleme mit dem Aufruf einer Methode einer übergeordneten Klasse.

Soweit ich mich erinnere, geschieht dies über die Methode parent ::.

Hat die Methode selbst einen Körper in der übergeordneten Methode?

 
Artyom Trishkin:

Hat die Methode selbst in der übergeordneten Methode einen Körper?

Ja, das tut sie.

Hier ist der Code, was mache ich falsch?

//+------------------------------------------------------------------+

class A

  {

public:

   virtual int Test_A()

     {

      return 100;

     }

  };

//+------------------------------------------------------------------+

class B :public A

  {

public:

   virtual int Test_A()

     {

      return 200;

     }

  };


B b;

//+------------------------------------------------------------------+

void OnStart()

  {

   Comment (A::b.Test_A());

  }

//+------------------------------------------------------------------+


 
Es gibt einen Zickzack-Indikator, der den Kurswert eines Extremums anzeigt. Ich musseine Trendlinie vom Extremum in die Zukunft (den nächsten Tag)zeichnen, wie kann ich das tun, ohne die Koordinaten des zweiten Punktes und den Zeitwert des ersten Punktes zu kennen?
 
Vladimir Pastushak:

Hier ist der Code, was mache ich falsch?

nein, so wird es nicht funktionieren

Wenn Sie nun eine Instanz der Klasse deklarieren und die Methode Test() aufrufen, wird immer B::Test() ausgeführt, aber wenn Sie B::Test() nicht geschrieben hätten, würde immer A::Test() ausgeführt.

Hier ist ein Beispiel. Experimentieren Sie damit

//+------------------------------------------------------------------+
class A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__); return 100;  }
  };

//+------------------------------------------------------------------+
class B :public A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__," = ", A::Test_A()); return 200;   }
  };

B b;

//+------------------------------------------------------------------+

void OnStart()

  {
   Print (__FUNCSIG__," = ",b.Test_A());
  }
//+-------------------------------------------------------------
 
Hallo. Wie führe ich eine Ordinalrechnung durch? So dass anstelle von SELL zuerst 1, dann 2 und so weiter steht... ...bis es sich aktualisiert, wenn keine Aufträge vorliegen. Einige Hinweise!
        if((fMarketOrderss(OP_SELL)>=1)) { 
       if( ((Bid-Opens)/ma+Times/1440) > SELL ) {
if(OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,NULL,321,0,1)>0){} }}
 
Seltsam, es antwortet niemand.
 
Rustam Bikbulatov:
Seltsam, es antwortet niemand.

Ich glaube nicht, dass jemand Ihren Beitrag versteht :)


 

Hallo, wie kann man den EA dazu bringen, eine Position mit einem bestimmten Volumen von Einzelaufträgen beider Positionen zu öffnen, z.B.

Wir haben das Volumen einer einzelnen Order = 1,35 Lots angegeben, und das Gesamtvolumen der offenen Positionen beträgt 500 Lots. Der EA öffnet eine Kauforder über 1,35 Lots und dann eine Verkaufsorder über 1,35 Lots,

und wiederholt sich dann, bis 500 Lose zum Kauf und 500 Lose zum Verkauf geöffnet sind, und da die Anzahl der Lose kein Vielfaches von 1,35 ist, muss der letzte Auftrag kleiner als 1,35 sein

 

Grüße.

Ich habe eine Funktion erstellt, die, wenn ein Auftrag Gewinnpunkte "bezubitok" erreicht, den Auftrag modifiziert, indem sie ihn auf das Niveau der Auftragseröffnung verschiebt. Es scheint korrekt zu funktionieren, aber beim Testen (und bei allen Ticks) wird jedes 10-20. Mal der Fehler 1 an das Protokoll gesendet.

Kein Fehler, aber das Ergebnis ist unbekannt

void Bezubitok(){
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic){
            if(OrderType()==OP_BUY){
               if (OrderStopLoss()!=OrderOpenPrice() && Ask-OrderOpenPrice()>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, Indigo)) {}
                  }
               }
            if(OrderType()==OP_SELL){
               if (OrderStopLoss()!=OrderOpenPrice() && OrderOpenPrice()-Bid>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, DeepPink)) {}
                  }
               }
            }   
         }
      }
   }

Was ist der Grund dafür und wie kann ich das Problem lösen?

 
Andrey Sokolov:

Grüße.

Ich habe eine Funktion, dass, wenn ein Auftrag erreicht "bezubitok" Punkte des Gewinns, es modifiziert die Reihenfolge, indem sie auf die Reihenfolge der Eröffnung Ebene. Es scheint richtig zu funktionieren, aber während des Tests (und bei allen Ticks) wird jedes 10-20. Mal Fehler 1 ins Protokoll geschrieben.

Was ist der Grund dafür und wie kann ich das Problem beheben?

Fehler 1 ist kein Fehler, aber das Ergebnis ist unbekannt. Der Punkt ist, dass Sie versuchen, den Stopp auf denselben Preis zu ändern, auf dem er sich bereits befindet. Bevor Sie ihn ändern, vergleichen Sie den Preis des Stopps mit dem Preis, auf den Sie ihn setzen wollen. Wenn der Preis bereits erreicht ist, gibt es nichts zu ändern.

Grund der Beschwerde: