Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1652

 

Hallo zusammen!

Was ist der einfachste Weg, um zu schreiben (ändern) eine Bestellung in meinem einfachen Expert Advisor, um Take Profit und Stop Loss in ihm zu löschen, wenn eine bestimmte Bedingung eintritt, das Maximum soll nicht mehr als drei Aufträge in eine Richtung (wenn das wichtig ist), Order-Counting, wie ich es verstehe, verwendet wird, sollte ich es wieder zu schreiben? Ich warte auf jemanden, der sich kümmert.

 
Порт-моне тв #:

Hallo zusammen!

Was ist der einfachste Weg, um zu schreiben (ändern) eine Bestellung in meinem einfachen Expert Advisor, um Take Profit und Stop Loss in ihm zu löschen, wenn eine bestimmte Bedingung eintritt, bis zu einem Maximum von drei Aufträgen in eine Richtung (wenn das wichtig ist), ich nehme an, die Reihenfolge Anzahl verwendet wird, sollte ich eine neue schreiben? Ich warte auf jemanden, der sich kümmert.

OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0);
 
Ivan Butko #:

Leider ist es schwer zu verstehen, wie man einen solchen Code verwendet.


Ich habe versucht, eine Flagge auf 1 zu setzen, wenn ich einen Kaufauftrag eröffne, und eine Flagge auf 0, wenn ich ihn schließe, und habe die letztere zur Eröffnungsbedingung hinzugefügt. Es hat nicht funktioniert)
Es ist seltsam, in der Tat ist die Regel gebrochen: öffnen, wenn die Flagge==0. Und er eröffnete trotzdem bei 1 auf derselben Kerze.

Zeigen Sie mir, wie Sie es gemacht haben.
 
Alexey Viktorov #:

Warum so kompliziert?

Werden Sie nicht schlau. Darum ging es in der Frage nicht.

 
MakarFX #:
Zeigen Sie mir, wie Sie es gemacht haben.

Es scheint zu funktionieren, ich habe es so umgestellt. Jetzt werde ich es mit dem Verkauf versuchen und sehen, ob sie unabhängig voneinander sein können.

int Buy=0,
    Sell=0;

void OnTick(void)
  {
    double 
    ma=iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0),
    ma2=iMA(NULL,0,80,0,MODE_SMA,PRICE_CLOSE,0);

    if (ma>ma2 && Buy==0) 
      { 
        OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue);
        Buy=1; 
      }
      
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=888 || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(perceptron_B() < Porog_B)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
            Buy=1;
           }
           
         break;
        }

UPD
Puh, es hat geklappt) Ich habe das Gleiche für sell gemacht, jetzt können sie unabhängig voneinander geöffnet werden und haben eine unterschiedliche Logik.

 
Ivan Butko #:

Es scheint zu funktionieren, ich habe es so umgestellt. Jetzt werde ich es mit dem Verkauf versuchen und sehen, ob sie unabhängig voneinander sein können.

UPD
Puh, Design funktioniert) Ich habe das Gleiche für sell getan, jetzt können sie unabhängig voneinander geöffnet werden und von unterschiedlicher Logik begleitet werden.

Wahrscheinlich wird es beim Kompilieren gestrichen))))

 
MakarFX #:

Wahrscheinlich wird er bei der Zusammenstellung beschimpft))))

Genau! A bit,"Rückgabewert von 'OrderSend' sollte geprüft werden AI (2).mq4 34 9"

Aber es scheint zu funktionieren)
 
Ivan Butko #:

Genau! Ein wenig,"Rückgabewert von 'OrderSend' sollte geprüft werden AI (2).mq4 34 9"

Aber es scheint zu funktionieren)

Mach es so

    if (ma>ma2 && Buy==0) 
      { 
        if(OrderSend(Symbol(), OP_BUY, lots, Ask, 3, Bid - SL * Point, 0, NULL, 888, 0, Blue))
        Buy=1; 
      }
 
MakarFX #:

Machen Sie es so!

Ich danke Ihnen!

 
MakarFX #:

Ich danke Ihnen!

Grund der Beschwerde: