ArrayMin
ArrayMin gibt den kleinsten in einem ProBuilder-Array gespeicherten Wert zurück. Verwenden Sie es, um das Minimum aus gesammelten Datenpunkten in Indikatoren und Strategien zu extrahieren.
Syntax
result = ArrayMin($MyArray)Parameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
$MyArray | Array | erforderlich | Die zu durchsuchende Array-Variable. Array-Namen beginnen immer mit $. |
So funktioniert es
ArrayMin prüft die belegten Elemente eines Arrays und gibt den einen kleinsten Wert zurück. Es ist das Gegenstück zu ArrayMax und erspart den Boilerplate-Code, über Indizes zu iterieren und dabei ein laufendes Minimum mitzuführen.
Das Ergebnis spiegelt den vollständigen Inhalt des Arrays zum Zeitpunkt des Aufrufs wider. Da ProBuilder-Arrays zwischen Bars erhalten bleiben, wächst ein Array, das auf jedem Bar ein Element hinzugewinnt, immer weiter, und ArrayMin erfasst dann die gesamte angesammelte Historie statt eines jüngeren Fensters. Um nur aktuelle Daten auszuwerten, überschreiben Sie auf jedem Bar einen festen Indexbereich oder leeren das Array mit Unset bevor es neu gefüllt wird.
ArrayMin funktioniert nur mit numerischen Daten. Ist das Array leer, gibt die Funktion einen undefinierten Wert zurück, daher sollten Aufrufe abgesichert werden mit IsSet oder ein LastSet prüfen, wenn die Befüllung des Arrays bedingt erfolgt.
Für eingebaute Serien gibt es einfachere Alternativen: Lowest[n](series) gibt das Minimum einer Reihe über die letzten n Bars zurück, und MIN(a, b) vergleicht zwei Skalare. ArrayMin ist das richtige Werkzeug, wenn die Werte manuell in einem Array gesammelt wurden, zum Beispiel gefilterte Stichproben, die nicht auf aufeinanderfolgende Bars abgebildet sind.
Beispiele
Beispiel 1, Niedrigster von fünf gespeicherten Kursen (Indikator)
// Store five closing prices in an array
$myPrices[1] = 130
$myPrices[2] = 135
$myPrices[3] = 128
$myPrices[4] = 140
$myPrices[5] = 132
// Extract the smallest stored value
lowestPrice = ArrayMin($myPrices)
RETURN lowestPriceDas Array enthält fünf Werte und ArrayMin gibt 128 zurück, den kleinsten davon.
Beispiel 2, Schutz-Stop aus aufgezeichneten Pullback-Tiefs (ProOrder)
DEFPARAM CumulateOrders = false
// Record the low of each bar where RSI dipped below 40
IF RSI[14](close) < 40 THEN
$pullbackLows[LastSet($pullbackLows) + 1] = low
ENDIF
// Long entry on a moving average cross, stop below the weakest recorded low
IF Average[20](close) CROSSES OVER Average[50](close) AND IsSet($pullbackLows[1]) THEN
supportLevel = ArrayMin($pullbackLows)
BUY 1 CONTRACT AT MARKET
SET STOP PRICE supportLevel
ENDIFDie Strategie sammelt Pullback-Tiefs in einem Array und nutzt ArrayMin, um den Stop unter das tiefste aufgezeichnete Tief zu setzen.
Beispiel 3, Neues Tief gegenüber einem gespeicherten Fenster (ProScreener)
// Collect the lows of the previous 20 bars into an array
FOR i = 1 TO 20 DO
$lows[i] = low[i]
NEXT
// Flag instruments printing a low beneath every stored value
windowMin = ArrayMin($lows)
SCREENER[low < windowMin] (close AS "Last price")Der Screener speichert die letzten 20 Tiefs und behält nur Instrumente, deren aktuelles Tief den ArrayMin dieses Fensters unterschreitet.
Häufige Fehler und Stolperfallen
- Das Argument muss ein Array sein. ArrayMin eine einfache Variable oder eine Kursreihe zu übergeben, lässt sich nicht kompilieren. Nur
$-präfixierte, mit Klammern indexierte Array-Variablen werden akzeptiert. - Ein leeres Array gibt undefined zurück. Bevor ein Element zugewiesen wurde, liefert ArrayMin einen undefinierten Wert, der nachfolgende Berechnungen unbemerkt verfälschen kann. Prüfen Sie mit
IsSetoderLastSetbevor Sie sich auf das Ergebnis verlassen. - Nicht numerische Inhalte verursachen Fehler. Die Funktion ist nur für numerische Daten definiert. Als 0 und 1 gespeicherte boolesche Flags sind in Ordnung, aber das Array muss Zahlen enthalten.
- Die Historie sammelt sich weiter an. Ein Array, an das auf jedem Bar angehängt wird, macht ArrayMin zu einem Minimum über die gesamte Laufzeit, nicht zu einem rollierenden. Verwenden Sie feste Indizes erneut oder leeren Sie mit
Unsetum ein gefenstertes Ergebnis zu erhalten.
Verwandte Befehle
ArrayMax, gibt den größten in einem Array gespeicherten Wert zurück.ArraySort, sortiert Array-Elemente in aufsteigender oder absteigender Reihenfolge.IsSet, prüft, ob ein bestimmtes Array-Element zugewiesen wurde.LastSet, gibt den höchsten in einem Array zugewiesenen Index zurück.Unset, löscht ein Array oder ein einzelnes Element.Lowest, niedrigster Wert einer Reihe über eine feste Anzahl von Bars.MIN, der kleinere von zwei Skalarwerten.BarIndex, Position des aktuellen Bars in den geladenen Daten.