Fehler, Irrtümer, Fragen - Seite 2280

 
void f( int = 0, ) {}

Ist es richtig, dass es ohne Fehler kompiliert?

 
Ilyas:

Sie sind auf eine Speicherfunktion in Windows gestoßen

Direkt nach ArrayResize hinzufügen

Dadurch wird die tatsächliche Zuweisung von physischem Speicher eingeleitet, so dass dies nicht während des Tests geschieht.


Hier sind die Ergebnisse von meinem Computer

Ja, es funktioniert tatsächlich.
Ich danke Ihnen.
Sehr interessant. Das ist aber nicht klar.
Ich sollte wissen, dass, um schnell mit Speicher nach ArrayResize arbeiten Sie eine vollständige Array-Initialisierung mit ArrayInitialize oder ArrayFill tun müssen (es funktioniert beide Wege). ArrayInitialize ist einfacher.

Ich habe versucht, alle 4096 Array-Elemente zu initialisieren. Aber es hat keinen Einfluss auf die Leistungsverbesserung von ArrayFill.

for (int i=0;i<size;i+=4096) arr[i]=0;
 
Nikolai Semko:

Um schnell mit dem Speicher nach ArrayResize arbeiten zu können, sollten Sie eine vollständige Array-Initialisierung mit ArrayInitialize oder ArrayFill durchführen (funktioniert in beide Richtungen). Mit ArrayInitialize ist es einfacher.

Sie müssen eine falsche Schlussfolgerung gezogen haben. Alles funktioniert auf jeden Fall schnell. Es ist nur so, dass in der "langsamen" Variante zusätzlich zum Füllen auch die tatsächliche Speicherallokation gemessen wurde, da ArrayResize eine Absicht ist, Speicher zu allozieren, nicht die Allokation selbst.

 
fxsaber:

Sie haben eine falsche Schlussfolgerung gezogen. Alles funktioniert so schnell, wie es ist. Es ist nur so, dass in der "langsamen" Version die tatsächliche Speicherzuteilung zusätzlich zum Füllen gemessen wurde, weil ArrayResize eine Absicht ist, Speicher zuzuteilen, nicht die Zuteilung selbst.

Ja, Sie haben Recht.

Ich danke Ihnen!
Und ich lag auch falsch, als ich sagte, dass die Verknüpfung ArrayInitialize + ArrayCopy schneller funktionierte, weil ich das Array mit denselben Werten füllte, die ich vorher mit ArrayFill gefüllt hatte. Der Compiler ist einfach schlau und erledigt dieselbe Aufgabe nicht zweimal.
Wenn wir das Array mit anderen Werten füllen, wird das Ergebnis anders ausfallen:

2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill первая попытка= 299
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 425
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill вторая попытка = 78

Ich habe es also vermasselt. Entschuldigung.
Fahren wir fort, ArrayFill in funktionierendem Zustand zu verwenden.

Dateien:
 

Warum hat sich das Land meines Wohnsitzes in meinem Profil geändert?
In den letzten drei Jahren war es Kanada. Ich habe es nicht geändert. Und jetzt kann ich es nicht mehr ändern.

D.h. das Land des ursprünglichen Wohnsitzes bei der Registrierung ist für immer. Auch wenn Sie nicht in Russland leben und Einwohner oder Staatsbürger eines anderen Landes geworden sind?

 
Lassen Sie mich wissen, ob Sie dieses Problem angehen werden oder nicht.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2018.09.06 09:31

Warum passiert das manchmal? Der Tester schließt die Positionen nicht zum letzten Tick, sondern zum vorletzten Tick. Die Situation ist auf einige benutzerdefinierte Symbole.

Falls eine Wiederholung erforderlich ist, kann sie bereitgestellt werden.


Warum ist das wichtig? Bei benutzerdefinierten Symbolen mit Börsenausführung werden die Märkte zum letzten Preis ausgeführt. Bei benutzerdefinierten Symbolen wird die Tick-Historie als Geld-/Briefkurs (ohne Leisten) angezeigt. Daher schließt der Tester bei solchen Symbolen die aktuellen Positionen beim letzten Tick mit Null. Die Lösung besteht darin, last = (bid + ask) / 2 im letzten Tick zu erzwingen. Es gibt jedoch Situationen, in denen der Tester aus irgendeinem Grund alles nicht beim letzten, sondern beim vorletzten Tick schließt, wobei der letzte Tick gleich Null ist. Daraus ergibt sich das folgende Schaubild


Sie schauen sich die Optimierungsergebnisse an und sehen eine große Menge an Gewinn/Verlust. Sie werden den Fehler erst bemerken, wenn Sie einen einzigen Test durchführen und sich das Ende des Handelsverlaufs ansehen.

 
Nikolai Semko:

Warum hat sich das Land meines Wohnsitzes in meinem Profil geändert?
In den letzten drei Jahren war es Kanada. Ich habe es nicht geändert. Und jetzt kann ich es nicht mehr ändern.

D.h. das Land des ursprünglichen Wohnsitzes bei der Registrierung ist für immer. Auch wenn Sie nicht in Russland leben und Einwohner oder Staatsbürger eines anderen Landes geworden sind?

Sie sind als Verkäufer aus Russland registriert. Wenn Sie Änderungen an den Registrierungsdaten des Verkäufers vornehmen möchten, sind Sie herzlich willkommen

 
 
fxsaber:
Lassen Sie mich wissen, ob Sie sich mit diesem Problem befassen werden oder nicht?
Wir werden es uns ansehen
 
Marsel:

Sie sind als Verkäufer aus Russland registriert. Wenn Sie Änderungen an den Registrierungsdaten des Verkäufers vornehmen möchten, sind Sie herzlich willkommen

Sagen Sie mir, wo diese Einstellungen versteckt sind? Ich kann sie nicht finden. Auch in der SD-Karte gibt es keine solche Option.