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

 
ALXIMIKS:

+ Ich habe irgendwo gelesen, dass es sinnvoll ist, bei der Auswahl auch die OrderClosetime der offenen Tickets zu prüfen (bei ihnen ist sie = 0).
Dies ist für die Auswahl per Ticket. Hier ist es die Auswahl nach Index.
 

Hallo!

Wie üblich benötige ich Hilfe, da ich nicht herausfinden kann, wie ich ausstehende Aufträge korrekt nach der magischen Zahl auswählen kann. Kann mir bitte jemand den Code schicken, damit ich sehen kann, wie man das macht, zum Beispiel. Vielen Dank im Voraus).

 
zaqwsx123:

Hallo!

Wie üblich benötige ich Hilfe, da ich nicht herausfinden kann, wie ich die ausstehenden Aufträge korrekt nach der magischen Zahl auswählen kann. Kann mir bitte jemand den Code schicken, damit ich sehen kann, wie man das macht, zum Beispiel. Vielen Dank im Voraus).


ALXIMIKS 11.09.2013 21:36 #

void DeletePendingOrders()
{
    int NumberOfTry,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
         NumberOfTry=0;

         while (NumberOfTry < 5)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                breake;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000);  NumberOfTry++;
            }
         }
      }
   }
}

Jemand hat einmal um Hilfe bei diesem Code gebeten. Es ist ein Beispiel dafür, wie man alle ausstehenden Aufträge entfernen kann

Ich weiß nicht, ob der Code im Tester immer angemessen sein wird, ich werde nichts über den echten sagen

 
ALXIMIKS:

Jemand bat einmal um Hilfe mit diesem Code, hier ist ein Beispiel, wie man alle ausstehenden Aufträge löscht

Ich weiß nicht, ob der Code im Tester immer angemessen sein wird.

Ich verstehe nicht, warum Sie den Code einem Fragesteller zeigen, wenn Sie sich nicht sicher sind? Die Antwort sollte immer richtig sein und nicht "vielleicht klappt es ja - ich habe da ein paar Fehler gemacht"...
 
zaqwsx123:

Hallo!

Wie üblich benötige ich Hilfe, da ich nicht herausfinden kann, wie ich die ausstehenden Aufträge korrekt nach der magischen Zahl auswählen kann. Kann mir bitte jemand den Code schicken, damit ich sehen kann, wie man das macht, zum Beispiel. Vielen Dank im Voraus)

Es wählt eine beliebige, zuletzt geöffnete Bestellung aus und gibt deren Ticket zurück. Gibt es keinen solchen Auftrag, wird -1 zurückgegeben:

//-----------------------------------------------------------------------------+
int GetTicketLastOpenOrder(string sy, int op, int mn) {
   int   i, j=-1, t=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {                       // цикл от конца к началу
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;// если магик не тот - переходим к следующему
         if (OrderSymbol()!=sy)        continue;// если символ не тот - переходим к следующему
         if (OrderType()!=op)          continue;// если тип не тот - переходим к следующему
         if (t<OrderOpenTime()) {   // выбран нужный, ...
            t=OrderOpenTime();      // ... ищем последний ...
            j=i;                    // ... открытый ордер
            }
         }
      else Print("FUNC GetTicketLastOpenOrder() ошибка выбора ордера "+GetLastError());
      }
   if (OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // если найден ордер, вернём его тикет
   return(-1);                                              // иначе - возвращаем -1
}
//-----------------------------------------------------------------------------+
 
artmedia70:
Mann, ich verstehe nicht, wenn du dir bei dem Code nicht sicher bist, warum zeigst du ihn dann der Person, die die Frage stellt? Die Antwort sollte immer richtig sein, nicht "vielleicht funktioniert es ja - ich habe da ein paar Fehler gemacht"...

Nun, das ist die Art des Mannes, sich zu behaupten.

Er hat hier bereits seine Arroganz unter Beweis gestellt.

 
PapaYozh:

Nun, das ist die Art des Mannes, sich zu behaupten.

Er hat hier bereits seine Arroganz gezeigt.

Nun... manche Leute schlagen ihre Frauen, manche Leute quasseln in Foren, manche Leute machen Revolutionen... Die Menschen sind unterschiedlich. Jedem das Seine.
 
artmedia70:
Nun ... jemand schlägt seine Frau, jemand quasselt in Foren, jemand macht Revolutionen .... Die Menschen sind unterschiedlich. Jedem das Seine.

Wenn jemand nachts eine Frage stellt, deren Antwort gar nicht so kompliziert ist, aber aufgrund meiner Unerfahrenheit kann ich aus Prinzip nicht für die 100%ige Richtigkeit des Codes bürgen,

ist es besser, 8 Stunden auf eine Antwort von einem Fachmann zu warten?

Oder sie könnten mir schnell helfen, meinen Code richtig zu machen (wenn ein Entwickler nicht hoffnungslos ist...).

Ich habe mich für die zweite Option entschieden, und ich denke, sie ist gerechtfertigt: Denken Sie, was Sie wollen, und seien Sie glücklich.

 
ALXIMIKS:
artmedia70:
Nun... manche Leute schlagen ihre Frauen, manche Leute quasseln in Foren, manche Leute machen Revolutionen... Die Menschen sind unterschiedlich. Jedem das Seine.

Wenn jemand nachts eine Frage stellt, deren Antwort gar nicht so kompliziert ist, aber aufgrund meiner Unerfahrenheit kann ich aus Prinzip nicht für die 100%ige Richtigkeit des Codes bürgen,

ist es besser, wenn er acht Stunden auf eine Antwort von einem Fachmann wartet?

Natürlich wartet ein Anfänger lieber bis zum Morgen, um nach Fehlern im Code eines anderen zu suchen, als sich auszuschlafen und eine kompetente Antwort zu bekommen.

Wenn Sie einem Anfänger antworten, sollten Sie bedenken, dass er vielleicht noch nicht viel Erfahrung hat.

 

Es gibt eine Bibliothek hoz_LoggingToAnywhere@Library.mq4, die von der Header-Datei hoz_Base@Include.mqh aufgerufen wird.

Beim Kompilieren der Bibliothek hoz_LoggingToAnywhere@Library.mq4 sehe ich dies im Protokoll:

'StringConcatenate' - incompatible types        D:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\include\hoz_Base@Include.mqh (75, 12)

Ich gehe dorthin... Und dort sehe ich:

   //---- Контролируем возможные ошибки
   fPrint (StringConcatenate ("fInitBase() => ", fErrorToString (bi_Err)));

Der Aufruf dieser fPrint-Funktion aus anderen Bibliotheken wird nirgends getadelt, aber aus der Header-Datei... schon. Warum ist das so? Es ist bereits von Zeichen zu Zeichen kopiert...