19. 9. 2022

5 0

Lectura del valor de una variable en una regla activada en el inicio de la estrategia desde la configuración de la estrategia

En una regla activada en la Estrategia Init, para cada Asignar función, StrategyQuant asignar un "AsignarVrbVleEntMlt" a tu variable en lugar de un valor.

Entonces, durante la inicialización, devolverá el valor AssignVrbVleEntMlt a tu variable

A partir de una estrategia elaborada por el "H1388 Plantilla de variables de prueba", podemos leer en el código :

AsignarVrbVleEntMlt = 210

AsignarVrbVleEntMlt recibe el valor en el lugar MALength

Entonces AsignarVrbVleEntMlt devolver el valor a MALength at Inialization.

1/ Este ejemplo de Código de Análisis Personalizado le muestra cómo obtener un valor de su variable en una regla disparada en la estrategia Init

Obtenemos el valor de una función "toInitValue", de un Grupo de resultadosy Nombre de la regla "Init", y un nombre de la variable : MALength  (En este ejemplo)

Entonces estamos utilizando rg.specialValues() para establecer el valor en "CA_MALength"

 

paquete 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.*;

// Creado en Francia por 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; // "Error: " + e.getMessage();
        }
    }
    
    
    //------------------------------------------------------------------------
    
    @Override
    public ArrayList processDatabank(String project, String task, String databankName, ArrayList databankRG) throws Exception {
        return databankRG;
    }
}

 

2 / A continuación, el código DatabankColumn recuperar el valor del análisis personalizado

Estamos utilizando rg.specialValues para recuperar el valor de CA_MALength
paquete SQ.Columns.Databanks;
import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// Creado en Francia por Emmanuel Bouillant-Evrard
public class StratSettingsMALength extends DatabankColumn
{
  public static final Logger Log = LoggerFactory.getLogger(StratSettingsMALength.class);
  public StratSettingsMALength()
  {
    super("AjustesMALength", DatabankColumn.Decimal2, ValueTypes.Maximize, 0, 0, 100);
  }
  
  //------------------------------------------------------------------------
  /**
   * Este método debe devolver el valor calculado de esta nueva columna. Normalmente debería calcularlo a partir de la lista de órdenes
   * o a partir de algunos valores estadísticos ya calculados (otras columnas del banco de datos).
   */
  @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(valor == -1)
      {
        // esto significa que el valor no fue establecido
        return NOT_AVAILABLE;
      } else
      {
        // devuelve el valor convertido a String
        return java.lang.Double.toString(valor);
      }
    } catch(Exception e)
    {
      Log.error("Error StratSettingsMALength", e);
      return ""; // "Error: " + e.getMessage();
    }
  }
}

 

3/ Cómo instalarlo

  • Importar los fragmentos del Editor de código
  • Compilar todo
  • Reiniciar StrategyQuant 
  • entonces seleccione el Análisis personalizado en el Constructor :

 

 

Entonces añadimos esta nueva columna a un Databank y leemos el valor de nuestras reglas Init

Si ya no se utiliza el análisis personalizado, debe eliminarse el banco de datos de columnas para evitar errores en el registro.

Me llamo Emmanuel Bouillant-Evrard, Ingeniero especializado en Finanzas. He trabajado en Investigación y Desarrollo en Finanzas en EE.UU., Canadá y Francia durante 24 años.

 

 

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios

Puestos relacionados