Documentação

Aplicações

Última atualização em 10. 11. 2020 por Mark Fric

Usando bibliotecas JAR personalizadas

Nota - esta é uma funcionalidade nova e experimental disponível no SQ X Build 130.

Agora é possível usar suas próprias bibliotecas personalizadas Java JAR em snippets.

Tudo o que você precisa fazer é copiar seus JARs em /usuário/libares em sua instalação StrategyQuant e após reiniciar o SQ você deverá ser capaz de chamá-los em snippets.

 

Um exemplo poderia ser um indicador de LER de amostra chamado da biblioteca TA4J (https://github.com/ta4j/ta4j). Você pode baixar o núcleo JAR para esta biblioteca aqui.

Em seguida, colocá-lo para /usuário/libares pasta - se /libs subpasta ainda não existe em /usuário crie então a pasta.

Em seguida, você poderá usá-lo em um snippet. Abra o CodeEditor e crie uma nova amostra de snippet para o indicador RSI computado pela biblioteca TA4J:

pacote SQ.Blocos.Indicadores.RSIta4j;

importação java.sql.Timestamp;
importação java.time.Duration;
importação java.time.time.Instant;
importação java.time.ZoneOffset;
importação java.time.ZonedDateTime;

importação org.ta4j.core.BarSeries;
importação org.ta4j.core.BaseBarSeries;
importação org.ta4j.core.indicators.RSIIndicator;
importação org.ta4j.core.indicators.helpers.ClosePriceIndicator;

import com.strategyquant.datalib.DataSeries;
import com.strategyquant.datalib.datalib.TradingException;
import com.strategyquant.tradinglib.BuildingBlock;
importar com.strategyquant.tradinglib.ChartData;
importar com.strategyquant.tradinglib.Colors;
import com.strategyquant.tradinglib.Indicator;
import com.strategyquant.tradinglib.Output;
import com.strategyquant.tradinglib.Parameter;
importação com.strategyquant.tradinglib.tradinglib.ParameterSet;
import com.strategyquant.tradinglib.ReturnTypes;

importação SQ.Internal.IndicatorBlock;

@BuildingBlock(name="(RSI ta4j) Índice de força relativa", display="RSIta4j(#Period#)[#Shift#]", returnType = ReturnTypes.Number)
@Indicador(oscilador=verdadeiro, valor médio=50, min=0, max=100, passo=0,5)
classe pública RSIta4j estende IndicatorBlock {
    @Parameter(category="Default", name="Input", defaultValue="0")
    entrada de dados de gráficos públicos;
    
    @Parameter(defaultValue="14", minValue=2, maxValue=10000, step=1)
    período de intenção pública;

    @Output(name = "RSIta4j", cor = Cores.Vermelho)
    valor público da DataSeries;
    
    RSIIndicator rsi privado;
    privado ZonedDateTime zdt;
    
    série privada BarSeries = nova série BaseBarSeries("série");
    private long lastTime = 0;
    
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------

    @Override
    vazio protegido OnInit() joga TradingException {
        ClosePriceIndicator closePriceIndicator(série) = novo ClosePriceIndicator(série);
        rsi = novo RSIIndicator(fecharPreço, Período);
    }
    
    //------------------------------------------------------------------------
    
    @Override
    vazio protegido Na BarUpdate() lança a TradingException {
        zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(Input.Time()), ZoneOffset.UTC);
                
        if(Input.Time()==lastTime) {
            retornar;
        }
        
        series.addBar(zdt, Input.Open.get(0), Input.High.get(0), Input.Low.get(0), Input.Close.get(0), Input.Volume.get(0));
        
        Value.set(0, rsi.getValue(series.getEndIndex()).doubleValue()));
        
        lastTime = Input.Time();
    }
}

 

Este é um trecho bastante padrão do indicador SQ, mas não contém um código para computar o indicador. Ao invés disso, ele está chamando TA4J RSIIndicator classe para calculá-la.

 

Observe - é simples estender StrategyQuant com indicadores de bibliotecas já existentes, mas é apenas a metade do trabalho necessário.

Você pode criar um novo indicador no SQ desta forma, mas este indicador ainda será computado apenas em StrategyQuant. Para usar sua estratégia com este indicador personalizado em MetaTrader, Tradestation, MultiCharts ou outra plataforma que você precise:

  • adicionar definição de como este novo trecho será traduzido para o código fonte da plataforma
  • adicione a implementação deste indicador também à sua plataforma alvo

Por favor, verifique mais sobre isto em nosso artigo Adicionando indicadores e sinais.

 

 

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
1 Comentário
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
Emmanuel
16. 1. 2023 5:40 am

excelente! obrigado