Fehler, Irrtümer, Fragen - Seite 245

 

Springt die Geschichte zufällig auf?

Gilt das immer nur für ein Symbol oder auch für GBPUSD?

Welches Gebäude? Welcher Server?

 

Das Prellen der Geschichte gehört der Vergangenheit an,

Nein für alle Währungspaare sowohl auf simbol1 als auch auf simbol2,

Bild 370, Demokonto (alpari-demo)


Ich möchte anmerken, dass ich nur einen Händler habe (aus dem Screenshot oben), der Überschwinger ist

Ich möchte bemerken, dass, wenn ich einen Indikator (auf dem obigen Screenshot) zu verlassen, geht die Re-Draw nicht so bemerkbar,

kann es mehrmals neu gezeichnet werden.

Ich dachte, der Computer könnte langsam sein, aber auf einem 2-Kern-Computer ist es dasselbe, und das Diagramm scrollt nicht

Wahrscheinlich wartet er auf die Leerlaufzeit oder etwas anderes?

Am Abend werden die sechs Kerne getestet!

Ich möchte auch darauf hinweisen, dass bei anderen ähnlichen Truthähnen nichts passiert ist.

Das kann nicht an komplizierten Berechnungen liegen! Und die Drehscheibe ist einfach

und es funktioniert zu offenen Preisen.

 
alexluek:

Hilfe! Der Indikator funktioniert gut, zeigt und berechnet alles, aber

Wenn ein neuer Tick kommt, wird er zurückgesetzt und die Linien werden neu kalkuliert.

Ich bekomme sie regelmäßig bei Kommunikationsverlusten. Nach der Wiederherstellung der Verbindung berechnet das Terminal die Indikatorwerte neu, die Neuberechnung nimmt Zeit in Anspruch. Von der Referenz:

Die Beziehung zwischen dem von OnCalculate() zurückgegebenen Wert und dem zweiten Eingabeparameter prev_calculated sollte beachtet werden. Der Parameter prev_calculated beim Aufruf der Funktion enthält den von OnCalculate() beim vorherigen Aufruf zurückgegebenenWert . Dies ermöglicht sparsame Algorithmen für die Berechnung des benutzerdefinierten Indikators, um wiederholte Berechnungen für die Balken zu vermeiden, die sich seit dem letzten Aufruf dieser Funktion nicht verändert haben.

Dazu reicht es in der Regel aus, den Wert des Parameters rates_total zurückzugeben, der die Anzahl der Takte im aktuellen Funktionsaufruf enthält. Wenn sich seit dem letzten Aufruf von OnCalculate() die Preisdaten geändert haben (es wurde eine tiefere Historie geladen oder es wurden Lücken in der Historie gefüllt), dann wird der Wert des Eingabeparameters prev_calculated vom Terminal auf Null gesetzt.

Ich weiß nicht, wie Ihre Situation genau aussieht, aber für mich selbst erkläre ich ein solches Verhalten als "Auffüllen von Geschichtslücken". Oder vielleicht arbeitet Ihr Indikator ineffizient, indem er den gesamten Wertebereich bei jeder Ankunft eines Ticks neu berechnet?

 

Es gab keinen Kommunikationsverlust, kein Überziehen von Zecken, und je größer die TF, desto seltener.

Und die Berechnungsmethode vom Startdatum bis zum Enddatum (ich habe herausgefunden, dass es 3 davon gibt) ohne

Wahrscheinlich passiert es (es werden alle Balken neu berechnet), aber es ist noch nicht genau und ich weiß nicht, wie ich es überprüfen kann.

aber das ist nur ein Gedanke - prüfen wir es...

Vielleicht gibt es einen anderen Ansatz, um sie loszuwerden...

 
alexluek:

Es gab keinen Kommunikationsverlust, kein Überziehen von Zecken, und je größer die TF, desto seltener.

Und die Berechnungsmethode vom Startdatum bis zum Enddatum (ich habe herausgefunden, dass es 3 davon gibt) ohne

