19. 9. 2022

5 0

Lire la valeur d'une variable dans une règle déclenchée par l'activation de la stratégie à partir des paramètres de la stratégie

Dans une règle déclenchée sur Strategy Init, pour chaque Attribuer une fonction, StrategyQuant assigner un "AssignerVrbVleEntMlt"à votre variable au lieu d'une valeur.

Ensuite, lors de l'initialisation, il renverra la valeur AssignVrbVleEntMlt à votre variable

D'après une stratégie élaborée par la "H1388 Modèle de variable de test"Nous pouvons lire dans le code :

AssignVrbVleEntMlt = 210

AssignerVrbVleEntMlt reçoit la valeur au lieu MALength

Dans ce cas AssignerVrbVleEntMlt restituer la valeur à MALength at Inialization.

1/ Cet exemple de code d'analyse personnalisé vous montre comment obtenir une valeur de votre variable dans une règle déclenchée sur la stratégie Init.

Nous obtenons la valeur à partir d'une fonction "toInitValue", à partir d'un Groupe de résultatset Nom de la règle "Init"et un nom de la variable : MALength  (Dans cet exemple)

Nous utilisons alors rg.specialValues() pour définir la valeur dans "CA_MALength"

 

package SQ.CustomAnalysis ;

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

// Créé en France par 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("Error CA_InitStratsSettings", e) ;
            return false ; // "Erreur : " + e.getMessage() ;
        }
    }
    
    
    //------------------------------------------------------------------------
    
    @Override
    public ArrayList processDatabank(String project, String task, String databankName, ArrayList databankRG) throws Exception {
        return databankRG ;
    }
}

 

2 / Ensuite, le code DatabankColumn récupère la valeur de l'analyse personnalisée.

Nous utilisons rg.specialValues pour récupérer la valeur de CA_MALength.
package SQ.Columns.Databanks ;
import com.strategyquant.lib.* ;
import com.strategyquant.datalib.* ;
import com.strategyquant.tradinglib.* ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;

// Créé en France par Emmanuel Bouillant-Evrard
public class StratSettingsMALength extends DatabankColumn
{
  public static final Logger Log = LoggerFactory.getLogger(StratSettingsMALength.class) ;
  public StratSettingsMALength()
  {
    super("Paramètres MALength", DatabankColumn.Decimal2, ValueTypes.Maximize, 0, 0, 100) ;
  }
  
  //------------------------------------------------------------------------
  /**
   * Cette méthode doit renvoyer la valeur calculée de cette nouvelle colonne. Vous devriez typiquement la calculer à partir de la liste des commandes
   * ou à partir de valeurs statistiques déjà calculées (autres colonnes de la banque de données).
   */
  @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(value == -1)
      {
        // cela signifie que la valeur n'a pas été définie
        return NOT_AVAILABLE ;
      } else
      {
        // renvoie la valeur convertie en chaîne de caractères
        return java.lang.Double.toString(valeur) ;
      }
    } catch(Exception e)
    {
      Log.error("Error StratSettingsMALength", e) ;
      return "" ; // "Erreur : " + e.getMessage() ;
    }
  }
}

 

3/ Comment l'installer

  • Importation les extraits dans le Éditeur de code
  • Compiler tout
  • Redémarrer StrategyQuant 
  • puis sélectionner l'analyse personnalisée dans le Builder :

 

 

Dans ce cas nous ajoutons cette nouvelle colonne à une banque de données et lisons la valeur de nos règles Init

Si l'analyse personnalisée n'est plus utilisée, la banque de données des colonnes doit être supprimée pour éviter toute erreur dans le journal.

Je m'appelle Emmanuel Bouillant-Evrard, ingénieur spécialisé en finance. J'ai travaillé dans la recherche et le développement en finance aux Etats-Unis, au Canada et en France pendant 24 ans.

 

 

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires

Postes connexes