CopyIndicatorBuffer

Abrufen der Daten des spezifizierten Indikator-Puffers im angegebenen Umfang Menge in einen Vektor.

Die Daten werden in den Vektor kopiert, wobei das älteste Element an den Anfang des für den Vektor zugewiesenen physischen Speichers gesetzt wird. Es gibt drei Funktionsmöglichkeiten.

Zugriff über die Anfangsposition und die Anzahl der gewünschten Elemente

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // Indikator-Handle
   ulong     buffer_index,         // Nummer des Indikatorpuffers
   ulong     start_pos,            // Startposition der Kopie
   ulong     count                 // Anzahl der zu kopierenden Elemente
   );

Zugriff über das Startdatum und die Anzahl der benötigten Elemente

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // Indikator-Handle
   ulong     buffer_index,         // Nummer des Indikatorpuffers
   datetime  start_time,           // Zeitpunkt, ab dem kopiert werden soll
   ulong     count                 // Anzahl der zu kopierenden Elemente
   );

Zugriff mit Anfangs- und Endzeitpunkt des gewünschten Zeitraums

bool  vector::CopyIndicatorBuffer(
   long      indicator_handle,     // Indikator-Handle
   ulong     buffer_index,         // Nummer des Indikatorpuffers
   datetime  start_time,           // Zeitpunkt, ab dem kopiert werden soll
   datetime  stop_time             // Zeitpunkt, bis zu dem soll kopiert werden
   );

Parameter

indicator_handle

[in] Das von der entsprechenden Indikatorfunktion erhaltene Indikator-Handle.

buffer_index

[in]  Die Nummer des Indikatorpuffers.

start_pos

[in]  Die Indexnummer des ersten zu kopierenden Elements.

count

[in]  Die Anzahl der kopierten Elemente.

start_time

[in]  Der Zeitpunkt des Balkens des ersten Elements.

stop_time

[in]  Der Zeitpunkt des letzten Elements.

Rückgabewert

Die Funktion liefert bei Erfolg 'true' sonst, wenn ein Fehler aufgetreten ist, 'false'.

Hinweis

Die Elemente der kopierten Daten (der Indikatorpuffer mit dem Index buffer_index) werden von der Gegenwart in die Vergangenheit heruntergezählt, sodass die Startposition 0 der aktuellen Balken (der Indikatorwert für den aktuellen Balken) bedeutet.

Wenn Sie eine unbekannte Datenmenge kopieren, sollten Sie einen Vektor deklarieren, ohne eine Größe anzugeben (ohne den Daten Speicher vorab zu festzulegen), da die Funktion CopyBuffer() versucht, die Größe des Empfangsvektors an die Menge der kopierenden Daten anzupassen.

Wenn ein teilweises Kopieren der Indikatorwerte erforderlich ist, sollten Sie einen Zwischenvektor verwenden, in den die gewünschte Menge kopiert wird. Aus diesem Zwischenvektor können Sie die erforderliche Anzahl von Werten einzeln an die erforderlichen Stellen des Empfangsvektors kopieren.

Wenn Sie eine vorher festgelegte Datenmenge kopieren, ist es empfehlenswert, einen Vektor vorab zu deklarieren und seine Größe anzugeben, um eine unnötige Neuzuweisung von Speicher zu vermeiden.

Wenn Daten von einem Indikator angefordert werden, gibt die Funktion sofort false zurück, wenn die angeforderten Zeitreihen noch nicht erstellt wurden oder vom Server heruntergeladen werden müssen, während sie mit dem Laden/Konstruieren beginnt.

Wenn Daten von einem EA oder einem Skript angefordert werden, wird das Herunterladen vom Server eingeleitet, wenn das Terminal die entsprechenden Daten nicht lokal hat, oder die Konstruktion der erforderlichen Zeitreihen beginnt, wenn die Daten aus der lokalen Historie konstruiert werden können, aber die erforderlichen Zeitrahmen noch nicht bereit sind. Die Funktion gibt die Menge zurück, die zum Zeitpunkt des Ablaufs der Zeitüberschreitung zur Verfügung steht.

Siehe auch

CopyBuffer