Historisches Zentrum aktualisiert - kostenlose Geschichte der Minutenzitate seit 1999 - Seite 8

 
Rosh:
Wenn Sie die "Max bars on the chart" (ca. 3 Millionen für heute) einstellen, können Sie jedes beliebige Datum beobachten.
d.h. es ist nicht möglich, ein beliebiges Segment zu setzen?
Zum Beispiel erst im August 2005?
 
Nein, und warum? Der Artikel 'Secrets of the MetaTrader 4 Client Terminal' beschreibt einige nützliche Dinge, die das Leben leichter machen, hier ist eines davon:

 
Wollten Sie schon einmal die Begrenzung der Anzahl der Balken im Verlauf und im Fenster im Allgemeinen aufheben? Oder machen Sie ein Kontrollkästchen wie unbegrenzt. Dadurch würden die Nutzer überhaupt keine Fragen mehr haben.
Es ist möglich, die Begrenzung der Anzahl der Balken im Fenster durch eine intelligentere Logik des Austauschs des Verlaufs aus einer Datei zu ersetzen. Es wird einen Puffer für die Anzeige geben, wenn wir auf die Daten außerhalb dieses Puffers schieben, dann werden in diesen Puffer aus einer Datei neue Verlaufsdaten anstelle der vorherigen geladen - dabei kann das Scrollen natürlich ein wenig verzögert werden. Obwohl, wenn die gesamte Geschichte geladen ist oder als Scrollen in der Tiefe der Geschichte kann in einem Puffer von VirtualAlloc in diesem Fall der Speicher wird aus der Auslagerungsdatei der Daten, auf die das Terminal Zugriffe im Moment statt der alten, die aus dem Speicher gelöscht werden und bleiben in der Auslagerungsdatei geladen werden erstellt platziert werden - die gleiche Pufferung, sondern auf der Ebene des Betriebssystems.
 
elritmo:
Möchten Sie die Begrenzung der Anzahl der Balken im Verlauf und im Fenster im Allgemeinen aufheben? Oder Sie können ein Kontrollkästchen wie z. B. "unbegrenzt" einrichten, so dass die Benutzer keine Fragen dazu haben.
Sie können die Begrenzung der Anzahl der Balken im Fenster durch eine intelligentere Logik des Austauschs des Verlaufs aus einer Datei ersetzen. Es wird einen Puffer für die Anzeige geben, wenn wir auf die Daten außerhalb dieses Puffers schieben, dann werden in diesen Puffer aus einer Datei neue Verlaufsdaten anstelle der vorherigen geladen - das Scrollen kann dabei natürlich ein wenig verzögern. Obwohl, wenn die gesamte Geschichte geladen ist oder als Scrollen in der Tiefe der Geschichte können Sie in einem Puffer von VirtualAlloc in diesem Fall der Speicher wird aus der Auslagerungsdatei Daten, auf die das Terminal zugreift im Moment anstelle der alten Daten, die aus dem Speicher gelöscht werden und bleiben in der Auslagerungsdatei geladen werden - die gleiche Pufferung, sondern auf der Ebene des Betriebssystems erstellt werden.
Gott bewahre vor dem Paging!
Die Begrenzung des Verlaufs ist auch für diejenigen notwendig, die das Terminal für den automatisierten Handel auf einen Server stellen. Sie benötigen ein Minimum an Historie, damit die Indikatoren funktionieren und der Speicherplatz begrenzt wird.
 
ein Kontrollkästchen einrichten, z. B. unbegrenzt oder unendlich, damit derjenige, der eingeschränkt werden muss, dies problemlos tun kann. Standardmäßig gibt es keine Einschränkungen, so dass Sie sich nicht fragen müssen: Warum wird nicht mein gesamter Verlauf angezeigt?
 
Ja, und der Arbeitsspeicher aller ist standardmäßig unbegrenzt...

Wenn Sie die ganze Geschichte anzeigen, wird es Fragen geben, warum die Dinge so langsam sind.
 

Sie können beim Blättern den Verlauf aus einer Datei laden. Aber ich habe den Eindruck, dass es sich verlangsamt, weil der Speicher durch den Stapel verlagert wird. Es gibt auch andere Möglichkeiten, Speicherplatz zu reservieren. Wir empfehlen die Verwendung von VirtualAlloc Speicherzuweisung für große Arrays. Heap kann frei für dynamische Arrays verwendet werden, die 1Mbyte nicht überschreiten
In MT nehme ich an, dass für die Speicherzuweisung new[] Operator und cpymem Funktion oder malloc und realloc, die dann HeapAlloc und HeapRealloc aufrufen. Die Meldung, dass der Speicher voll ist, erscheint, wenn Sie keinen neuen Adressraum finden können, um ein Element nach dem anderen zu platzieren (ich bin mir da nicht sicher :)). Oder vielleicht ist die Größe der Auslagerungsdatei zu einem bestimmten Zeitpunkt nicht mehr ausreichend.

Hier ist ein Beispiel, wie Sie virtuellen Speicher für Zeitreihen anstelle von Heap verwenden können

MemManager::MemManager(int reg_size, int unt_size, void*& p) {
    unit_size = unt_size;
    SYSTEM_INFO si;
    GetSystemInfo(&si);
    page_size = si.dwPageSize;
    region_size = (reg_size / page_size) * page_size;
    if(reg_size % page_size != 0) region_size += page_size;
    next_page = region = (char*)VirtualAlloc(0, region_size, MEM_RESERVE, PAGE_READWRITE);
    p = region;
    capacity = 0;
}
 
MemManager::~MemManager() {
     VirtualFree(region, 0, MEM_RELEASE);
}
 
void MemManager::realloc(int sz) {
    size = sz*unit_size;
    if(size <= capacity)
        return;
    int tmp_size = size - capacity;
    int inc_size = (tmp_size / page_size) * page_size;
    if (tmp_size % page_size != 0) inc_size += page_size;
    char* p = (char*)VirtualAlloc(next_page, inc_size, MEM_COMMIT, PAGE_READWRITE);
    next_page += inc_size;
    capacity += inc_size;
}
 
Ja, ja, auch ich habe viele Ideen, wie man die Wirtschaft in der Welt verbessern kann.
Ich kann auch Pflügern wertvolle Ratschläge geben, wie sie pflügen sollen, und Frauen, wie sie gebären sollen.
Und ich bin der Klügste hier, auch wenn ich sehr arm bin... .
 

Die Klugen nutzen die Ideen anderer ;o) So wie die Japaner nach dem Zweiten Weltkrieg...

 
Sagen Sie mir, warum die Historie für 6E, Euro FX Currencies -Globex im History Center fehlt und warum nur die letzten zwei Tage heruntergeladen werden?