Fehler, Irrtümer, Fragen - Seite 347

 
Es handelt sich also entweder um einen Fehler im Terminal oder in der Serverhistorie. Wahrscheinlicher ist jedoch das Terminal, da die Berichte aus der Serverhistorie mit größerer Wahrscheinlichkeit wiederhergestellt worden sind.
 

Urain:
Так что это или баг терминала, или серверной истории. Но скорее терминала, тк отчёты на чемпе скорее с серверной истории восстанавливались.

Das ist witzig. Ich habe nicht darauf geachtet. Klar und deutlich erklärt.
 
Yedelkin:
Das ist witzig. Ich habe nicht darauf geachtet. Klar und deutlich erklärt.
Das war's, wer Spaß hat und wer sich zwei Wochen lang anstecken kann :o)
 
Ich habe es gefunden. Es wird standardmäßig nach Zeit sortiert und muss nach Transaktionsnummer sortiert werden. Es ist also alles in Ordnung.
 
Urain:
Ich habe es gefunden. Es wird standardmäßig nach Zeit sortiert und muss nach Transaktionsnummer sortiert werden. Dann ist alles richtig.

Es gibt also keine Fehler? Es geht doch darum, die Geschäfte nach Ticketnummer zu zählen/sortieren, nicht nach Zeit.

Ich habe die Berichte nur oberflächlich geprüft und keine Positionsdaten berechnet.

 
Renat:

Es gibt also keine Fehler? Es geht doch darum, die Transaktionen nach Tickets und nicht nach Zeit zu zählen/sortieren.

Ich habe die Berichte nur oberflächlich geprüft und keine Positionsdaten berechnet.

Genau, es ist nur so, dass es beim Speichern eines Berichts keine Automatisierung dieses Prozesses gibt und er sorgfältig überwacht werden muss. Ich glaube nicht, dass jeder Benutzer dies beachtet, so dass es beim Parsen des Berichts zu Fehlern kommen wird.

ZS Ich habe die Sortierung nach dem Parsen des Berichts hinzugefügt. Bei mir hat es funktioniert, aber ich sage voraus, dass mehr als ein Programmierer mit dieser Funktion Schwierigkeiten haben wird.

 

Während der Optimierung wird der Name des Optimierungsparameters in der oberen rechten Ecke des Optimierungsdiagramms angezeigt.


Bei der Betrachtung der Optimierung ist diese Aufschrift störend, da das neue Maximum immer hinter dieser Aufschrift versteckt ist.

Renat, verschieben wir es in die LINKE obere Ecke! Oder in die untere rechte Ecke. Oder unten links... Egal wo, nimm es einfach aus der oberen rechten Ecke, um Himmels willen, bitte!)

// Oder machen Sie es zumindest blass und stellen Sie es in den Hintergrund, damit es die Informationen nicht verdeckt.

 
MetaDriver:

Während der Optimierung wird der Name des Optimierungsparameters in der oberen rechten Ecke des Optimierungsdiagramms angezeigt.

Bei der Betrachtung der Optimierung ist diese Aufschrift störend, da das neue Maximum immer hinter dieser Aufschrift versteckt ist.

Renat, verschieben wir es in die LINKE obere Ecke! Oder in die untere rechte Ecke. Oder unten links... Egal wo, nimm es einfach aus der oberen rechten Ecke, um Himmels willen, bitte!)

// Oder machen Sie es zumindest blass und stellen Sie es in den Hintergrund, damit es die Informationen nicht verdeckt.

Unten links, und als Hintergrund.
 

Bitte sagen Sie mir, was ich falsch gemacht habe. Ich versuche, ein einfaches Skript zu schreiben, das Positionen und schwebende Aufträge für das aktuelle Instrument löscht. Hier:

