Fehler, Irrtümer, Fragen - Seite 3155

 
murziks #:


Können Sie mir sagen, was Metatrader anstelle von csv noch lesen kann?

Binäre Dateien können gelesen und geschrieben werden. Variablen, Strukturen, Arrays. All dies wird in Dateien geschrieben und zurückgelesen.

 

Liebe Entwickler von mobilen Endgeräten, bitte korrigieren Sie die Handhabung von E-Mails im Reiter "Mail" bereits.

Vor der neuesten Version des mobilen Endgeräts (Android) ist die Registerkarte "Mail" beim Verbinden mit einem Konto voll mit E-Mails, die bereits mehrfach gelöscht wurden.

Sobald ich mich wieder mit dem Konto verbinde, sehe ich auf der Registerkarte Mail ein Durcheinander von gelöschten und ungelöschten E-Mails. Was muss ich tun, um sie loszuwerden?

 

Erläutern Sie bitte, was sich im Terminal für den PC "Extras > Einstellungen > Handelsverlauf anzeigen" ändert, wenn Sie bei jedem Wert des Kontrollkästchens die Anzeige des Handelsverlaufs über "PCM > Handelsverlauf" und "F8 > Handelsverlauf anzeigen" aktivieren/deaktivieren können?

Das heißt, ich kann die Anzeige der Handelshistorie in den allgemeinen Einstellungen des Terminals deaktivieren, damit sie nicht stört, während sie in jedem Chart angezeigt wird, wenn sie in den Charteinstellungen oder über das PCM aktiviert ist. Ich verstehe die Logik nicht.

 

Liebe Entwickler des PC-Terminals. Bei der Arbeit mit Diagrammprofilen (keine Vorlagen, sondern nur Profile) gibt es seit langem die seltsame Logik, dass jede Änderung eines Profils automatisch dazu führt, dass es gespeichert wird, ohne dass dies manuell angezeigt wird.

Fehler bei der Profilanpassung durch den Benutzer oder ein Ausfall des Terminals machen aus einem schwer zu konfigurierenden Arbeitsbereich einen Kürbis.

Warum können wir es nicht so einrichten, dass die am Profil vorgenommenen Änderungen nicht gespeichert werden, bis der Benutzer das Profil manuell speichert (sie sollen in einer temporären Profildatei und nicht im letzten Arbeitsprofil gespeichert werden)?

Wir warten seit vielen Jahren auf Änderungen in der eingebauten Schnittstelle a la TradingView, es ist wahrscheinlich nicht schwer für Sie, und es ist sehr bequem für die Nutzer.

 

Warum gibt es einen solchen Unterschied zum Beispiel ein Test mit dem "Gewinn in Pips zu beschleunigen Berechnungen" Checkbox ein 15% Drawdown, und ohne diese Checkbox ein 93% Drawdown?

Welches Ergebnis ist richtiger?

Die Anzahl der Gewerke ist gleich

In diesem Fall ein Gewinn von 2 Pfund im ersten Fall und 20 Pfund im zweiten Fall mit demselben Los.

Genauso wie es sichtbar ist, wenn Sie die Menge ändern, ist auch ein Unterschied von 10 Dollar.

 
Ich danke Ihnen. Sie würden nicht schreiben wollen
 
Kryptowährungen sind von den Servern von MQ verschwunden. Degradierung, Traurigkeit und Frustration.
 

Fehler in Generic/Queueue.

Forum zum Thema Handel, automatische Handelssysteme und Strategietests

[MÖGLICHER FEHLER] Klasse des CQueue-Containers

Loris De Marchi, 2022.02.14 13:00

Hallo zusammen!!!

Ich vermute, dass zumindest in den Methoden CQueue::Contains(T item) und CQueue::Remove(T item) ein Fehler vorliegt.

Die Warteschlange wird nach dem klassischen Kopf-Schwanz-Rundlaufsystem verwaltet, daher muss dieser Code falsch sein:

 //+------------------------------------------------------------------+
