Dokumentation

Anwendungen

Zuletzt aktualisiert am 21. 12. 2021 von clonex / Ivan Hudec

Beispiel für eine Mindestprovision

Dies ist eine einfache Methode zur Berechnung von Provisionen - sie verwendet Provisionen in $ pro Lot und multipliziert sie mit der tatsächlichen Handelsgröße. Wenn die endgültige Provision unter dem Schwellenwert liegt, wird die Mindestprovision verwendet. Sie können das Snippet herunterladen hier.

 

 

Schritt 1 - Neue Handelsspalte klonen

Öffnen Sie CodeEditor, suchen Sie im Navigator unter Builtin/Snippets/Trading/Commissions das Snippet SizeBased, klicken Sie es mit der rechten Maustaste an und klonen Sie es. Im Ordner User/Snippets/Trading/Commission sehen Sie nun das geklonte Snippet, das Sie bearbeiten können.

 

 

Schritt 2 - Parameter definieren

An dieser Stelle müssen Sie die Parameter angeben, die für die Berechnung verwendet werden sollen. In unserem Fall geben wir eine Provision für das gesamte Los und eine Mindestprovision für den Fall an, dass der Betrag der Provision unter dem angegebenen Minimum liegt.

@ClassConfig(name="Size Based Comission with Minimum Value", display="#Commission# with Minimum #MinimumComission#")
@Help("<b>Provision pro Trade mit Mindestwert</b><br/>Wird hauptsächlich für Aktien oder Forex verwendet.")
public class MinimumComission extends CommissionsMethod {

    @Parameter(defaultValue="0", minValue=-100000d, name="Commission", maxValue=100000d, step=1d, category="Default")
    @Help("Provision in $ pro komplettem Lot")
    public double Commission;

    @Parameter(defaultValue="0.5", minValue=0, name="MinimumComission", maxValue=100000d, step=1d, category="Default")
    @Help("Mindestprovision in $ pro Trade")
    public double MinimumComission;

 

Schritt 3 - Implementierung der Methode computeCommissionsOnOpen

 

An diesem Punkt haben Sie zwei Möglichkeiten. Entweder Sie berechnen die Provision, wenn Sie einen Handel eröffnen, indem Sie die Methode computeCommissionsOnOpen verwenden, oder Sie berechnen die Provision, wenn Sie einen Handel schließen, indem Sie die Methode computeCommissionsOnClose verwenden. Beide Methoden haben als Argumente: ILiveOrder order , double tickSize, double pointValue.

In unserem Fall verwenden wir die erste Option und ändern diese Methode, um die Mindestprovision zu berechnen, wenn die berechnete Provision unter dem von uns festgelegten Minimum liegt.

    @Override
    public double computeCommissionsOnOpen(ILiveOrder order, double tickSize, double pointValue) throws Exception {
        // Provision ist in $ pro vollem Lot
        double Ergebnis = 0;
        double comission = Kommission * order.getSize();
        if(Kommission<MinimumKommission){Ergebnis = MinimumKommission;}
        sonst Ergebnis = Provision * Auftrag.getSize();
        
        Ergebnis zurückgeben;
    }
    //------------------------------------------------------------------------

    @Override
    public double computeCommissionsOnClose(ILiveOrder order, double tickSize, double pointValue) throws Exception {
        return 0;
    }
    
}

 

Schritt 4 - Kompilieren und Verwenden des Snippets

Nach dem Neustart von StrategyQuant X sehen wir die neue Methode zur Berechnung der Provisionen im Bereich Daten.

 

In der Abbildung unten sehen Sie, dass die Provision pro Lot eigentlich $10 betragen sollte, aber da wir oben die Mindestprovision festgelegt haben, beträgt die endgültige Provision $20 pro Handel.

 

 

Vollständiger Code des Snippets

 

/*
 * Copyright (c) 2017-2018, StrategyQuant - Alle Rechte vorbehalten.
 *
 * Der Code in dieser Datei wurde in dem guten Glauben erstellt, dass er korrekt ist und das tut, was er soll.
 * Wenn Sie einen Fehler in diesem Code gefunden haben ODER Sie einen Verbesserungsvorschlag haben ODER Sie möchten
 * Ihren eigenen Codeschnipsel in unsere Standardbibliothek aufnehmen möchten, kontaktieren Sie uns bitte unter:
 * https://roadmap.strategyquant.com
 *
 * Dieser Code kann nur innerhalb von StrategyQuant-Produkten verwendet werden.
 * Jeder Besitzer einer gültigen (kostenlosen, Test- oder kommerziellen) Lizenz für ein StrategyQuant-Produkt
 * darf diesen Code ohne Einschränkungen frei verwenden, kopieren, modifizieren oder davon abgeleitete Arbeiten erstellen,
 * in allen StrategyQuant-Produkten zu verwenden und seine Änderungen oder abgeleiteten Arbeiten
 * mit der StrategyQuant-Gemeinschaft zu teilen.
 *
 * DIE SOFTWARE WIRD OHNE MÄNGELGEWÄHR BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIE,
 * EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN
 * ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN
 * ODER ANDERE HAFTUNG, OB IN EINER KLAGE AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS,
 * AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER DEM SONSTIGEN UMGANG MIT DER SOFTWARE.
 *
 */
Paket SQ.Trading.Commissions;

import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;

@ClassConfig(name="Size Based Comission with Minimum Value", display="$ #Commission# per trade")
@Help("<b>Provision pro Trade mit Mindestwert</b><br/>Wird hauptsächlich für Aktien oder Forex verwendet.")
public class MinimumComission extends CommissionsMethod {

    @Parameter(defaultValue="0", minValue=-100000d, name="Commission", maxValue=100000d, step=1d, category="Default")
    @Help("Provision in $ pro komplettem Lot")
    public double Commission;

    @Parameter(defaultValue="0.5", minValue=0, name="Mindestprovision", maxValue=100000d, step=1d, category="Default")
    @Help("Mindestprovision in $ pro Trade")
    public double MinimumComission;

    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    
    @Override
    public double computeCommissionsOnOpen(ILiveOrder order, double tickSize, double pointValue) throws Exception {
        // Provision ist in $ pro vollem Lot
        double Ergebnis = 0;
        double commission = Kommission * order.getSize();
        if(kommission<MinimumComission){result = MinimumComission;}
        else result = Commission * order.getSize();
        
        return result; 
    }
    //------------------------------------------------------------------------

    @Override
    public double computeCommissionsOnClose(ILiveOrder order, double tickSize, double pointValue) throws Exception {
        return 0;
    }
    
}

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen