EA für jedes Währungspaar - welcher Code wird nur einmal pro Währungspaar geöffnet? - Seite 4

 
onewithzachy:
Du liegst völlig falsch. Dein Code wird nie ausgeführt !!!. Verwenden Sie den von RaptorUK.

Okay :)

Ich war einfach nur verwirrt von dem hier:

"beenden, wenn j = 0"

Danke!

 
grey.unit:

Es sollte also wie folgt aussehen:

weil Sie das geschrieben haben:

oder liege ich falsch?

Du liegst falsch ... sieh dir das an: for

In meinem Code ist Ausdruck 2 j >= 0 , was bedeutet ... while ( j >= 0 ), die Schleife wird also ausgeführt, solange j 0 oder größer ist, d.h. von OrdersTotal() - 1 bis einschließlich 0

Wenn Sie j = 0 verwenden (vielleicht müsste es j == 0 geschrieben werden), bedeutet dies while (j == 0) und die Schleife wird nur ausgeführt, wenn j gleich 0 ist.

 
Ah okay, jetzt habe ich es verstanden
 
RaptorUK:

Nein, machen Sie Folgendes...

Die erste Auftragsposition ist 0. Wenn Sie also 5 Aufträge haben, sind die Positionen 0, 1, 2, 3, 4 ... die letzte Position ist also OrdersTotal() - 1 ... zum Herunterzählen beginnen Sie also bei OrdersTotal()-1 und enden bei 0

Bedeutet dies, dass OrdersTotal() -1 keine Aufträge ist, dann ist 0 der erste Auftrag, 1 ist 2 Aufträge und so weiter bis 4, was den 5 Aufträgen entspricht.

Kann mir jemand sagen, ob mein Verständnis, dass -1 gleich Keine Aufträge ist, richtig ist?

Danke

 
barnacle7:

Bedeutet dies, dass OrdersTotal () -1 keine Aufträge ist, dann ist 0 der erste Auftrag, 1 ist 2 Aufträge und so weiter bis 4, die die 5 Aufträge entsprechen.

OrdersTotal() ist die Anzahl der offenen Aufträge. Ja, wenn Sie insgesamt 5 Aufträge haben, sind sie von 0 bis 4 nummeriert.
 

Ich brauche auch Hilfe in Bezug auf das gleiche Problem. Ich bin ein Anfänger und habe versucht, den Code einzugeben, den ich hier gesehen habe, aber es funktioniert nicht, können Sie mir helfen. Die Orderselect wurde verwendet

um OrdersTotal zu ersetzen und die Anzahl der Trades zu kontrollieren, die jeder EA macht, aber jetzt werden die anderen keine Trades platzieren

void OnTick()

{
       double movingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,1);     
       double movingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,0);       
       double lastmovingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,1);          
       double movingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,1);   
       double movingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,1);    
       int b;int bM;int s;int sM;    
       bool res = (OrderSelect(b,SELECT_BY_POS));    
       bool resM = (OrderSelect(bM,SELECT_BY_POS));    
       bool ses = (OrderSelect(s,SELECT_BY_POS));    
       bool sesM = (OrderSelect(sM,SELECT_BY_POS));    
       
       if((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB) && res == false  && resM == false )      
         {
         b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
         bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
         }       
         else if((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS) && ses == false && sesM == false)     
         {  
         s = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS1*_Point,NULL,3,0,Red);       
        sM = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS2*_Point,NULL,4,0,Red);   
}


 
&& res == false

Orderselect gibt true zurück, wenn es eine Bestellung ausgewählt hat.

Vielleicht können Sie eine magische Zahl in Kombination mit dem Symbolnamen verwenden.

Hier ist ein Beispiel im Artikel, den Sie studieren können:https://www.mql5.com/en/articles/1359

MagicNumber: "Magic" Identifier of the Order
MagicNumber: "Magic" Identifier of the Order
  • www.mql5.com
In МТ3, management of open positions was rather time-taking. Traders had at their disposal a rather limited tool set to work with the list of open and closed positions. The problem of distinguishing between "own" and "someone else's" positions was solved in rather complicated ways. In МТ4, the situation has cardinally changed. Now, trader can...
 
  1.        int b;int bM;int s;int sM;    
           bool res = (OrderSelect(b,SELECT_BY_POS));    
           bool resM = (OrderSelect(bM,SELECT_BY_POS));    
           bool ses = (OrderSelect(s,SELECT_BY_POS));    
           bool sesM = (OrderSelect(sM,SELECT_BY_POS));    

    b als kein Wert, OrderSelect schlägt fehl. bM als kein Wert, OrderSelect schlägt fehl. s als kein Wert, OrderSelect schlägt fehl. sM als kein Wert, OrderSelect schlägt fehl.

  2. Welchen Sinn hat es, mehrere Bestellungen auszuwählen? Das Ergebnis ist die letzte erfolgreiche Auswahl.

  3.          b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
             bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
    
    b und bM sind lokale Variablen. Die Ticketnummern gehen bei der Rückkehr verloren.

  4. Warum versuchen Sie, nach Position auszuwählen, aber Ticketnummern zu speichern? Wenn Sie nach einer gültigen Ticketnummer auswählen, bedeutet das nicht, dass der Auftrag offen ist.

  5. Sie kaufen zum Ask und verkaufen zum Bid.

    1. Der TP/SL (oder Sell Stop/Sell Limit) Ihrer Kauforder wird ausgelöst, wenn der Bid / OrderClosePrice ihn erreicht. Wenn Sie den Ask±n verwenden , wird Ihr SL kürzer und Ihr TP länger, und zwar um den Spread. Wollen Sie nicht, dass der angegebene Betrag in beiden Richtungen verwendet wird?

    2. Der TP/SL Ihres Verkaufsauftrags (oder die Eingabe von Buy Stop/Buy Limit) wird ausgelöst, wenn der Ask/OrderClosePrice ihn erreicht. Um bei einem bestimmten Bid-Preis auszulösen, fügen Sie den durchschnittlichen Spread hinzu.
      MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

    3. Die Charts zeigen nur Bid-Preise. Schalten Sie die Ask-Linie ein, um zu sehen, wie groß der Spread ist(Extras → Optionen (Strg+O) → Charts → Ask-Linie anzeigen).
      Bei den meisten Brokern mit variablem Spread kommt es am Ende des Tages (5 PM ET) zu einer erheblichen Ausweitung ± 30 Minuten. Mein GBPJPY (OANDA) zeigt einen durchschnittlichen Spread von 26 Punkten, aber einen durchschnittlichen maximalen Spread von 134.

Grund der Beschwerde: