OrderClose funktioniert nicht - Seite 3

 

Danke thrdel, ich werde mir deine Kodierung ansehen. Sie sind wirklich sehr freundlich. Nochmals vielen Dank

 
thrdel:


Wenn Sie meinen, dass es nicht der beste Weg ist, eine Order zu schließen, stimme ich zu, aber wenn der Typ OrderSelect nicht benutzen will (oder nicht weiß, wie) und keine offenen Orders im Markt lässt, funktioniert es.

Wir versuchen, einander hier zu helfen, und Ihre Antwort hat kein bisschen geholfen, Sie haben ihm nicht gezeigt, wie man die Funktion Order Select verwendet, und sein EA funktioniert jetzt aufgrund Ihres Kommentars auch nicht besser.

Wenn Sie das nächste Mal helfen wollen, machen Sie es richtig, stellen Sie den richtigen Code ein, damit andere tatsächlich etwas lernen können.

 
Danke an alle, die auf meine Frage geantwortet haben. Meine Absicht ist es, Handel eingeben, wenn bar2 bestimmte Bedingungen erfüllen. Ich teste auf GBPJPY und öffnen Sie einen Handel zu einer Zeit, wie ich bin sehr neu in MQL4. Mit nur einem Handel bin ich in der Lage, Ticket in Orderclose() zu verwenden. Ich bin immer noch nicht vertraut mit OrderSelect. Der Handel wird also geschlossen, wenn bar3 eine bestimmte Bedingung erfüllt. Ich möchte eine Frage stellen, gibt es eine Möglichkeit, die Ausführung des Programms in einer Datei für Debugging-Zwecke zu speichern? Ich habe nämlich festgestellt, dass ich bei der Ausführung des Programms nicht weiß, welcher Teil der Ausführung falsch gelaufen ist.
 
chuale:
Danke an alle, die auf meine Frage geantwortet haben. Meine Absicht ist es, Handel eingeben, wenn bar2 bestimmte Bedingungen erfüllen. Ich teste auf GBPJPY und öffnen Sie einen Handel zu einer Zeit, wie ich bin sehr neu in MQL4. Mit nur einem Handel bin ich in der Lage, Ticket in Orderclose() zu verwenden. Ich bin immer noch nicht vertraut mit OrderSelect. Der Handel wird also geschlossen, wenn bar3 eine bestimmte Bedingung erfüllt. Ich möchte eine Frage stellen, gibt es eine Möglichkeit, die Ausführung des Programms in einer Datei für Debugging-Zwecke zu speichern? Ich habe nämlich festgestellt, dass ich bei der Ausführung des Programms nicht weiß, welcher Teil der Ausführung falsch gelaufen ist.

Gern geschehen, Chuale, ich habe auch viel von anderen in diesem Forum gelernt, also kein Problem. Sie müssen die Ausführung des Programms nicht unbedingt in einer Datei speichern, es gibt einige Möglichkeiten, die Werte Ihrer Variablen und eventuell auftretende Fehler zu überwachen. Ich verwende hauptsächlich die Comment()-Funktion und die Print()-Funktion. Ich kann Ihnen Beispiele schicken, wenn Sie sie brauchen. Wie ich bereits erwähnt habe, hat mir GBPJPY keine positiven Ergebnisse geliefert, USDJPY hingegen schon. Ich habe nur einen Backtest für einen Monat durchgeführt (Jan21/2014 - Feb25/2015) und mit meinen Einstellungen war die Rendite etwas über 400 USD. Ich werde andere Paare testen, sobald ich ein wenig Zeit habe und Sie wissen lassen. Auch wenn Sie Hilfe bei der Verwendung von Print() oder Comment() benötigen, um Werte auf dem Bildschirm in Echtzeit zu sehen, lassen Sie mich wissen. Das zuvor angehängte Bild war Ihr EA-Performance-Diagramm über einen Zeitraum von einem Monat. Sieht bisher gar nicht so schlecht aus.
 

Lieber thedel,

Dankeschön!

Ja, ich verwende Print(). Ich muss wissen, wie ich OrderSelect() verwenden kann, wenn es mehrere offene Geschäfte gibt. Wenn ich SELECT_BY_POS für ein einzelnes Geschäft verwende, was soll der Wert für index sein (OrderSelect (int index, in select, int pool=MODE_TRADES))? Ist es 1?

oder welcher Wert?

 
chuale:
Vielen Dank an alle, die auf meine Frage geantwortet haben. Meine Absicht ist es, in den Handel einzusteigen, wenn bar2 bestimmte Bedingungen erfüllt. Ich teste GBPJPY und eröffne jeweils nur einen Handel, da ich sehr neu in MQL4 bin. Mit nur einem Handel bin ich in der Lage, Ticket in Orderclose() zu verwenden. Ich bin immer noch nicht vertraut mit OrderSelect. Der Handel wird also geschlossen, wenn bar3 eine bestimmte Bedingung erfüllt. Ich möchte eine Frage stellen, gibt es eine Möglichkeit, die Ausführung des Programms in einer Datei für Debugging-Zwecke zu speichern? Ich habe nämlich festgestellt, dass ich bei der Ausführung des Programms nicht weiß, welcher Teil der Ausführung falsch gelaufen ist.


