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

 
artmedia70:
All Buy und All Sell sind zwei verschiedene Skripte. Das war von Anfang an klar. Die Frage ist, ob es absolut alle Positionen schließen sollte. Oder sollten nur die Positionen geschlossen werden, die sich in dem Diagramm befinden, in dem das Skript ausgeführt wird? Sollen manuell eröffnete Positionen oder von einem Expert Advisor eröffnete Positionen oder beide geschlossen werden?

Andernfalls können sie irgendwelche Fehlermeldungen, Prüfungen usw. schreiben. Ich denke, dieses Skript braucht so etwas nicht. Ich benutze keine EAs, ich nur trier jetzt, ich habe keine Pläne für Klassen in meinem Leben in den nächsten Monat, ich habe beschlossen, Forex zu überprüfen.
 
bambastik:
Das ist alles absolut richtig, aber je nach Art des Diagramms, auf dem das Skript basiert, ist es besser, alle möglichen Fehlermeldungen zu erhalten, um es so einfach wie möglich zu machen. Ich verwende keine Expert Advisors, ich bin im Moment nur am Ausprobieren, ich plane keine Aktivitäten in meinem Leben in den nächsten Monaten, deshalb habe ich beschlossen, einen Blick auf Forex zu werfen.

Es ist also die Verarbeitung von Handelsfehlern, die in diesem Fall den Unterschied zwischen einem guten Skript und einem Tutorium ausmacht. Wollen Sie daraus lernen oder wollen Sie, dass es zu 100 % funktioniert?

Wenn Sie nur das Prinzip wissen wollen, hier ist es:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()>1)      continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Sie schließt sowohl den Kauf als auch den Verkauf ab.

Es gibt absolut keine Fehlerbehandlung. Sie können nur Kaufen oder nur Verkaufen für sich abschließen - entfernen Sie eine Zeile.

Na ja... nur kaufen:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Zu verkaufen:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+
 

Ich danke Ihnen vielmals. Das ist genau das, was ich brauche. Aber was sind rot und blau und wofür sind sie da? Sie zeigen wahrscheinlich den Rücksetzpunkt jeder Bestellung an, oder? Wenn ich es ausprobiere, werde ich es sofort in die Codebase von artmedia70 aufnehmen. Und nebenbei bemerkt, warum brauchen wir die Bearbeitung eines normalen Skripts, wenn das Skript korrekt ist und der Entwickler davon überzeugt ist?

Und vielleicht brauche ich nicht, um sie durch die Art und Weise und der Entwickler selbst hinzufügen, die artmedia70 wird auf die Codebase, werden sie sich herausstellen, dort benötigt werden, und ich habe kein Konto gibt, und die Kommentare werden nicht in der Lage sein, ein Wort zu beantworten, eh?

 
bambastik:

Ich danke Ihnen vielmals. Aber das ist genau das, was ich brauche. Aber was sind rot und blau und wofür sind sie da? Sie zeigen wahrscheinlich den Rücksetzpunkt jeder Bestellung an, oder? Wenn ich es ausprobiere, werde ich es sofort in die Codebase von artmedia70 aufnehmen.

Nein, nicht für die Codebasis, überhaupt nicht. Ich bin es gewohnt, zuverlässige Dinge zu machen, keine Tutorials :)

Wenn ich Ihnen ein normales Skript gezeigt hätte, hätten Sie mir gesagt, dass ich, wie alle anderen auch, wieder alle möglichen 'Fehler' geschrieben habe... Aber... Sie können nicht ohne sie auskommen. Das ist Arbeit mit unserem Geld.

Blau und Rot sind die Farben der Verschlussmarke.

 
artmedia70:

Nein, es gibt keinen Grund für eine Katzenbase. Ich bin es gewohnt, zuverlässige Dinge zu machen, keine Tutorials :)

Wenn ich dir ein normales Drehbuch zeigen würde, würdest du mir sagen, dass ich, wie alle anderen auch, wieder alles Mögliche abgekupfert habe... Aber... Sie können nicht ohne sie auskommen. Dies ist ein Job mit unserem Geld.

Blau und Rot sind die Farben des Schließsymbols.


Ich verstehe alles über die cattobase und über rot und blau zu, in der Regel noch einmal vielen Dank für Ihre Hilfe, aber ich werde nicht anfangen zu quasseln, es sei denn, es ist sehr selten, das Internet muss jenseits aller dieser Knicks und Fliegen und tragen nur gedacht und durch die Art und Weise Sie allein kann hundert Mal mehr Respekt als Tausende von Ihnen, aber es ist lyrisch) im Allgemeinen artmedia70 vielen Dank, sehr Skript geholfen und in der cattobase mit ihm werde ich nicht gehen. Ich habe eine Menge von ihnen in der Geschichte, die so gedacht, und wo sie jetzt sind. imho, wird das Geld bald abgebrochen werden, wird eine virtuelle und Kalk es verlassen, so dass jeder ein Konto mit streng identifizierbaren nicht mehr als einen bestimmten Betrag haben könnte, der Rest in den Haushalt, etc. so bin ich mit ihnen cool, aber der Prozess von ihren Aktivitäten ist ja, interessant. p.s. entschuldigen Sie sich für Weitschweifigkeit.
 
