Fehler, Irrtümer, Fragen - Seite 1680

 

Im Logbuch.

2016.09.12 22:20:37.728 Books   invalid book item[RTS-9.16,buy,99040.00000,-4]
BCS-MetaTrader5, real, 1415. Dies geschah beim Wechsel von einem Demokonto zu einem echten Konto. Es wurden keine Expert Advisors oder Indikatoren ausgeführt. Das Fenster des Dummy war offen.
 
fxsaber:

In der Zeitschrift.

BCS-MetaTrader5, real, 1415. Das passierte, als ich vom Demokonto zum echten Konto wechselte. Es wurden keine Expert Advisors oder Indikatoren ausgeführt. Das Fenster des Cockpits war offen.

Ich habe über diesen Fehler geschrieben

https://www.mql5.com/ru/forum/95131

invalid book transaction
invalid book transaction
  • Bewertungen: 2
  • www.mql5.com
Раньше не было, появилось сегодня (реал). Что это...
 
prostotrader:
Was sind diese Sternchen unter dem Titel des Themas? Und auch die Anzahl der Bewertungen.
 
fxsaber:
Was sind diese Sternchen unter dem Titel des Themas? Und die Anzahl der Bewertungen.
Übrigens frage ich mich schon seit langem, wo diese Sterne für Themen gesetzt werden sollen.
 

Wie kann ich im Debug-Modus herausfinden, von wo aus die Funktion, in der ich mich gerade befinde, aufgerufen wird?

Grob gesagt, möchte ich Zugriff auf einen verschachtelten Funktions-/Methodenaufrufbaum haben. Ist dies möglich?

 
fxsaber:
Wie kann ich im Debug-Modus herausfinden, von wo aus die Funktion, in der ich mich gerade befinde, aufgerufen wurde?

Rufen Sie im Modus "Schritt für Schritt" die Registerkarte "Fehlersuche" nacheinander auf:

Schritte

 
Karputov Vladimir:

Rufen Sie im Modus "Schritt für Schritt" die Registerkarte "Fehlersuche" nacheinander auf:

Danke. Ich kann nicht herausfinden, warum der Indikator zu Beginn zweimal OnCalculate aufruft. Ich würde gerne herausfinden, auf welches Ereignis es reagiert. Leider kann ich auf der Registerkarte Debugging keine Ereignisse sehen.
 
fxsaber:
Danke. Ich kann nicht verstehen, warum der Indikator am Anfang zweimal OnCalculate aufruft. Ich würde gerne herausfinden, für welches Ereignis diese Antwort bestimmt ist. Bei der Fehlersuche sind leider keine Ereignisse sichtbar.

Manchmal passiert es zweimal, manchmal einmal, vielleicht sogar dreimal: Sie fügen diesen Code in Oncalculate() -

//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   Print(__FUNCTION__,", rates_total ",rates_total,", prev_calculated ",prev_calculated);

es wird klar, wenn die Geschichte ausgetauscht wird (wenn die Geschichte ausgetauscht wird prev_calculated==0).

 
Karputov Vladimir:

Manchmal passiert es zweimal, manchmal einmal, vielleicht sogar dreimal: Sie fügen diesen Code in Oncalculate() -

es wird klar, wenn ein History Swap stattfindet (wenn History Swap prev_calculated==0).

Nein, ich lasse es jetzt auf RTS laufen, wenn die Kotirs stehen. Ich habe herausgefunden, dass es nur einmal aufgerufen wird und der Debugger lügt, als ob es zwei Aufrufe wären. Code zum Spielen (auf einem Charakter laufen lassen, auf dem keine Ticks laufen)

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1

int Func(){ return(0); }

int OnCalculate( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[] )
{
//  return(0); // если расскоментировать и здесь поставить точку останова, то отладчик отработает, как надо
  return(Func()); // здесь поставить точку останова (F9)
}

Nachdem Sie F5 gedrückt haben, wird ein Haltepunkt erreicht. Und nach einem zweiten Druck auf F5 - ähnlich. Auch wenn dies nicht der Fall sein sollte - als Bestätigung können Sie die Zeile im Code kürzen und es damit versuchen.

 
fxsaber:

Nein, ich lasse es jetzt auf RTS laufen, wenn die Kotirs stehen. Ich habe herausgefunden, dass es nur einmal aufgerufen wird und der Debugger lügt, als ob es zwei Aufrufe wären. Code zum Spielen (auf einem Charakter laufen lassen, auf dem keine Ticks laufen)

Nachdem Sie F5 gedrückt haben, wird ein Haltepunkt erreicht. Und nach einem zweiten Druck auf F5 - ähnlich. Dies sollte jedoch nicht der Fall sein - zur Bestätigung können Sie die Zeile im Code löschen und es damit versuchen.

Es macht keinen Unterschied, ob die Anführungszeichen gehen oder stehen. Sie müssen die Bedingung prev_calculate==0 im Indikator kontrollieren - das ist History Swap und der zweite Punkt - sparsamer Modus der Neuberechnung der geänderten Balken, d.h. in der Tat, rates_total -prev_calculate+1.