LoslegenKostenlos loslegen

Eine Rule mit einer Order-Sizing-Funktion implementieren

In quantstrat ist die gehandelte Menge eines Assets nicht immer eine feste Anzahl an tatsächlichen Aktien. Die Konstrukte, die quantstrat erlauben, die Anzahl der gekauften oder verkauften Aktien zu variieren, heißen Order-Sizing-Funktionen. Aufgrund der umfangreichen zusätzlichen Syntax für die Erstellung einer eigenen Order-Sizing-Funktion liegt das eigenständige Coden einer solchen Funktion außerhalb des Rahmens dieses Kurses.

Die Verwendung einer vorgefertigten Order-Sizing-Funktion ist jedoch unkompliziert. Das Wichtigste: Wenn du eine Order-Sizing-Funktion verwendest, ist das Argument orderqty nicht mehr relevant, da die Ordermenge von der Order-Sizing-Funktion bestimmt wird. Eine Order-Sizing-Funktion gemeinsam mit deinem add.rule()-Aufruf zu verwenden, ist recht einfach. Die Eingaben für die Order-Sizing-Funktion werden zusammen mit den übrigen Eingaben in die Argumente gemischt, mit denen du in diesem Kapitel gearbeitet hast.

In dieser Übung verwendest du das Argument osFUN, um eine Funktion namens osMaxDollar anzugeben. Diese wird nicht als String übergeben, sondern als Objekt. Der einzige Unterschied ist, dass der Name der Order-Sizing-Funktion nicht in Anführungszeichen steht.

Die zusätzlichen Argumente für diese Funktion sind tradeSize und maxSize. Beide sollten tradesize bekommen, das du bereits vor mehreren Kapiteln definiert hast. Dieses Objekt steht dir in deinem Workspace zur Verfügung.

Diese Übung ist Teil des Kurses

Finanzhandel in R

Kurs anzeigen

Anleitung zur Übung

  • Der in den vorherigen Übungen verwendete add.rule()-Befehl ist in deinem Workspace ausgegeben.
  • Füge dieser Rule eine Order-Sizing-Funktion hinzu, indem du osFUN, tradeSize und maxSize angibst.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Add a rule that uses an osFUN to size an entry position
add.rule(strategy = strategy.st, name = "ruleSignal",
         arguments = list(sigcol = "longentry", sigval = TRUE, ordertype = "market",
                          orderside = "long", replace = FALSE, prefer = "Open",
                          
                          # Use the osFUN called osMaxDollar
                          osFUN = ___,
                          
                          # The tradeSize argument should be equal to tradesize (defined earlier)
                          tradeSize = ___,
                          
                          # The maxSize argument should be equal to tradesize as well
                          maxSize = ___),
         type = "enter")
Code bearbeiten und ausführen