//| Removes all values from the CQueue<T>.                           |
//+------------------------------------------------------------------+
template < typename T>
bool CQueue::Contains(T item)
  {
   int count=m_size;
//--- try to find item in array
   while (count--> 0 )
     {
       //--- use default equality function
       if (::Equals(m_array[count],item))
         return ( true );
     }
   return ( false );
  }

Auch die fehlerhafte Beschreibung der Methode oben lässt mich vermuten, dass beim Schreiben dieser Klasse einige Fehler gemacht wurden.


Die Remove-Methode schlägt beispielsweise bei der Ausführung dieses einfachen Codes eindeutig fehl:

   CQueue< ulong > foo;
   foo.Enqueue( 1 );
   foo.Remove( 1 );
   foo.Enqueue( 2 );
   printf (foo.Contains( 2 ));

Er gibt "false" aus, wenn das Objekt eindeutig in der Warteschlange steht...


Lassen Sie mich wissen, ob diese Klasse behoben ist oder ob ich eine meiner eigenen verwenden sollte.

Danke!


 

Hallo. Wir wissen, dass Arrays in MQL sowohl vorwärts als auch rückwärts indiziert sein können (Serie). Deshalb habe ich eine Frage, was ist der beste Weg, um mit Arrays in MQL zu arbeiten, wenn eine Serie oder Reverse-Indexierung benötigt wird? Die erste Variante, den Wert nach Index für die Reihe zu ermitteln, kann wie folgt aussehen.

double arrayValue(const double array[], conct int shift) {
  int len = (int)array.Size();
  if (shift < 0 || shift >= len)
    return WRONG_VALUE;
  return array[len - shift - 1];
}

Die zweite Möglichkeit ist die Verwendung vonArraySetAsSeries.

double arrayValue(double &array[], conct int shift) {
  int len = (int)array.Size();
  double ret;
  if (shift < 0 || shift >= len)
    return WRONG_VALUE;
  if (!ArraySetAsSeries(array, true))
    return WRONG_VALUE;
  ret = array[shift];
  ArraySetAsSeries(array, false);
  return ret;
}

Natürlich behaupte ich nichts, aber ich denke, weil ArraySetAsSeries einfach das Array-Flag Serie einschalten und beim Zugriff auf einen Wert durch Index wie im ersten Beispiel auftritt.

double arrayValue(const double array[], conct int shift) {
  int len = (int)array.Size();
  if (shift < 0 || shift >= len)
    return WRONG_VALUE;
  return array[len - shift - 1];
}

Und so wird die Adressierung des Wertes über den Index ungefähr gehandhabt.

Ist es sinnvoll, die Serie für Arrays in der OnCalculate Indikator-Handler jedes Mal, oder es wäre besser, die niedrigen Bar mit der Länge der Arrays rates_total Adresse?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[]) 
{
  Print(price[rates_total-1]); // получение цены на младшем баре без использования серии
  return(rates_total);
}

Sind diese beiden Methoden gleich schnell, oder irre ich mich in meinen Überlegungen?

 

Das Terminal gibt den kumulierten Gewinn von geschlossenen Positionen nicht zurück. Können Sie mir sagen, wo das Problem liegen könnte?

double GetClosedPositionsInstrumentProfit(string symbol, datetime from) 
{
   HistorySelect(from, TimeCurrent());

   double profitSum = 0;

      for (int i = HistoryDealsTotal()-1; i >= 0; i--) 
    {   
      ulong ticket = HistoryDealGetTicket(i);
      if (ticket < 0) continue; 
      long magic = HistoryDealGetInteger(ticket, DEAL_MAGIC);
      if (magic != EXPERT_MAGIC) continue; 
      string positionSymbol = HistoryDealGetString(ticket, DEAL_SYMBOL);
      if (symbol != positionSymbol) continue; 
      
      double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT) + HistoryDealGetDouble(ticket, DEAL_SWAP)+ HistoryDealGetDouble(ticket, DEAL_COMMISSION);
      profitSum += profit; 
         
      Print ("Profit " + DoubleToString(profitSum,2));              
    }         
   return profitSum;
}