Hier ist ein Beispiel für die Verwendung der Funktion Order Select:

In diesem Beispiel prüft die Funktion CountTrades alle offenen und schwebenden Aufträge, verwirft diejenigen, die kein passendes Symbol und keine magische Zahl haben, und zählt nur die, die wir brauchen.

In diesem Beispiel wird von der letzten bis zur ersten Order ausgewählt.

Wenn Sie mehr Hilfe brauchen, lassen Sie es mich wissen.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
/*
On every tick program checks what the value of myTrades is
by calling (executing) the CountTrades() function and asign the value
returned to myTrades..
*/
int myTrades = CountTrades();
/*
Comment() function will display the words in quotes and the value of 
myTrades variable.
*/
Comment("You have "+myTrades+" open trades.");
   
  }
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;// we start counting from zero
int trade;  // define a variable that will hold the total number of trades that are open
// Get the number of trades from OrdersTotal() and asign that value to trade variable.
for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
   OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); // Select orders by position (OP_BUY and OP_SELL) - orders can be selected by position or by ticket
                                                 // select from Open or pending orders = MODE_TRADES or select from History = MODE_HISTORY
   if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber)// if the order has a different symbol or magic number, skip to next order
   continue;
   if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)// if symbol is right and magic number is right, that is my order ,then
   if(OrderType()==OP_SELL                                         // if it's an open sell do this.....
   || OrderType()==OP_BUY)                                         // if it's an open buy do this......      
   count++;                                                        // in this example increase the counter since I'm counting all my orders
   }
return(count);                                                     // When finished counting, return the result
}
 
thrdel:


Wenn du meinst, dass es nicht der beste Weg ist, eine Order zu schließen, stimme ich zu, aber wenn der Typ OrderSelect nicht benutzen will (oder nicht weiß, wie) und keine offenen Orders im Markt lässt, funktioniert es.

Wir versuchen, einander hier zu helfen, und Ihre Antwort hat kein bisschen geholfen, Sie haben ihm nicht gezeigt, wie man die Funktion Order Select verwendet, und sein EA funktioniert jetzt aufgrund Ihres Kommentars auch nicht besser.

Wenn Sie das nächste Mal helfen wollen, machen Sie es richtig, stellen Sie den richtigen Code ein, damit andere tatsächlich etwas lernen können.


wenn du helfen willst, dann erkläre es richtig

Sie sagten

thrdel:

Zuerst zählen Sie die Aufträge mit OrdersTotal().

total=OrdersTotal();


schlechtes Beispiel...... Sie gaben

wenn der Typ nicht OrderSelect() benutzen will, dann soll er aufhören EA's zu programmieren

großer Unsinn was du hier erzählst, https://www.mql5.com/en/forum/149958/page2#915413

Ich habe deinen Beispielcode kommentiert und dir gesagt, was du zu tun hast

es gibt viele Beispiele, die ich gegeben habe, wie zu tun ...

googeln Sie danach, wenn Sie sie finden wollen

 
thrdel:


Es gibt einige Dinge, die Sie falsch gemacht haben. Ich nehme an, Sie möchten, dass dieser EA auf JPY-Paaren im M1-Zeitrahmen arbeitet. Wollen Sie Orders nur auf einem neuen Balken platzieren und Orders nur auf einem neuen Balken schließen oder wollen Sie den Einstieg auf einem neuen Balken und den Ausstieg, wenn die Bedingungen erfüllt sind? Hier ist, was ich denke:

Zuerst zählen Sie die Bestellungen mit OrdersTotal().

Dann berechnen Sie Ihre Variablen

Wenn es Aufträge auf dem Markt gibt, prüfen Sie, ob sie geschlossen werden müssen.

Wenn keine Aufträge auf dem Markt sind, prüfen Sie, ob die Einstiegsbedingungen erfüllt sind.

Lassen Sie es mich wissen, wenn Sie noch Fragen haben.

 
beim Kompilieren der folgenden: es sagte Time Funktion nicht definieren. Bitte beraten.
if(Time[0]==previousTime) return(0);         //EA will not go past this point unless it is a new bar
   previousTime=Time[0];                        // If it was a new bar , it's old now but continue to the end
 
chuale:
beim Kompilieren der folgenden: es sagte Time Funktion nicht definieren. Bitte beraten.


Ok, ich habe das Problem behoben, da ich die Klammer für Time falsch geschrieben habe, es sollte [] statt () sein. Danke