//+------------------------------------------------------------------+
//|                                                        clean.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlTick current_tick;
   MqlTradeRequest close_request;
   MqlTradeResult  close_result;
   SymbolInfoTick(_Symbol,current_tick);
   int counter01;
   while(check_position()==true);
     {
      PositionSelect(_Symbol);
      close_request.action=TRADE_ACTION_DEAL; close_request.symbol=_Symbol; close_request.volume=PositionGetDouble(POSITION_VOLUME); close_request.type_filling=ORDER_FILLING_AON;
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         close_request.price=current_tick.bid; close_request.type=ORDER_TYPE_SELL;
        }
      else
        {
         close_request.price=current_tick.ask; close_request.type=ORDER_TYPE_BUY;
        }
      OrderSend(close_request,close_result);
     }
   do
     {
      for(counter01=1; counter01<=OrdersTotal(); counter01++)
        {
         close_request.order=OrderGetTicket(counter01-1);
         if(OrderGetString(ORDER_SYMBOL)==_Symbol)
           {
            close_request.action=TRADE_ACTION_REMOVE;
            OrderSend(close_request,close_result);
           }
        }
     }
   while(check_order()==true);
   if(GetLastError()!=0)
      Print("ошибка код ",GetLastError()," функция ",__FUNCTION__," строка ",__LINE__);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_position() // функция проверяет наличие позиции
  {
   int counter01;
   bool position_exsist=false;
   for(counter01=0; counter01<PositionsTotal(); counter01++)
     {
      if(PositionGetSymbol(counter01)==_Symbol)
        {
         position_exsist=true;
         break;
        }
     }
   return(position_exsist);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_order() // функция проверяет наличие ордеров
  {
   int counter01;
   bool order_exsist=false;
   for(counter01=0; counter01<OrdersTotal(); counter01++)
     {
      OrderGetTicket(counter01);
      if(OrderGetString(ORDER_SYMBOL)==_Symbol)
        {
         order_exsist=true;
         break;
        }
     }
   return(order_exsist);
  }
//+------------------------------------------------------------------+
Das Skript bleibt hängen, wenn es eine Position gibt. Bei der Fehlersuche habe ich festgestellt, dass das Programm bei der Prüfung der Position einfriert. Wenn die Schleifenbedingung while(check_position()==true) zu prüfen beginnt, wird die Kontrolle an check_position() übergeben, und wenn die Funktion zum ersten Mal normal ausgeführt wird, gibt sie true zurück. Aber dann wird der Schleifenkörper nicht ausgeführt; er beginnt erneut mit der Überprüfung der Bedingung und die Kontrolle gelangt zu check_position() und nach return(order_exsist) kehrt der Operator nicht zur Bedingung der Schleife zurück; er geht zum Anfang der Funktion check_position(). Bitte sagen Sie mir, wo ich einen Fehler gemacht habe.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Основы языка / Операторы / Оператор возврата return - Документация по MQL5
 
molotkovsm:

Bitte sagen Sie mir, was ich falsch gemacht habe. Ich versuche, ein einfaches Skript zu schreiben, das Positionen und schwebende Aufträge für das aktuelle Instrument löscht. Hier ist sie:

Das Skript bleibt hängen, wenn es eine Position gibt. Bei der Fehlersuche habe ich festgestellt, dass das Programm bei der Überprüfung der Position einfriert. Wenn die Schleifenbedingung while(check_position()==true) mit der Überprüfung beginnt, wird die Kontrolle an die Funktion check_position() übergeben, und beim ersten Mal wird die Funktion normal ausgeführt und gibt true zurück. Aber dann wird der Schleifenkörper nicht ausgeführt; er beginnt erneut mit der Überprüfung der Bedingung und die Kontrolle gelangt zu check_position() und nach return(order_exsist) kehrt der Operator nicht zur Bedingung der Schleife zurück; er geht zum Anfang der Funktion check_position(). Bitte sagen Sie mir, wo ich mich irren muss.

Wenn es eine Position gibt, erhalten Sie eine Endlosschleife, weil

while(check_order()==true);

Entspricht

while(check_order()==true)
{
 //  пустой оператор
}
Es gibt keine Möglichkeit, aus der Schleife im Code auszubrechen, da es keine Unterbrechung im Körper des Operators gibt;
Grund der Beschwerde: