Skip to main content
Skip table of contents

Makros erstellen

Um ein neues Makro anzulegen, öffnen Sie zunächst ein neues Formeleditor-Fenster über den Befehl NEU, FORMEL-MAKRO im Menü des Icons "Vorlage" auf der Registerkarte "Konfiguration" im Menüband des Infront Portfolio Manager oder, wenn bereits ein Formeleditor-Fenster geöffnet ist, mit dem Befehl FORMEL, NEUES MAKRO im Menü des Formeleditors. Bereits geöffnete Fenster bleiben (im Hintergrund) offen.

Mehrere geöffnete Formeleditorfenster erkennen Sie an der Titelzeile des Fensters: Formeleditor, Formeleditor (1), Formeleditor (2)…

Um ein Makro zu definieren, sind folgende Schritte nötig:

  1. Geben Sie den Formeltext in den Editor ein (es gilt die übliche MM-Talk-Syntax). Falls Sie im neuen Makro ein benutzerdefiniertes Makro verwenden, muss die entsprechende Bibliothek in die Formel eingebunden werden, indem Sie auf der Registerkarte "Bibliothek" in die Liste der verwendeten Bibliotheken verschoben wird. Mehr dazu im Abschnitt Bibliotheken in Makros einbinden.
  2. Typisieren Sie die Variablen (siehe Konfiguration der Parameterdialoge) und legen Sie die Standardwerte fest.
  3. Alle in einem Makro verwendeten Variablen werden automatisch als Parameter definiert. Legen Sie ggf. auf der Registerkarte "Deklaration" die gewünschte Reihenfolge fest, indem Sie einen Parameter mit der Maus markieren und dann mit den Pfeil-Buttons verschieben.
  4. Bestimmen Sie den Eingabetyp auf der Registerkarte "Deklaration" im Feld "Anwenden auf". Bleibt dieses Feld leer, wird als Typ automatisch "Objekt" eingesetzt.
  5. Vergeben Sie einen Makronamen und legen Sie fest, in welche Bibliothek das neue Makro aufgenommen werden soll (beides auf der Registerkarte "Deklaration").
  6. Geben Sie auf der Registerkarte "Beschreibung" eine kurze Erklärung des Makros ein. Diese wird dann später als Direkthilfe zu diesem Makro angezeigt.
  7. Speichern Sie das neue Makro ab.

Wenn Sie die Funktion "Fehler anzeigen" aktivieren, werden Fehler im Formeltext gelb markiert.

Beispiel: Makro erstellen

In diesem Beispiel wird ein Makro erstellt, das eine Zeitreihe aller Kurse liefert, die im Beobachtungszeitraum über n Perioden hinweg gestiegen sind.
Das Eingabeobjekt sei eine Zeitreihe, die Parameter seien "N" für die Anzahl der Perioden und "Zeitraum" für den gesamten Beobachtungszeitraum.

1. Formeltext eingeben

Ein Makro soll in anderen Formeln verwendet werden, erwartet also eine Eingabe ("Object"). Dieses Eingabeobjekt wird in einer Variablen abgelegt. Da es sich bei diesem Eingabeobjekt um eine Zeitreihe handeln wird, wird als Name "$Zeitreihe" gewählt.

CODE
$Zeitreihe:=Object; 

Sie können die Variablennamen natürlich völlig frei wählen. Sie machen die Formel aber leichter lesbar, wenn Sie sich für einen deskriptiven Namen entscheiden, aus dem hervorgeht, womit die Variable belegt ist.

Die Werte sollen mit den Werten vor N Perioden verglichen werden. Dazu wird die Zeitreihe mit dem Befehl "Before[$N]" um N Perioden in die Vergangenheit verschoben. Das Ergebnis wird in der Variablen "$ZeitreiheVorN" gespeichert:

CODE
$ZeitreiheVorN:=$Zeitreihe.Before[$N]

Jetzt muss verglichen werden, zu welchen Zeitpunkten der Wert von "$Zeitreihe" größer ist als der Wert von "$ZeitreiheVorN". Das Ergebnis wird in der Variablen "$Gestiegen" abgelegt. Diese Variable nimmt den Booleschen Wert "Wahr" ("Ja" bzw. "True") an, falls "$Zeitreihe" größer ist als "$ZeitreiheVorN", andernfalls hat sie den Wert "Falsch" ("Nein" bzw. "False").

CODE
$Gestiegen:=$Zeitreihe>$ZeitreiheVorN;

Schließlich muss gezählt werden, wie oft die Variable "$Gestiegen" im Zeitraum N Perioden den Wert "Wahr" annimmt. Dazu wird die Funktion "Count[]" verwendet. Als Parameter der Funktion wird der Zeitraum eingesetzt:

CODE
$Gestiegen.Count[$Zeitraum]

Die komplette Formel lautet also:

CODE
$Zeitreihe:=Object;
$ZeitreiheVorN:=$Zeitreihe.Before[$N];
$Gestiegen:=$Zeitreihe>$ZeitreiheVorN;
$Gestiegen.Count[$Zeitraum]

In diesem Beispiel wurden keine benutzerdefinierten Makros verwendet, daher müssen Sie auf der Registerkarte "Bibliotheken" keine Einstellungen vornehmen.

2. Variablen typisieren und Standardwerte festlegen

Der Infront Portfolio Manager typisiert die Variablen automatisch, deshalb müssen Sie hier normalerweise keine Änderungen vornehmen.

Klicken Sie mit der Maus auf das Icon "Parameter-Werte eingeben" und geben Sie die Standardwerte ein, z. B. für den Zeitraum "30" und für N den Wert "5".

Probieren Sie aus, welche Einstellungen gute Ergebnisse liefern, und setzen Sie diese als Standardwert.

3. Parameterreihenfolge festlegen

Es empfiehlt sich, auf der Registerkarte "Deklaration" die Parameter nach Ihrer Wichtigkeit zu ordnen. Wenn Sie in diesem Fall z. B. dem Parameter "$Zeitraum" häufiger verändern werden, als den Parameter "N", sollten Sie den Parameter "$Zeitraum" an erste Stelle setzen. Dann müssen Sie den Parameter "N" bei der Verwendung dieses Makros nicht immer mit einem Unterstrich "_" belegen, sondern können ihn einfach weglassen. Mehr dazu im Abschnitt Defaultwerte.

4. Eingabetyp festlegen

Das Eingabeobjekt dieser Formel ist immer eine Zeitreihe. Geben Sie daher auf der Registerkarte "Deklaration" im Feld "Anwenden auf" den Typ "Zeitreihe" ein. Bleibt dieses Feld leer, wird als Typ automatisch "Objekt" eingesetzt, d. h., die Formel ist dann auf alle Objekttypen anwendbar.

5. Makronamen und Bibliothek festlegen

Geben Sie auf der Registerkarte "Deklaration" einen Namen für das Makro ein, z. B. "Gestiegen".

Wählen Sie eine Bibliothek aus der Liste aus, der das Makro zugeordnet werden soll, z. B. die Benutzerbibliothek.

6. Erklärung eingeben

Geben Sie auf der Registerkarte "Beschreibung" eine kurze Erklärung ein, z. B. "Liefert alle Kurse, die im Beobachtungszeitraum über n Perioden hinweg gestiegen sind".

7. Speichern

Speichern Sie das neu angelegte Makro "Gestiegen". Sie können es jetzt in anderen Formeln verwenden, z. B. um mit der Formel "Close[].Gestiegen[]" in einem Chart eine zusätzliche Zeitreihe einzublenden.

Mit diesem Makro können Sie auch sehr leicht eine Formel definieren, die nur zählt, wann die Zeitreihe gefallen ist, indem Sie das Eingabeobjekt negieren:

CODE
(-Object).Gestiegen[$N;$Zeitraum]
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.