bambastik:

Übrigens, warum müssen Sie ein reguläres Skript bearbeiten, wenn es eindeutig ist und der Entwickler davon überzeugt ist?

Der Entwickler kann sich nur dann auf sein Programm verlassen, wenn es mit den vom Handelsserver zurückgegebenen Fehlern umgehen kann. Wenn keine Fehlerbehandlung vorgenommen wird, kann das Programm beim ersten Fehler stolpern. Bei dem Fehler handelt es sich NICHT um einen Programmfehler, sondern um einen vom Handelsserver zurückgegebenen Fehler. Das obige Skript erhält zum Beispiel keine neuen Daten. Daher kann der Server eine Fehlermeldung über den falschen Preis zurückgeben. Dazu sollte man versuchen, die jüngste Handelsumgebung vor der Schließung zu erhalten - bitte führen Sie den Befehl RefreshRates() aus oder verwenden Sie anstelle des Ask- oder Bid-Schlusskurses den mit MarketInfo(Symbol(),MODE_ASK) oder MarketInfo(Symbol(),MODE_BID) ermittelten Kurs;

Das Skript sieht dann so aus (für Sell):

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Und wenn Sie versuchen, andere vom Server zurückgegebene Fehler zu verarbeiten, wird er auf diese Werte anwachsen, wenn Sie sagen: "Sie haben es wieder getan..." :)

 

Jetzt verstehe ich es, und ja, es ist wichtig. Das Internet ist nicht gut hier, die Hardware ist auch jung, so ist es nicht wirklich klug, auf sie für die volle zweihundert Prozent zu verlassen, aber Risiko ist eine edle Sache =) aber danke noch einmal für den Zusatz, ich werde es sowohl zu kaufen und zu verkaufen.

Ist es das Richtige für den Kauf?

void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;

for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

Und wenn ich nur 3 von 5 verfügbaren Kaufaufträgen entfernen muss, welcher Wert der größte ist, wird das Skript dann größer werden? Und noch eine Frage, wenn ich nicht störe, weil diese Überprüfungen die ganze Zeit in Anspruch nehmen, frage ich mich, welches Skript eine höhere Wahrscheinlichkeit von Ausrutschern hat als das mit Überprüfungen oder das ohne Überprüfungen auf Fehler?

 
bambastik:

Jetzt verstehe ich es, und ja, es ist wichtig. Internet ist nicht gut hier, es ist eine Tatsache, Hardware ist auch jung, so ist es nicht wirklich klug, auf sie für die volle zweihundert Prozent zu verlassen, aber Risiko ist eine edle Sache =) aber nochmals vielen Dank für den Zusatz, ich werde es sowohl zu kaufen und zu verkaufen hinzufügen.

Ist dies für den Kauf korrekt?

Ja. Aber das ist noch nicht alles... ;)

Dieses Skript berührt nicht nur unbearbeitete ähnliche Fehler, sondern auch "fremde" Aufträge. D.h., wenn Sie einen EA auf diesem Symbol arbeiten lassen, wird das Skript seine Positionen schließen und der EA wird sie wieder öffnen. Auf diese Weise werden sie sich gegenseitig "bekämpfen".

Um dies zu vermeiden, ist es notwendig, das Skript in Bezug auf die Magie zu begrenzen. Fügen Sie z. B. eine Zeile if (OrderMagicNumber()>0) continue hinzu; dann funktioniert das Skript nur mit manuell geöffneten Aufträgen.

Zu verkaufen:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>0)  continue;
         if (OrderSymbol()!=sy)     continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(Symbol(),MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Und es gibt noch viel mehr zu tun, um die "normale" Zuverlässigkeit zu erreichen. Die Zeit wird kommen, zweifle nicht daran. ;)

 
artmedia70:

Ja. Aber das ist noch nicht alles... ;)

Dieses Skript wird, abgesehen von den verbleibenden unbearbeiteten ähnlichen Fehlern, auch "fremde" Aufträge betreffen. D.h., wenn Sie einen EA auf diesem Symbol arbeiten lassen, wird das Skript seine Positionen schließen und der EA wird sie wieder öffnen. Auf diese Weise werden sie sich gegenseitig "bekämpfen".

Um dies zu vermeiden, ist es notwendig, das Skript in Bezug auf die Magie zu begrenzen. Fügen Sie z.B. eine Zeile if (OrderMagicNumber()>0) continue ein; dann wird das Skript nur manuell geöffnete Aufträge verarbeiten.


Ich weiß nicht, wie es zu tun, werde ich nie auf Expertenberater, Indikatoren, Signale und den Rest zu bekommen, so dass ich gelangweilt spielen Dota und ich beginne stochern in den Chart, ich liebe Blick auf die Bewegung von ihm, es ist sehr schön, so bin ich einfach so, für die allgemeine Entwicklung und jetzt verstehe ich, was eine Magie, um, dass von nicht-automatischen und nicht-Advisor geöffnet wird, obwohl sie wahrscheinlich die gleichen Leute sind;)
 
können Sie schreiben: ein Skript/Ratgeber, um zwei entgegengesetzte Aufträge in n*pips im Gewinn zu schließen?