Alle Fragen von einem PROFI an einen SUPER PROFI - 1. - Seite 40

 
olyakish:

Können Sie mir ein Beispiel dafür geben, welche Zahl Sie festgelegt haben?

20 oder 0,00020 ?


Natürlich 20! Sie wird immer in Punkten angegeben:

   int      slippage,            // проскальзывание

Aber das ist nicht genug für eine 5-stellige Spanne! Wie bereits oben empfohlen, ist eine größere Spanne sinnvoll, oder besser noch die doppelte Spanne!

 
borilunad:

Natürlich, 20! Wird immer in Punkten angegeben:

Aber das ist nicht genug für eine 5-stellige Spanne! Wie oben empfohlen, ist eine größere Streuung sinnvoll, besser noch eine Verdoppelung der Streuung!

Vielen Dank, ich bin mir dessen bewusst. Sie haben eine Frage beantwortet, die nicht an Sie gerichtet war.

 
olyakish:

Vielen Dank, ich bin mir dessen bewusst. Sie haben eine Frage beantwortet, die nicht an Sie gerichtet war.


Entschuldigung, ich wusste nicht, dass Sie eine Prüfung machen! ;)
 

Gibt es einen Modus im Terminal, in dem Abstürze protokolliert werden?

Ich meine stille Abstürze, bei denen sich das Terminal einfach ohne Fehler schließt.

Ich möchte den Grund finden, warum das Terminal während der Optimierung manchmal abstürzt. Die Strategie verwendet dll. Der gesamte Code ist in try - catch verpackt, mit eigenem Logging, aber es werden keine Fehler angezeigt, trotzdem stürzt das Terminal manchmal bei massiver Genetik ab. Das Gesamtsystem ist nicht nachweisbar, es kann bei 100 Iterationen abstürzen oder bei 10.000 überleben, und das bei absolut identischem Parametersatz und -bereich.

Der Task-Manager zeigt keine Speicherlecks an (ich weiß, dass es nicht das beste Tool für solche Zwecke ist, aber trotzdem).

 
TomKein:

Gibt es einen Modus im Terminal, in dem Abstürze protokolliert werden?

Ich meine stille Abstürze, bei denen sich das Terminal einfach ohne Fehler schließt.

Ich möchte den Grund finden, warum das Terminal während der Optimierung manchmal abstürzt. Die Strategie verwendet dll. Der gesamte Code ist in try - catch verpackt, mit eigenem Logging, aber es werden keine Fehler angezeigt, trotzdem stürzt das Terminal manchmal bei massiver Genetik ab. Das Gesamtsystem ist nicht nachweisbar, es kann bei 100 Iterationen abstürzen oder bei 10.000 überleben, und das bei absolut identischem Parametersatz und -bereich.

Der Task-Manager zeigt keine Speicherlecks an (ich weiß, dass es nicht das beste Tool für solche Zwecke ist, aber trotzdem).

Meiner Meinung nach funktioniert die Dll im Tester nicht, so dass sie den Prozess nicht verlangsamt!
 

Warum etwas schreiben, von dem man keine Ahnung hat?

 
TomKein:

Verfügt das Terminal über einen Modus, in dem es Abstürze protokolliert?

Wenn das Terminal Sie über den Absturz benachrichtigt, können Sie es manuell dumpen und es dann verwenden, um den Fehler zu finden.

Wenn das Terminal ohne Absturzbenachrichtigung geschlossen wird, müssen Sie den Speicherauszug selbst erstellen. Ich habe ein Projekt namens breakpad aus Chrome, es ist nicht allzu schwierig, eine Verbindung zu fast jedem Projekt herzustellen, und es schreibt zuverlässig Dumps. Auf diese Weise habe ich einmal die DLL für das Terminal debuggt.

 

Gibt es eine Möglichkeit, den Variablennamen als String zu erhalten?

int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); // varTakeProfit = 1

string VarName( int Var )
{
   ???
}
 
#define  VarName(x) #x


int varTakeProfit = 1;
Print( VarName( varTakeProfit ), " = ", varTakeProfit ); //  varTakeProfit = 1

 
Andrey Khatimlianskii:

Gibt es eine Möglichkeit, den Variablennamen als String zu erhalten?

So etwas gibt es bei MQL nicht. Wenn sich eine solche Aufgabe ergibt, gehe ich wie folgt vor:

struct ValueAndName
{
   double   fValue;                     // Значение переменной
   string   sName;                      // Имя переменной

   ValueAndName(double _fValue, string _sName)
   {
      SetData(_fValue, _sName);
   }

   void SetData(double _fValue, string _sName)
   {
      fValue = _fValue;
      sName = _sName;
   }
};

VarAndName g_stVarTakeProfit(12.0, "VarTakeProfit");
VarAndName g_stVarStopLoss(20.0, "VarStopLoss");

void OnStart()
{
  Print("Значение переменной ", g_stVarTakeProfit.sName, " равно: ", g_stVarTakeProfit.fValue);
  Print("Значение переменной ", g_stVarStopLoss.sName, " равно: ", g_stVarStopLoss.fValue);
}