Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 37

 

HistorySelect ist eine sehr teure Funktion. Aber HistorySelectByPosition ist noch teurer.

Wenn wir zum Beispiel das erste Geschäft der geschlossenen Position finden müssen, können wir dies auf zwei Arten tun

  1. Führen Sie HistorySelectByPosition aus und suchen Sie dann das notwendige Geschäft aus der erhaltenen kleinen Liste. Aber diese Liste wird wie folgt gebildet Zunächst wird ALLE Geschichte gebildet (entspricht dem Aufruf des "unendlichen" HistorySelect). Dann gibt es eine FULL for-Schleife durch diese Liste und es werden nur die Geschäfte ausgewählt, die einen entsprechenden POSITION_IDENTIFIER haben.
  2. Machen Sie HistorySelect (Sie können "unendlich", aber es ist besser, ein Intervall zu verwenden, wenn bekannt), dann in der for-Schleife machen Sie eine Pause, wenn Sie die entsprechende DEAL_ENTRY erreichen.

Der zweite Punkt könnte viel billiger sein. Aber sicher nicht teurer.

Der Aufruf von HistorySelect*-Funktionen im Prüfprogramm ist fast eine Verschwendung von Rechenressourcen. Daher sollten Sie immer versuchen, ihre Zahl zu minimieren. Insbesondere HistorySelectByPosition.

 
Für Hedge-Konten im Testgerät
Aktivierungsprüfung für reguläre Begrenzer beim nächsten Häkchen.
Dies bedeutet, dass das Testergebnis sehr stark von der Art des Kontos abhängt.
 
fxsaber:
Für Hedge-Konten im TesterDas bedeutet, dass das Testergebnis sehr stark von der Art des Kontos abhängt.


Wie sich in einem der benachbarten Threads herausstellte, hängt das Testergebnis sogar davon ab, ob der Test an einem lokalen Agenten oder an einem Agenten in einem verteilten Netz durchgeführt wird.

https://www.mql5.com/ru/forum/1111/page1880#comment_4904481

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
Yury Kirillov:


Wie sich in einem der benachbarten Threads herausstellte, hängt das Ergebnis des Testers sogar davon ab, ob der Test auf dem lokalen Agenten oder auf einem der Agenten im verteilten Netz stattfindet.

https://www.mql5.com/ru/forum/1111/page1880#comment_4904481

Sie haben eine BAG beschrieben, die nicht in den Kontext dieses Themas passt. Der offizielle Standpunkt ist die Begrenzung der Ausführungsabweichung.
 
fxsaber:
Sie haben das BAG beschrieben, was nicht in den Kontext dieses Themas passt. Die unterschiedliche Ausführung von Begrenzern ist der offizielle Standpunkt.

Ich stimme zu und wollte nur darauf hinweisen, dass der Tester ein immer unberechenbareres Werkzeug wird.
 
Yury Kirillov:

Ich stimme zu, ich wollte nur darauf hinweisen, dass der Tester ein immer unberechenbareres Werkzeug wird.
Es war leider nie vorhersehbar.
 
fxsaber:
Dies bedeutet, dass das Ergebnis des Testers sehr stark von der Art des Kontos abhängt.
Dies gilt nur für börsengehandelte Instrumente.
 
Alle Standardtypen sind aufeinander abgestimmt
void OnStart()
{
  string Str = "1.23qwedfg";
  
  Print((int)Str);
  Print((double)Str);
}

Ergebnis

1
1.23
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2017.04.10 16:53

Liebe Entwickler, wie wird man in dieser Situation die Warnungen los?
template <typename T>
T GetValue()
{
  T Res; // possible use of uninitialized variable 'Res'
  
  return(Res);
}

void OnStart()
{
  MqlTick Tick = GetValue<MqlTick>();
  int i = GetValue<int>();
}
Lifehack
template <typename T>
const T GetDefaultValue( void )
{
  struct STRUCT_TYPE
  {
    const T Value;
  };
  
  const STRUCT_TYPE Res = {0};
  
  return(Res.Value);
}

void OnStart()
{
  int i = GetDefaultValue<int>();
  MqlTick Tick = GetDefaultValue<MqlTick>();
  string Str = GetDefaultValue<string>();
}
 

Rudimentäre Funktionen (nicht erforderlich)

  • StringToDouble
  • StringToInteger
  • StringToTime
  • StringToColor
  • StringAdd
  • StringConcatenate
  • GetPointer

Grund der Beschwerde: