Fehler, Irrtümer, Fragen - Seite 2144

 
Wie kann ich es so einrichten, dass die Geschichte des benutzerdefinierten Charakters, wenn sie geändert wird, vom Agenten versteckt wird, anstatt vom Agenten aus seinem irrelevanten Repository genommen zu werden?
 
Ist dies ein Sprachfehler?
struct STRUCT
{
  template <typename T>
  void operator =( const T ) const {}

  template <typename T>
  void operator =( const T &Value ) const {} // Ошибка исчезает, если убрать любой const
};

void OnStart()
{
  STRUCT a;
  const int i = 0;
  
  a = i; // Ошибка: 'operator=' - object required
}
 
fxsaber:
Ist es ein Fehler in der Sprache?

In dieser Form gibt C++ auch den Fehler E2015

Und wenn Sie es so schreiben:

template<typename T> void f( T& ) {}
template<typename T> void f( T  ) {}
void OnStart()
{
    const int i = 0;
    f( i );
}

MQL kompiliert ohne Fehler, aber C++ meldet den Fehler E2015

 

Stimmt es, dass SymbolInfoTick in MT4/5-Indikatoren nicht den Tick zurückgibt, der das Calculate-Ereignis ausgelöst hat?

Wenn ja, ist nicht ganz klar, worauf die Tick-Sammler über Indikatoren beruhen?

 
fxsaber:

Stimmt es, dass SymbolInfoTick in MT4/5-Indikatoren nicht den Tick zurückgibt, der das Calculate-Ereignis ausgelöst hat?

In der Regel ist es derselbe Tick.

Sie formulieren Ihre Fragen auf eine sehr merkwürdige Weise.

- Jede Frage kann mit Ja oder Nein beantwortet werden!

- Seit wann trinken Sie keinen Cognac mehr am Morgen? Antworten Sie jetzt, ja oder nein?

(c) Astrid Lindgren

 
Slava:

In der Regel handelt es sich um dieselbe Zecke.

Wenn ein Paket von drei Ticks eintrifft, wird das Ereignis Calculate dreimal aufgerufen, aber SymbolInfoTick gibt bei jedem dieser drei Aufrufe den neuesten Tick zurück. D.h. das sogenannte Sammeln von Ticks ohne Durchlaufen von Indikatoren ist gelinde gesagt fragwürdig.

 
Warum wird nach dem Setzen von CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_MIN, 0.00035) und CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_STEP, 0.00035) Funktion SymbolInfoDouble(Symbol, SYMBOL_VOLUME_MIN) ergibt 0,0003 und SymbolInfoDouble(Symbol, SYMBOL_VOLUME_STEP) ergibt 0,01?
 

Ein sehr unangenehmer Fehler bei benutzerdefinierten Charakteren. Der Tickverlauf der benutzerdefinierten Zeichen kann vollständig verschwinden.

Ich habe das schon ein paar Mal erlebt. Ich mache keine benutzerdefinierten Einträge. Ich arbeite nur daran, Zecken zu lesen. Und in einem bestimmten Moment verschwindet plötzlich die gesamte Geschichte. CopyTicks gibt ohne Fehler Nullen zurück. Mit GUI-Tools ist es dasselbe. tkc wird zu 1 Kb, während es früher mehrere Millionen Ticks waren.

Ich kann mich also nicht darauf verlassen, dass MT5 meine Ticks speichert, weil er sie während eines meiner Lesevorgänge löschen könnte.

 
Ivan Titov:
Warum wird nach dem Setzen von CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_MIN, 0.00035) und CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_STEP, 0.00035) Funktion SymbolInfoDouble(Symbol, SYMBOL_VOLUME_MIN) ergibt 0,0003 und SymbolInfoDouble(Symbol, SYMBOL_VOLUME_STEP) ergibt 0,01?

Selbst mit der GUI können Sie diese Werte nicht einstellen


 
A100:

In dieser Form gibt C++ auch den Fehler E2015

E2015 ist eine Mehrdeutigkeit.

Und im fxsaber-Beispiel sieht es so aus, als ob der Compiler einen nicht konstanten Operator generiert (mit einem Objekt in den Parametern) und diesen ausgewählt hat.

Der Grund dafür ist, dass der Zuweisungsoperator nicht konstant sein sollte

(imho)