[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 358

 
Chiripaha:

Dieser Parameter ist für die Farbe des Löschpfeils https://docs.mql4.com/ru/trading/OrderDelete verantwortlich - Sie können ihn (den Parameter) dort ganz entfernen, dann erscheint der Pfeil eben nicht. Und wenn Sie wirklich einen Pfeil brauchen, sollten Sie den Abschnitt über die Variablentypen im Buch noch einmal lesen.

Übrigens bin ich auch nicht besonders versiert im Programmieren (manche Leute nennen es Programmieren, ohne zwischen diesen Begriffen zu unterscheiden - aber es ist Programmieren). Und so habe ich in Nachschlagewerken nachgeschlagen, was diese Dinge sind. Kauen Sie Nachschlagewerke und Lehrbücher öfter durch. In der Regel werden dort die meisten Themen behandelt. - Das macht jeder, auch die Erfahrenen, denn man kann nicht alles auswendig lernen. Dies sind alles Referenzmaterialien.

clDelete - wie Sie vielleicht erraten, steht cl für Farbe und Delete für Löschen. Die Farbe der Löschung.


Vielen Dank für die Antwort, ich habe die Variable clDelete bereits gelöscht.

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
          }

Aber in diesem Fall erzeugt der Compiler einen anderen Fehler.

'DeleteOrders' - Funktion liefert kein Ergebnis C:\Programmdateien\Alpari NZ MT4\experts/delete.mq4 (68, 5)

Wie man das beheben kann.


 
solnce600:

Guten Tag zusammen!

Ich versuche, die Funktion zum Löschen ALLER ausstehenden Aufträge im Tester von Kims Funktionen zu verwenden

Wenn ich versuche, es zu kompilieren, erhalte ich die Fehlermeldung, dass die Variable "clDelete " nicht definiert ist.

'clDelete' - Variable nicht definiert C:\Programmdateien\Alpari NZ MT4\experts\Positive.mq4 (94, 38)

Bitte sagen Sie mir, wie und wo sie definiert werden sollte?

Ich danke Ihnen.

Kehren Sie zunächst die Schleife um:

    for (i = k - 1; i <= 0; i--)

und geben Sie der Funktion OrderDelete(), was sie will.

 
TarasBY:

Array-Aufzählung:

- Wenn ich Ihre "Wünsche" richtig verstehe.

Igor, ich danke dir sehr!

So wie ich es verstehe, gibt es keine spezielle Funktion, also muss es mit roher Gewalt geschehen.

 
Chiripaha:

Igor, ich danke dir sehr!

So wie ich es verstehe, gibt es keine spezielle Funktion, also muss es ein Overkill sein.

Es gibt keine Standardfunktion.
 
solnce600: 'DeleteOrders' - Funktion liefert kein Ergebnis C:\Programmdateien\Alpari NZ MT4\experts\Orders.mq4 (68, 5)

Ihre (selbst geschriebene) Funktion DeleteOrders() gibt NICHTS zurück! Sehen Sie sich Ihren Code an - wie Sie ihn aufrufen.
 

Vielen Dank für Ihre prompte Antwort.

Die Schleife wurde eingerichtet.

Jetzt wird ein weiterer Fehler erzeugt

DeleteOrders' - Funktion liefert kein Ergebnis

Und was braucht die Funktion OrderDelete(OrderTicket()) außer OrderTicket() und abgesehen von der Pfeilfarbe (die ich nicht brauche) noch als Übergabeparameter?

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
   for (i = k - 1; i <= 0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
 
TarasBY:
Ihre (selbst geschriebene) Funktion DeleteOrders() gibt NICHTS zurück! Sehen Sie sich Ihren Code an - wie Sie ihn aufrufen.
D.h. es sollten TRUE- oder FALSE-Zeilen am Ende Ihres eigenen Funktionscodes stehen?
 
TarasBY:
Ihre (selbst geschriebene) Funktion DeleteOrders() gibt NICHTS zurück! Sehen Sie sich Ihren Code an - wie Sie ihn aufrufen.

Einfügen von Zeilen am Ende des Funktionscodes, die true zurückgeben

Der Funktionsaufruf wurde geändert

R = DeleteOrders(true);
if(R ==true )

Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1500*Point,1,iHigh( Symbol (), 0,1),iHigh( Symbol (), 0,1)-1610*Point, "jfh",123 );//ENA
//Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1000*Point,1,iHigh( Symbol (), 0,1)+330*Point,iHigh( Symbol (), 0,1)-1100*Point, "jfh",123 );//ENA
if (Ticket>0)
X=iHigh( Symbol (), 0,1);
if (OrderSelect (ot-1,SELECT_BY_POS)
if ( OrderType ()==OP_SELLSTOP)
DT = OrderOpenTime ();

}
}

return(0);

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;

if (sy=="") sy=Symbol();
for (i = k - 1; i <= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn)
{
int W = OrderDelete(OrderTicket());
if (W==true)
return(true);

Gibt denselben Fehler zurück.

'DeleteOrders' - Funktion liefert kein Ergebnis

Könnten Sie mir bitte sagen, wo mein Fehler liegt?

Ich danke Ihnen.

 
solnce600:

Einfügen von Zeilen am Ende des Funktionscodes, die true zurückgeben

Der Funktionsaufruf wurde geändert

R = DeleteOrders(true);
if(R ==true )

Der Funktionstyp wurde vergessen:

void bool DeleteOrders (string sy="", int op=-1, int mn=-1)
 
TarasBY:

Die Art der Funktion wird vergessen:

Alles OK!!! Vielen Dank!!!