Bitte informieren Sie mich über die Verbreitung - Seite 4

 
deysmacro:
Sie müssen jedoch bedenken. Der EA schließt nur laufende Trades ab. Sie müssen den Handel selbst eröffnen.

100%, kein Problem da, sondern das ist genau das, was ich versuche zu erreichen .. ich will nicht EA, um jeden Handel zu öffnen, das ist MEIN Job .. ich will nur, dass es zu schließen, wenn mehr als 2 Aufträge offen sind bei X Gewinn und muss Spread berücksichtigen! Langsam nähere ich mich dem an ... dieses Programmieren sollte in den Schulen gelehrt werden ... hehe, zu schade, dass ich aus den 80ern bin, hätte nie gedacht, dass ich das mal durchmachen muss, aber je mehr ich die Hilfedatei lese, desto faszinierender finde ich es ... außerdem bietet dieses Forum jede Menge Hilfe, dank Leuten wie Ihnen.
 
tatyawinchu:

Was, wenn ich eine IF-Schleife hinzufügen kann und dann den Rest des Codes unten einfügen, der die Schleife startet?

Die IF-Bedingung sollte prüfen, ob OrdersTotal => 2 ist, so dass die Kontrolle übergeben wird, um alle offenen Aufträge mit X Gewinn nach Spread zu schließen?



Ich bin mir nicht sicher, was Sie mit "Die IF-Bedingung sollte prüfen, ob OrdersTotal => 2 ist, so dass die Kontrolle übergeben wird, um alle offenen Orders mit X Gewinn nach Spread zu schließen" wirklich meinen.

aber ich bin mir ziemlich sicher, dass nichts wirklich Schlimmes passieren wird, wenn Sie es versuchen. Und wenn es nicht funktioniert, gibt es nichts zu verlieren. Zumindest haben Sie es versucht.

 
tatyawinchu:

100%, kein Problem gibt, sondern das ist genau das, was ich versuche zu erreichen ... ich will nicht EA, um jeden Handel zu öffnen, das ist MEIN Job ... Ich will nur, dass es zu schließen, wenn mehr als 2 Aufträge offen sind bei X Gewinn und muss Spread berücksichtigen! Langsam nähere ich mich dem an ... dieses Programmieren sollte in den Schulen gelehrt werden ... hehe, zu schade, dass ich aus den 80ern bin, hätte nie gedacht, dass ich das mal durchmachen muss, aber je mehr ich die Hilfedatei lese, desto faszinierender finde ich es ... außerdem bietet dieses Forum jede Menge Hilfe, dank Leuten wie Ihnen.

Geben Sie einfach spread in totalprofit ein.
 
thrdel:


Ich bin mir nicht sicher, was Sie wirklich mit "Die IF-Bedingung sollte prüfen, ob OrdersTotal => 2 ist, so dass die Kontrolle übergeben wird, um alle offenen Aufträge mit X Gewinn nach Spread zu schließen" meinen.

aber ich bin mir ziemlich sicher, dass nichts wirklich Schlimmes passieren wird, wenn Sie es versuchen. Und wenn es nicht funktioniert, gibt es nichts zu verlieren. Zumindest haben Sie es versucht.


Ich bin mir nicht sicher, was Sie wirklich mit "Die IF-Bedingung sollte prüfen, ob OrdersTotal => 2 ist, so dass die Kontrolle übergeben wird, um alle offenen Orders mit X Profit nach Spread zu schließen" meinen.

Hmm... Ok, was ich damit meine ist

IF .. Gesamtzahl der offenen Aufträge ist mehr als oder gleich 2 .. nur dann gehen Sie weiter und folgen Sie den Rest des Codes.

WENN die Gesamtzahl der offenen Aufträge .. [ OrdersTotal() ?? ] .. kleiner als 2 ist .. das bedeutet, dass es entweder 1 oder 0 ist, dann nichts tun ..

Nun, hier ist ein Problem für mich, dass mql 4 Hilfedatei sagt OrdersTotal() zählt alle Aufträge, Markt UND Pending ... Ich versuche, für einige Funktion, die nur Live-Markt Aufträge, nicht Pending diejenigen, ODER, es kann mathematisch berechnet werden, wie meist habe ich nur max 2 Trades laufen zu einem Go sowieso.

Ist diese Erklärung klarer?

tx für die Zeit, die Sie mir geben, Mann.

 

thrdel möchte, dass Sie es zuerst versuchen und sehen, was passiert, obwohl ich mir ziemlich sicher bin, was wahrscheinlich passieren würde.

 
deysmacro:

thrdel möchte, dass Sie es zuerst versuchen und sehen, was passiert.



