Respuesta

StrategyQuant Jar Librerías Documentación

1 respuesta

louloufrenchy

Abonado, bbp_participant, cliente, comunidad, sq-ultimate, 8 respuestas.

Visitar el perfil

hace 2 semanas #291229

Hola,

 

Estoy explorando CustomAnalysis para métricas. Estoy tratando de llegar a las bibliotecas pertinentes.

 

¿Existe DataManager, IDatabank, IBarsProvider?

 

¿Cómo se accede a la lista completa de bibliotecas disponibles para importar en CodeEditor?

 

Dentro CodeEditor cuando empiezo a escribir com. una lista aparece, pero ayudaría si hay detalles de cada propósito bibliotecas.

 

 

0

louloufrenchy

Abonado, bbp_participant, cliente, comunidad, sq-ultimate, 8 respuestas.

Visitar el perfil

hace 2 semanas #291239

paquete SQ.CustomAnalysis;
import com.strategyquant.tradinglib.CustomAnalysisMethod;
import com.strategyquant.tradinglib.CustomAnalysisMethod.SettingType;
import com.strategyquant.tradinglib.ResultsGroup;
import com.strategyquant.lib.app.MainApp;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import java.io.FileReader;
import java.io.StringWriter;
/**
 * CAJythonScript
 *
 * Ejecuta un script Python externo (a través de Jython) y almacena su stdout.
 * en el ResultsGroup's specialValues bajo la clave "PythonOutput".
 */
public class CAJythonScript extends MétodoDeAnálisisPersonalizado {
    public CAJythonScript() {
        // TYPE_FILTER_STRATEGY significa que se ejecuta en el paso "Estrategias de filtrado
        super("CAJythonScript", TYPE_FILTER_STRATEGY);
        // Ejemplo de añadir una configuración para la carpeta de scripts de Python (opcional)
        addSetting("PythonFolder", SettingType.String, "python",
                   "Ruta relativa bajo usuario/ donde viven sus archivos .py");
    }
    @Override
    public boolean filtroEstrategia(
            Proyecto de cuerdas,
            Tarea de cadena,
            Cadena databankName,
            Grupo de resultados rg
    ) lanza Excepción {
        // Ruta de construcción de su script Python
        String pythonFolder = getSettingAsString("PythonFolder");
        String basePath = MainApp.getDataPath() + pythonFolder + MainApp.getFS() ;
        String scriptPath = basePath + "sqpython.py";
        // Preparar el motor Jython con su propia captura stdout
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("jython");
        // Si su .py importa módulos locales en user/python/, añádalo a sys.path
        engine.eval("import sys; sys.path.insert(0, r\"" + basePath + "\")");
        // Capturar todo lo que imprime el script Python
        StringWriter writer = new StringWriter();
        ScriptContext ctx = nuevo SimpleScriptContext();
        ctx.setWriter(escritor);
        // Ejecutar el script Python
        engine.eval(new FileReader(scriptPath), ctx);
        // Agarra y recorta la salida
        Cadena pythonOutput = writer.toString().trim();
        // Almacenarlo en el ResultsGroup para su uso posterior
        rg.specialValues().set("PythonOutput", pythonOutput);
        // Devuelve siempre true para que este CustomAnalysis no deje caer estrategias
        devuelve true;
    }
}
Obteniendo errores de bibliotecas. Esa es la segunda parte que accede a la otra clase
paquete SQ.CustomAnalysis;
import com.strategyquant.tradinglib.CustomAnalysisMethod;
import com.strategyquant.tradinglib.ResultsGroup;
import com.strategyquant.lib.app.MainApp;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import java.io.FileReader;
import java.io.StringWriter;
public class CAJythonScript extends MétodoDeAnálisisPersonalizado {
    public CAJythonScript() {
        super("CAJythonScript", TYPE_FILTER_STRATEGY);
    }
    @Override
    public boolean filtroEstrategia(
            Proyecto de cuerdas,
            Tarea de cadena,
            Cadena databankName,
            Grupo de resultados rg
    ) lanza Excepción {
        // preparar un escritor para capturar stdout de Python
        StringWriter writer = new StringWriter();
        ScriptContext ctx = nuevo SimpleScriptContext();
        ctx.setWriter(escritor);
        // obtenga el motor Jython y ejecute su script
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("jython");
        // asume que sqpython.py vive en tu carpeta de datos SQ
        String script = MainApp.getDataPath() + "sqpython.py";
        engine.eval(new FileReader(script), ctx);
        // coger lo que imprima Python
        Cadena pythonOut = writer.toString().trim();
        // guardarlo en el mapa specialValues del resultado
        rg.specialValues().set("PythonOutput", pythonOut);
        // devuelve siempre true para que el filtrado no elimine tus estrategias
        devuelve true;
    }
}

0

Viendo 1 respuesta (de un total de 1)