19. 9. 2022

5 0

Leggere il valore di una variabile in una regola attivata all'avvio della strategia dalle impostazioni della strategia.

In una regola attivata sulla Strategia Init, per ogni Assegnazione della funzione, StrategyQuant assegnare un valore "AssegnazioneVrbVleEntMlt" alla vostra variabile invece di un valore.

Poi, durante l'inizializzazione, restituirà il valore AssignVrbVleEntMlt alla propria variabile

Da una strategia prodotta dalla "H1388 Modello di variabile di test", possiamo leggere nel codice :

AssegnazioneVrbVleEntMlt = 210

AssegnazioneVrbVleEntMlt sta ricevendo il valore nel luogo Lunghezza MAL

Allora AssegnazioneVrbVleEntMlt restituire il valore a Lunghezza MAL all'inizializzazione.

1/ Questo esempio di codice di analisi personalizzato mostra come ottenere il valore di una variabile in una regola attivata dalla strategia Init.

Otteniamo il valore da una funzione "toInitValue", da un Gruppo di risultati, e Nome della regola "Init", e un nome della variabile : Lunghezza MAL  (In questo esempio)

Quindi si utilizza rg.specialValues() per impostare il valore in "CA_Lunghezza"

 

pacchetto SQ.CustomAnalysis;

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

// Creato in Francia da 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));

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

 

2 / Poi il codice DatabankColumn recupera il valore dell'Analisi personalizzata

Si utilizza rg.specialValues per recuperare il valore da CA_MALength
pacchetto SQ.Columns.Databanks;
importare com.strategyquant.lib.*;
importare com.strategyquant.datalib.*;
importare com.strategyquant.tradinglib.*;
importare org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// Creato in Francia da Emmanuel Bouillant-Evrard
public class StratSettingsMALength extends DatabankColumn
{
  public static final Logger Log = LoggerFactory.getLogger(StratSettingsMALength.class);
  public StratSettingsMALength()
  {
    super("Impostazioni Lunghezza MAL", DatabankColumn.Decimal2, ValueTypes.Maximize, 0, 0, 100);
  }
  
  //------------------------------------------------------------------------
  /**
   * Questo metodo deve restituire il valore calcolato di questa nuova colonna. In genere lo si dovrebbe calcolare dall'elenco degli ordini
   * o da alcuni valori statistici già calcolati (altre colonne della banca dati).
   */
  @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)
      {
        // significa che il valore non è stato impostato
        restituire NOT_AVAILABLE;
      } else
      {
        // restituisce il valore convertito in stringa
        return java.lang.Double.toString(valore);
      }
    } catch(Exception e)
    {
      Log.error("Errore StratSettingsMALength", e);
      return ""; // "Errore: " + e.getMessage();
    }
  }
}

 

3/ Come installarlo

  • Importazione gli snippet nella sezione Editor di codice
  • Compilare tutto
  • Riavviare StrategyQuant 
  • allora selezionare l'Analisi personalizzata nel Costruttore :

 

 

Allora aggiungiamo questa nuova colonna a un Databank e leggiamo il valore della nostra regola Init

Se l'analisi personalizzata non viene più utilizzata, il database delle colonne deve essere rimosso per evitare errori nel log.

Mi chiamo Emmanuel Bouillant-Evrard, ingegnere specializzato in finanza. Ho lavorato per 24 anni nella ricerca e nello sviluppo nel settore finanziario negli Stati Uniti, in Canada e in Francia.

 

 

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti

Messaggi correlati