19. 9. 2022

5 0

Lesen eines Variablenwerts in einer Regel, die bei Strategie-Init ausgelöst wird, aus Ihren Strategieeinstellungen

In einer Regel, die bei Strategy Init ausgelöst wird, wird für jede Funktion zuweisen, StrategyQuant einen "AssignVrbVleEntMlt" anstelle eines Wertes in Ihre Variable ein.

Während der Initialisierung wird dann der Wert AssignVrbVleEntMlt an Ihre Variable zurückgegeben

Aus einer Strategie, die von der "H1388 Testvariable Vorlage", können wir im Code lesen:

AssignVrbVleEntMlt = 210

AssignVrbVleEntMlt erhält den Wert an der Stelle MALänge

Dann AssignVrbVleEntMlt den Wert zurückgeben an MALänge bei Inialisierung.

1/ Dieses Beispiel für benutzerdefinierten Analysecode zeigt Ihnen, wie Sie den Wert Ihrer Variablen in einer Regel erhalten, die durch die Strategie Init ausgelöst wird.

Wir erhalten den Wert von einer Funktion "toInitValue", aus einer ErgebnisGruppeund Name der Regel "Init" und eine Variablenname : MALänge  (In diesem Beispiel)

Dann verwenden wir rg.specialValues() Funktion, um den Wert in "CA_MALength"

 

Paket SQ.CustomAnalysis;

import com.strategyquant.lib.*;
import java.util.ArrayList;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*; import com.strategyquant.tradinglib.*;
import SQ.Utils.Bouillant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;

// Erstellt in Frankreich von Emmanuel Bouillant-Evrard
public class CA_InitStratsSettings extends CustomAnalysisMethod
{
    public static final Logger Log = LoggerFactory.getLogger(CA_InitStratsSettings.class);

    public CA_InitStratsSettings()
    {
        super("CA MALength Settings", TYPE_FILTER_STRATEGY);
    }
    
    //------------------------------------------------------------------------
    
    @Override
    public boolean filterStrategy(String project, String task, String databankName, ResultsGroup rg) throws Exception
    {
        try
        {
            Bouillant BouilltParaObj1 = new Bouillant();
            
            String IntTemp = BouilltParaObj1.toInitValue(rg, false, "Init", "MALength", 100);
            rg.specialValues().set("CA_MALength", Double.parseDouble(IntTemp));

            return true;
      	} catch(Exception e)
        {
            Log.error("Fehler CA_InitStratsSettings", e);
            return false; // "Fehler: " + e.getMessage();
        }
    }
    
    
    //------------------------------------------------------------------------
    
    @Override
    public ArrayList processDatabank(String project, String task, String databankName, ArrayList databankRG) throws Exception {
        return databankRG;
    }
}

 

2 / Dann ruft der DatabankColumn-Code den Wert der benutzerdefinierten Analyse ab

Wir verwenden rg.specialValues, um den Wert von CA_MALength abzurufen
Paket SQ.Columns.Databanks;
import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*; import com.strategyquant.tradinglib.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// Erstellt in Frankreich von Emmanuel Bouillant-Evrard
public class StratSettingsMALength extends DatabankColumn
{
  public static final Logger Log = LoggerFactory.getLogger(StratSettingsMALength.class);
  public StratSettingsMALength()
  {
    super("MALength Einstellungen", DatabankColumn.Decimal2, ValueTypes.Maximize, 0, 0, 100);
  }
  
  //------------------------------------------------------------------------
  /**
   * Diese Methode sollte den berechneten Wert dieser neuen Spalte zurückgeben. Normalerweise sollten Sie ihn aus der Liste der Aufträge berechnen
   * oder aus einigen bereits berechneten statistischen Werten (andere Datenbankspalten).
   */
  @Override
  public String getValue(ResultsGroup rg, String resultKey, byte direction, byte plType, byte sampleType) throws Exception
  {
    try
    {
      double value = rg.specialValues().getDouble("CA_MALength", -1);

      if(wert == -1)
      {
        // dies bedeutet, dass der Wert nicht gesetzt wurde
        return NOT_AVAILABLE;
      } else
      {
        // Rückgabe des in String konvertierten Wertes
        return java.lang.Double.toString(Wert);
      }
    } catch(Exception e)
    {
      Log.error("Fehler StratSettingsMALength", e);
      return ""; // "Fehler: " + e.getMessage();
    }
  }
}

 

3/ Wie man es installiert

  • Importieren die Schnipsel in der Code-Editor
  • Alle kompilieren
  • StrategyQuant neu starten 
  • dann Wählen Sie die benutzerdefinierte Analyse im Builder aus:

 

 

Dann fügen wir diese neue Spalte zu einer Datenbank hinzu und lesen den Wert unserer Init-Regeln

Wenn die benutzerdefinierte Analyse nicht mehr verwendet wird, muss die Spaltendatenbank entfernt werden, um Fehler im Protokoll zu vermeiden.

Mein Name ist Emmanuel Bouillant-Evrard, Ingenieur mit Spezialisierung auf Finanzen. Ich habe 24 Jahre lang in den USA, Kanada und Frankreich im Bereich Forschung und Entwicklung im Finanzwesen gearbeitet.

 

 

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

Verwandte Beiträge