Ja, ich gehe die Hilfedatei durch, um die richtige Funktion zu finden, die nur offene Aufträge liefert.
 
Zeigen Sie uns Ihren Code, wenn Sie es geschafft haben, ihn zu vervollständigen, und wir werden Ihnen helfen, wenn wir können.
 
deysmacro:
Zeigen Sie uns Ihren Code, wenn Sie es schaffen, ihn zu vervollständigen, und wir werden Ihnen helfen, wenn wir können.

Verstanden! Vielen Dank...

..

und ich konnte keine Funktion finden, die nur offene Trades zurückgibt ... Das ist ok, also habe ich die IF-Schleife wie unten hinzugefügt.

//+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link      "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target=100;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! ";
                                          
int Slippage=5;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()

//+------------------------------------------------------------------+
//| This is just the single line of code that I have added
//+------------------------------------------------------------------+
{ 
 if (OrdersTotal()>=2)

 {
   if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
          {
          //Close opened long positions
          case OP_BUY  : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
                         break;
               
          //Close opened short positions
          case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
                          
          }
          
       if(result == false)
          {
            Sleep(0);
          }  
       }
      Print ("Account Profit Reached. All Open Trades Have Been Closed");
      return(0);
   }  
   
   Comment("Balance: ",AccountBalance(),", Account Equity: ",AccountEquity(),", Account Profit: ",AccountProfit(),
           "\nMy Account Profit Target: ",My_Money_Profit_Target);
   
  return(0);
   }
 }

Ich habe die IF-Bedingung am Anfang hinzugefügt, die lautet if (OrdersTotal()>=2) ... [ Hervorgehoben im obigen Code mit Kommentar ]

Nun gab es ein Problem beim Schließen der {}, da ich es beim ersten Versuch wie folgt versuchte

{ 
 if (OrdersTotal()>=2)
}

 {
   if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       { .. etc etc 
     

also habe ich als Programmieranfänger versucht, die if-Bedingung als ERSTES zu prüfen ... das hat nicht geklappt.

Also schloss ich die {}, indem ich die Bedingung hineinholte. Jetzt wurde es mit nur 2 Warnungen und keinen Fehlern kompiliert.

Rückgabewert von 'OrderSelect' sollte geprüft werden Testcode 1.mq4 56 8

nicht alle Kontrollpfade geben einen Wert zurück Testcode 1.mq4 86 2

Es kompiliert also ... ist es logisch korrekt?

[Außerdem habe ich keine Copyright-Informationen entfernt, ich habe nur eine Zeile hinzugefügt, seine Details zu entfernen wäre total unfair von meiner Seite aus ... wie lautet die Regel dazu? ]

 
tatyawinchu:

Ja, ich gehe die Hilfedatei durch, um die richtige Funktion zu finden, die nur offene Aufträge liefert.


Es tut mir wirklich leid, Mann, wie ich schon sagte, bin ich wirklich nicht so gut im Erklären. Ich verstehe, dass Sie eine Funktion finden wollen, die nur offene Kauf- oder Verkaufsaufträge zählt. Ich habe Sie gebeten, sich meinen Code anzusehen, ich habe ihn Ihnen nach bestem Wissen und Gewissen erklärt und war nicht so gut, wie ich gehofft hatte.

Erinnern Sie sich an den ersten Schritt, den ich in Bezug auf den Code erwähnte?

Er lautete: CountMyOrders. Wenn Sie sich den Code ansehen würden, wie ich Sie gebeten habe, würden Sie folgendes finden

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CountMyOrders()
  {
   myOrders=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false)
         Print("Failed to select order, error : "+ErrorDescription(GetLastError()));
      //skip orders placed by other EA's
      if(OrderMagicNumber()>0)continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
        {
         myOrders++;
        }
     }
   return(myOrders);
  }

Hier steht:

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

Sie müssen wissen, was OP_BUY und OP_SELL bedeutet.

Es zählen keine schwebenden Aufträge, kein offener Kaufstopp, kein offener Verkaufsstopp, kein Kauf- oder Verkaufslimit, nur offener Kauf und offener Verkauf.

Wie kann ich sonst noch besser erklären, was dieser Code bedeutet und was er bewirkt?

Sie können die Dokumentation weiter durchsuchen und sich damit vertraut machen, aber ich kann Ihnen sagen, dass die Funktion, nach der Sie suchen, nicht vorhanden ist.

Mein EA sagt, wenn es noch keine Aufträge gibt, warte:

if(myOrders<1)

Sie wollen, dass Sie auf 2 Aufträge warten. Wenn Sie ein wenig Aufmerksamkeit auf das, was ich sagte, würden Sie wahrscheinlich feststellen, dass alles, was Sie tun müssen, ist :

if(myOrders<2)

Voilla. Jetzt wartet er auf die 2 Aufträge - keine Pending, nur Buy oder Sell !

Bitte haben Sie Verständnis dafür, dass ich versucht habe, den Code so zusammenzustellen, dass er auch für andere geeignet ist, die vielleicht nach einer Möglichkeit suchen, offene Trades zu verwalten, und nicht so sehr für einen bestimmten Zweck entwickelt wurde.

Es ist als Beispiel gedacht, nehmen Sie, was Sie für gut halten, lassen Sie den Rest weg, verbessern Sie es, ändern Sie es, lernen Sie davon, wenn Sie können und experimentieren Sie damit.

Ich hoffe, es macht Sinn.

 
thrdel:


Tut mir wirklich leid, Mann, wie ich schon sagte, bin ich wirklich nicht so gut im Erklären. Ich verstehe, dass du eine Funktion finden willst, die nur offene Kauf- oder Verkaufsaufträge zählt. Ich habe dich gebeten, dir meinen Code anzusehen, ich habe ihn dir nach bestem Wissen und Gewissen erklärt und war nicht so gut, wie ich gehofft hatte.

Erinnern Sie sich an den ersten Schritt, den ich in Bezug auf den Code erwähnte?

Er lautete: CountMyOrders. Wenn Sie sich den Code ansehen würden, wie ich Sie gebeten habe, würden Sie folgendes finden

Hier steht:

Sie müssen wissen, was OP_BUY und OP_SELL bedeutet.

Es zählen keine schwebenden Aufträge, kein offener Kaufstopp, kein offener Verkaufsstopp, kein Kauf- oder Verkaufslimit, nur offener Kauf und offener Verkauf.

Wie kann ich sonst noch besser erklären, was dieser Code bedeutet und was er bewirkt?

Sie können die Dokumentation weiter durchsuchen und sich damit vertraut machen, aber ich kann Ihnen sagen, dass die Funktion, nach der Sie suchen, nicht vorhanden ist.

Mein EA sagt, wenn es noch keine Aufträge gibt, warte:

Sie wollen, dass Sie auf 2 Aufträge warten. Wenn Sie ein wenig Aufmerksamkeit auf das, was ich sagte, würden Sie wahrscheinlich feststellen, dass alles, was Sie tun müssen, ist :

Voilla. Jetzt wartet er auf die 2 Aufträge - keine Pending, nur Buy oder Sell !

Bitte haben Sie Verständnis dafür, dass ich versucht habe, den Code so zusammenzustellen, dass er auch für andere geeignet ist, die vielleicht nach einer Möglichkeit suchen, offene Trades zu verwalten, und nicht so sehr für einen bestimmten Zweck entwickelt wurde.

Es ist als Beispiel gedacht, nehmen Sie, was Sie für gut halten, lassen Sie den Rest weg, verbessern Sie es, ändern Sie es, lernen Sie davon, wenn Sie können und experimentieren Sie damit.

Ich hoffe, es macht Sinn.

Vielen Dank .. Erstens, es ist nicht Sie! es ist alles mir! hehe Ich bin der Neuling hier .. Ihre Erklärungen sind perfekt! nur wenig schwierig, jetzt zu verdauen, wie ich gehe Schritt für Schritt .. Wort für Wort durch Hilfedateien =) und um Hilfe bitten, wie ich stecken bleiben ..Vielmehr, jetzt wegen Ihres Codes, ich bin das Lesen der FUNKTION Abschnitt in Hilfedatei! ! Könnten Sie außerdem den Code, den ich oben eingefügt habe, bei Ihnen kompilieren und sehen, ob etwas mit der Logik der IF-Bedingung nicht stimmt? Lassen wir jetzt mal weg, dass alle Aufträge gezählt werden ... sagen wir, wenn dieser EA ausgeführt wird, wenn keine Aufträge offen waren, dann wurde der erste Auftrag geöffnet und einige Zeit später wird ein anderer Auftrag ausgelöst ... ist der logische Ablauf dieser IF-Bedingung korrekt? Außerdem bin ich mir jetzt fast sicher, dass dieser Code nur eine Zeile zur Korrektur braucht oder so[Außerdem habe ich die Idee fallen gelassen, dies als Job zu posten... ], ich muss es nicht verkomplizieren, um zu scannen, ob Aufträge von anderen EAs ausgelassen werden oder nicht, weil dies für mich der einzige EA sein wird, der läuft, also muss ich nicht speziell jeder Bestellung eine magische Zahl zuweisen usw... jetzt muss ich nur noch herausfinden, ob die Logik meiner IF korrekt ist ^^
Grund der Beschwerde: