Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 560

 
Leo59:
Mein Expert Advisor schreibt in deinit() 98496 Zeilen in die Log-Datei in *.csv
Warum es sich anders entlädt, wenn der Experte im Testgerät fertig ist:
- bei der Entladung am Ende des Testdatums ist alles normal ( 98496 Zeilen)
- im Falle des Entladens durch die Schaltfläche "Stop" nur etwa 10 % der Daten.
Wer weiß, was das Problem sein könnte?


Erzwungene Beendigung des Expert Advisors, wenn der Benutzer selbst den Expert Advisor entlädt.

ist es besser, die Daten direkt zu Beginn zu erfassen.

 
Roman.:

Leute, wie interpretiert ihr diese Warnung?

Ich danke Ihnen.


Funktion muss auf eine Variable gesetzt werden

zum Beispiel bool closee=OrderClose...........

  • Rückgabewert von 'OrderSelect' sollte geprüft werden
  • Rückgabewert von 'OrderDelete' sollte geprüft werden
  • Rückgabewert von 'OrderSend' sollte geprüft werden
  • Rückgabewert von 'OrderClose' sollte geprüft werden
  • Rückgabewert von 'OrderModify' sollte geprüft werden


Um solche Warnungen zu vermeiden, muss die Rückgabe an die Variable explizit angegeben werden
zum Beispiel so:
  • bool select1=OrderSelect..........
  • bool delete1=AuftragLöschen..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=AuftragSenden..........
 
Guten Tag. Können Sie mir sagen, ob es möglich ist, die Breite/Höhe in einem Diagramm eines OBJ_TEXT-Objekts zu definieren oder zu berechnen?
 
alxm:
Guten Tag. Können Sie mir sagen, ob es möglich ist, die Breite/Höhe in einem Diagramm eines OBJ_TEXT-Objekts zu bestimmen oder zu berechnen?

Wie berechnet man die Anzahl der Zeichen und die Schriftgröße oder ähnliches?
 
cipsi:

Wie findet man den OrderOpenPrice des allerersten offenen Auftrags, falls bekannt:

1.Symbol

2.BUY-Aufträge können von einem bis zu mehreren offen sein

3.Magie

4. die Unterschiede zwischen den Bestellungen, wahrscheinlich nach Tickets - suchen Sie das kleinste Ticket.


double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
  datetime t==0;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t>OrderOpenTime() || t==0) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
psdmaster:
Lesen Sie den Artikel über die Erstellung eines EA: https://book.mql4.com/ru/samples/expert

Können Sie mir sagen, wie man ein Geschäft auf einem Balken eröffnet und es schließt, wenn der nächste Balken erscheint?


1. Wenn Sie ein Geschäft eröffnen, denken Sie an die Uhrzeit der Bar

wie diese:

außerhalb des Starts:

 int timeopen;

am Anfang, wenn Sie einen Handel geöffnet haben:

 timeopen=Time[0];

So schließen:

if(timeopen!= Time[0]) OrderClose............
 
Zolotai:
Bitte sagen Sie es mir. Wie kann ich die Anzahl der offenen Aufträge für ein bestimmtes Symbol herausfinden, ohne Schleifen...


Es gibt keine Möglichkeit, dies ohne einen Zyklus zu tun.

 

Lieber, ich brauche deine Hilfe.

Ich optimiere meinen Expert Advisor durch den Indikator, der Code des Indikators ist unten.

Optimierung ist langsam, ich habe einen Code in der EA, um den Indikator auf eine neue Bar, die nicht ganz geeignet ist, neu zu berechnen gemacht.

Bitte sehen Sie sich den Code des Indikators an und überlegen Sie, was Sie tun können, damit die Neuberechnung schneller erfolgt.

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
extern int Limit=70;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for(i=limit1;i>=0;i--) {ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];}
   for(i=limit2;i>=0;i--) {ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_EMA,i);}
   for(i=limit3;i>=0;i--) {ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_EMA,i);}
   for(i=limit4;i>=0;i--) {ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p4, 0, MODE_EMA,i);}

   return(0);
  }
 

Wo kann ich etwas über Klassen in mt4 lesen?

Ich habe die Hilfe gelesen, aber dort wird nicht erklärt, was die folgenden Zeilen bedeuten

CArray::CArray(void) : m_step_resize(16),
                       m_data_total(0),
                       m_data_max(0),
                       m_sort_mode(-1)
  {
  }

wo man über die Initialisierung von Variablen lesen kann...

 
Vladon:


Funktion muss variabel eingestellt werden

z.B. bool closee=OrderClose...........

  • Rückgabewert von 'OrderSelect' sollte geprüft werden
  • Rückgabewert von 'OrderDelete' sollte geprüft werden
  • Rückgabewert von 'OrderSend' sollte geprüft werden
  • Rückgabewert von 'OrderClose' sollte geprüft werden
  • Rückgabewert von 'OrderModify' sollte geprüft werden


um solche Warnungen zu vermeiden, muss die Rückgabe an die Variable explizit angegeben werden
wie diese:
  • bool select1=OrderSelect..........
  • bool delete1=AuftragLöschen..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=AuftragSenden..........


Ich danke Ihnen. Es funktionierte ohne jegliche Warnungen:


Geleitet von einem Beispiel aus dem Handbuch :-)


OrderDelete

Löscht einen zuvor erteilten schwebenden Auftrag.

bool OrderDelete(
int ticket, //Bestellnummer
Farbe arrow_color // Farbe
);

Parameter

Ticket

[Eindeutige Seriennummer der Bestellung.

Pfeil_Farbe

[in] Farbe des Pfeils im Diagramm. Fehlt dieser Parameter oder hat er den Wert CLR_NONE, wird der Pfeil nicht im Diagramm angezeigt.

Zurückgegebener Wert

Gibt true zurück, wenn die Funktion erfolgreich abgeschlossen wurde, oder false, wenn ein Fehler auftrat. Um die Fehlerinformationen zu erhalten, rufen Sie GetLastError() auf.

Beispiel:

if(Frage>var1)
{
OrderDelete(order_ticket);
zurück(0);
}