SOLO LETTURA

Il forum è ora un archivio di sola lettura.

Per segnalazioni di bug e domande sulla piattaforma → [email protected]

La nostra comunità vive su Discord e YouTube: unisciti a noi!

UNISCITI A NOI SU Discordia YouTube

Documentazione delle librerie di vasi StrategyQuant

1 risposte

louloufrenchy

Abbonato, bbp_partecipante, cliente, comunità, sq-ultimate, 8 risposte.

Visita il profilo

1 anno fa #291229

Ciao,

 

Sto esplorando CustomAnalysis per le metriche. Sto cercando di raggiungere le librerie pertinenti.

 

Esistono DataManager, IDatabank, IBarsProvider?

 

Come si accede all'elenco completo delle librerie disponibili per l'importazione in CodeEditor?

 

All'interno di CodeEditor quando inizio a digitare com. viene fuori un elenco, ma sarebbe utile se ci fossero dettagli sullo scopo di ogni libreria.

 

 

0

louloufrenchy

Abbonato, bbp_partecipante, cliente, comunità, sq-ultimate, 8 risposte.

Visita il profilo

1 anno fa #291239

pacchetto SQ.CustomAnalysis;
import com.strategyquant.tradinglib.CustomAnalysisMethod;
import com.strategyquant.tradinglib.CustomAnalysisMethod.SettingType;
importare com.strategyquant.tradinglib.ResultsGroup;
importare com.strategyquant.lib.app.MainApp;
importare javax.script.ScriptEngine;
importare javax.script.ScriptEngineManager;
importare javax.script.ScriptContext;
importare javax.script.SimpleScriptContext;
importare java.io.FileReader;
importare java.io.StringWriter;
/**
 * CAJythonScript
 *
 * Esegue uno script Python esterno (tramite Jython) e ne memorizza lo stdout.
 * negli specialValues del gruppo ResultsGroup sotto la chiave "PythonOutput".
 */
public class CAJythonScript extends CustomAnalysisMethod {
    public CAJythonScript() {
        // TYPE_FILTER_STRATEGY significa che viene eseguito nella fase "Strategie di filtraggio".
        super("CAJythonScript", TYPE_FILTER_STRATEGY);
        // Esempio di aggiunta di un'impostazione per la cartella degli script Python (opzionale)
        addSetting("PythonFolder", SettingType.String, "python",
                   "Percorso relativo sotto user/ dove si trovano i file .py");
    }
    @Override
    pubblico booleano filterStrategy(
            Progetto stringa,
            Compito di stringa,
            Stringa databankName,
            Gruppo di risultati rg
    ) lancia un'eccezione {
        // Percorso di costruzione dello script Python
        String pythonFolder = getSettingAsString("PythonFolder");
        String basePath = MainApp.getDataPath() + pythonFolder + MainApp.getFS() ;
        String scriptPath = basePath + "sqpython.py";
        // Preparare il motore Jython con la sua cattura di stdout
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("jython");
        // Se il proprio .py importa moduli locali in user/python/, aggiungerlo a sys.path
        engine.eval("import sys; sys.path.insert(0, r\" + basePath + "\")");
        // Cattura tutto ciò che lo script Python stampa
        StringWriter writer = new StringWriter();
        ScriptContext ctx = new SimpleScriptContext();
        ctx.setWriter(writer);
        // Eseguire lo script Python
        engine.eval(new FileReader(scriptPath), ctx);
        // Catturare e tagliare l'output
        String pythonOutput = writer.toString().trim();
        // Memorizzarlo nel gruppo dei risultati per un uso successivo
        rg.specialValues().set("PythonOutput", pythonOutput);
        // Restituisce sempre true, in modo che questa CustomAnalysis non cada nelle strategie.
        restituire true;
    }
}
Errori delle librerie. Questa è la seconda parte che accede all'altra classe
pacchetto SQ.CustomAnalysis;
import com.strategyquant.tradinglib.CustomAnalysisMethod;
importare com.strategyquant.tradinglib.ResultsGroup;
importare com.strategyquant.lib.app.MainApp;
importare javax.script.ScriptEngine;
importare javax.script.ScriptEngineManager;
importare javax.script.ScriptContext;
importare javax.script.SimpleScriptContext;
importare java.io.FileReader;
importare java.io.StringWriter;
public class CAJythonScript extends CustomAnalysisMethod {
    public CAJythonScript() {
        super("CAJythonScript", TYPE_FILTER_STRATEGY);
    }
    @Override
    pubblico booleano filterStrategy(
            Progetto stringa,
            Compito di stringa,
            Stringa databankName,
            Gruppo di risultati rg
    ) lancia un'eccezione {
        // preparare un writer per catturare lo stdout di Python
        StringWriter writer = new StringWriter();
        ScriptContext ctx = new SimpleScriptContext();
        ctx.setWriter(writer);
        // ottenere il motore Jython ed eseguire lo script
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("jython");
        // si suppone che sqpython.py si trovi nella cartella dei dati di SQ
        String script = MainApp.getDataPath() + "sqpython.py";
        engine.eval(new FileReader(script), ctx);
        // cattura qualsiasi cosa Python abbia stampato
        String pythonOut = writer.toString().trim();
        // la memorizza nella mappa specialValues del risultato
        rg.specialValues().set("PythonOutput", pythonOut);
        // restituisce sempre true, in modo che il filtraggio non faccia cadere le strategie.
        restituire true;
    }
}

0

Stai visualizzando 1 risposte (di 1 totali)