Wahrscheinlich passiert es (es werden alle Balken neu berechnet), aber es ist noch nicht genau und ich weiß nicht, wie ich es überprüfen kann.

aber das ist nur ein Gedanke - prüfen wir es...

Vielleicht gibt es einen anderen Ansatz, um sie loszuwerden...

Natürlich gibt es einen Ansatz. Wenn(prev_calculated==0), wird die erste Berechnung für alle Balken durchgeführt. Anschließend führen wir für jeden neuen Tick (wenn 0 < prev_calculated < rates_total) Berechnungen wie for(int i=prev_calculated-1;i<rates_total;i++) nur für die zuletzt erschienenen Bars durch.
 
Yedelkin:
Natürlich gibt es einen Ansatz. Wenn(prev_calculated==0), wird die erste Berechnung für alle Balken durchgeführt. Später, für jeden neuen Tick (wenn 0 < prev_calculated < rates_total) führen wir Berechnungen des Typs for(int i=prev_calculated-1;i<rates_total;i++) nur für die zuletzt erschienenen Bars durch.
Gute Idee - probieren wir es aus und antworten wir! Ich danke Ihnen!
 

Ich möchte den Zeitrahmenwert des aktuellen Diagramms als String abrufen. Ich schreibe es so:

ENUM_TIMEFRAMES period1=Period();
string periodStr;
periodStr=PeriodStr(period1);

Der Compiler sagt mir, dass die Funktion 'PeriodStr' nicht definiert ist...

Was soll das bringen? Kolleginnen und Kollegen, bitte helfen Sie mit :-)

In der Hilfe gibt es eine solche Funktion:

ZeitraumStr

Konvertiert den Wert der Aufzählung ENUM_TIMEFRAMES in einen String.

stringPeriodStr(
int val// Wert
)

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - Документация по MQL5
 

Liebe Entwickler, bitte erklären Sie mir, was ein zweideutiger Aufruf einer überladenen Funktion ist (das ist es, worüber der Compiler flucht):

'set' - zweideutiger Aufruf einer überladenen Funktion

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set(1,2,Int);
   a.set(1,2,Long);
  }

HH Ich habe herausgefunden, dass, wenn man die Konstanten im ersten und zweiten Parameter durch den Variablentyp int ersetzt, das Fluchen aufhört.

Aber ich verstehe die Logik des Compilers nicht, die ersten beiden Parameter sind in allen Überladungen gleich, keine Standardparameter.

Warum also flucht der Compiler, was ist die Zweideutigkeit des Aufrufs?

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Типы char, short, int и long - Документация по MQL5
 
denkir:

Ich möchte den Zeitrahmenwert des aktuellen Diagramms als String abrufen. Ich schreibe es so:

Der Compiler sagt mir, dass die Funktion 'PeriodStr' nicht definiert ist...

Was ist mit Ihnen los? Kolleginnen und Kollegen, bitte helfen Sie mir :-)

Sie sehen, die Hilfedatei hat diese Funktion:

ZeitraumStr

Konvertiert den Aufzählungswert von ENUM_TIMEFRAMES in einen String.

stringPeriodStr(
int val// Wert
)

Seltsam, ich habe eine solche Funktion - PeriodStr - im Handbuch nicht gefunden
 
denkir:

Ich möchte den Zeitrahmenwert des aktuellen Diagramms als String abrufen. Ich schreibe es so:

Der Compiler sagt mir, dass die Funktion 'PeriodStr' nicht definiert ist...

Wo liegt das Problem? Kolleginnen und Kollegen, bitte helfen Sie mir :-)

In der Hilfe gibt es eine solche Funktion:

ZeitraumStr

Konvertiert den Wert der Aufzählung ENUM_TIMEFRAMES in einen String.

stringPeriodStr(
int val// Wert
)

Dies ist eine Klassenmethode

https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicator

#include<Anzeiger}Anzeiger.mqh>

Grund der Beschwerde: