Transcrição da sessão de codificação de 26/10/2021

A primeira sessão de codificação foi um experimento bem-sucedido. Agradecemos a EmanuelE, beetrader e clonex por suas perguntas e pelo bate-papo.

Continuaremos com as sessões de codificação
será quinzenal, sempre no meio e no final do mês.

A próxima sessão de codificação será no dia 18 de novembro, às 14h, horário da CET, ou seja, 13h, horário de Londres, 8h, horário de Nova York, 5h, horário de São Francisco, 0h, horário de Sydney.

Todas as pessoas que preencheram o formulário de interesse em sessões de codificação serão notificados sobre todas as próximas sessões (até que cancelem a inscrição na lista de e-mails da sessão). Se você quiser receber um convite, preencha o formulário formulário aqui.

Transcrição da sessão de codificação - não é a correspondência 100%, ela é filtrada e agrupada pelo tema da pergunta para melhor leitura.

 

Chamada de programas externos - Python, #F - a partir do SQ

Beetrader
(2) Como faço para adicionar um script externo, como F# ou Python, como parte do projeto personalizado? (3) Existe uma maneira de vincular o SQX a um banco de dados como o mysql ou o Microsoft SQL usando JDBC?

EmmanuelE
Bee, essa é uma pergunta interessante. Algumas pontes .Net-java estão disponíveis na Internet. Seria interessante ver como incluir uma dll no SQX.
Estou usando a biblioteca ML.Net e gostaria de saber se é possível implementar a biblioteca ML.Net no SQX por meio de uma ponte .net-java

Marcar
Olá Emmanuel - chamar o .NET a partir do Java - sinceramente, ainda não tentei, mas fiz experiências com o Python. Deve ser muito semelhante.
O artigo de exemplo sobre Python da SQ está publicado aqui: https://strategyquant.com/doc/programming-for-sq/calling-python-from-sq-java-introduction/
O segundo exemplo, com o uso do ProcessBuilder, pode ser usado para invocar qualquer script ou programa externo. Isso não é específico do SQ, os snippets do SQ são escritos em Java, portanto, você pode procurar exemplos em Java para chamar o .NET ou qualquer outra coisa.
Se você precisar de alguma ponte e adicionar uma biblioteca JAR personalizada ao SQ, há um artigo sobre isso: https://strategyquant.com/doc/programming-for-sq/using-custom-jar-libraries/

EmmanuelE
De fato, é como qualquer linguagem, basta inserir no início "import xx.yy", acho que podemos importar qualquer dll, como qualquer programa java
Seria interessante compartilhar dados, objetos (sinal, indicador) diretamente de um software de negociação para a SQX
O Python pode ser útil, mas estou usando o ML .NET, que é muito semelhante, e há muitos aprimoramentos no ML .NET
Estou trabalhando muito com redes neurais

Mark (SQ)
Não sei se é tão simples assim. Em geral, você pode chamar métodos personalizados de bibliotecas Java JAR, Python ou .NET personalizadas em trechos de código SQ, mas você deve saber o que está fazendo. Não é tão fácil criar um indicador personalizado que será computado em outro código - é tecnicamente possível, mas pode ser muito lento.
Quanto ao uso de redes neurais, isso depende do que exatamente você deseja fazer com o SQ e a NN. Talvez se você descrever melhor o que exatamente deseja fazer, eu possa pensar em como fazer isso

EmmanuelE
Encontrei uma ponte entre o NET Java : https://www.javonet.com/about/what-is-javonet/

Mark (SQ)
Sim, há maneiras de chamar o .NET a partir do Java, e isso não é um problema. O "problema" é como conectar sua biblioteca ao SQ, o que depende exatamente do que você deseja fazer

 

Desenvolvimento de um novo teste Monte Carlo

Beetrader
(1) Como faço para estender o SQX para que eu possa implementar um teste de permutação de Monte Carlo diferente, além dos dois que estão embutidos. Estou pensando em implementar o teste de permutação Tim Masters?

Marcar
Não estou familiarizado com os algoritmos exatos de seus testes de permutação - ele está fazendo permutações das negociações resultantes ou outra coisa?
De qualquer forma, você pode dar uma olhada em como os testes MC atuais são implementados - o código-fonte de cada teste está disponível.
Se você descrever melhor o que deseja fazer, posso lhe dar algumas dicas
Poderei ajudá-lo da melhor forma nesta sessão ao vivo se você me der uma descrição melhor do que exatamente deseja fazer - no caso do teste MC, a descrição do algoritmo a ser implementado. Ou, se já tiver começado, o trecho de código que você tem até agora e o problema que encontrou.
Posso dar apenas respostas gerais a perguntas gerais.
Mas tentarei dar uma olhada no teste de permutação de Tim Masters se meu tempo permitir e publicá-lo na transcrição deste bate-papo

Beetrader
Ele permuta as séries temporais antes de alimentá-las no algoritmo. Usa logaritmos para encontrar diferenças, por exemplo, de preços de fechamento, randomiza isso e recria a série temporal.

EmmanuelE
Vejo que podemos desenvolver indicadores, sinais e colunas do banco de dados. Podemos acessar o comércio para implementar um novo tipo de teste? Podemos adicionar uma nova verificação cruzada?
A verificação cruzada de Monte Carlo está disponível, como um exemplo?

Mark (SQ)
você pode estender muito mais do que isso. Sim, você pode criar facilmente um novo método Monte Carlo, já existe um exemplo em nossa base de código: https://strategyquant.com/codebase-category/mc-retest/
Dessa forma, você pode adicionar um novo método de simulação para o MC.
Além disso, o código-fonte completo de todos os testes de Monte Carlo existentes está disponível no Code Editor do SQ.

EmmanuelE
Excelente !!!!!!!!!!!!!!!!! Eu estava procurando por essa informação!!!

Mark (SQ)
Você também pode acessar as negociações da estratégia ou até mesmo um lote de estratégias para fazer sua própria análise. A melhor maneira de fazer isso é usar o snippet CustomAnalysis como parte do fluxo de trabalho do projeto Custom, por exemplo: https://strategyquant.com/doc/programming-for-sq/example-per-strategy-custom-analysis/
A análise personalizada pode ser executada após a conclusão do construtor ou do testador, pode realizar sua própria análise e (por exemplo) excluir as estratégias que não passarem na validação. Ou use JDBC para se conectar ao seu banco de dados e fazer upload de algo lá

EmmanuelE
Isso é fantástico !!!!!!
Podemos fazer muito !!!!

Mark (SQ)
Sim, há muitas coisas que o SQ pode fazer que ainda não estão bem documentadas; estamos tentando aprimorá-las agora

EmmanuelE
Isso proporciona muita flexibilidade !!!!!
Existe um código para criarmos um portfólio?
Existe um código para o teste Walk Forward?

Clonex
Sim, é possível trabalhar com o WFO. Adicionaremos exemplos o mais rápido possível - na primeira quinzena de novembro

EmmanuelE
Seria útil ver como as estratégias são selecionadas da execução para a próxima execução
Gostaria de criar um portfólio com os resultados comerciais do WF

Mark (SQ)
Você quer dizer carteira de ações da WF?

EmmanuelE
sim

Mark (SQ)
deve ser possível. O mais simples é fazer isso em um snippet de análise personalizada, vou dar um exemplo disso

Exemplo de criação de portfólio a partir dos resultados do WF: Trecho de análise personalizada por banco de dados.

Vinculação de SQ e banco de dados

beetrader
(3) Existe uma maneira de vincular o SQX a um banco de dados como o mysql ou o Microsoft SQL usando JDBC?

Mark (SQ)
Em geral, sim, mas vincular o quê exatamente? Você deseja carregar dados para backtest do banco de dados ou armazenar os resultados da estratégia no banco de dados?

Beetrader
Quero armazenar os resultados em um banco de dados para que mais tarde eu possa fazer comparações com ações ao vivo. Atualmente, faço isso manualmente no controle de qualidade.

Mark (SQ)
Você quer fazer isso no SQ? É possível usar o snippet de análise personalizada, mas o que exatamente você quer armazenar no banco de dados? resultados de estratégia ou negociações?

Beetrader
Idealmente, quero armazenar tudo no banco de dados. Sei que posso armazenar o xml da estratégia e, nesse caso, basta criar uma tarefa personalizada para ler o xml e salvar o que eu quiser no banco de dados?

Mark (SQ)
Sim, e você pode armazenar todo o resto da mesma forma. Você tem acesso a métricas (Netprofit, # de negociações, etc.), bem como à lista completa de negociações para cada estratégia no banco de dados.
Dê uma olhada no exemplo de análise personalizada aqui: https://strategyquant.com/doc/programming-for-sq/example-per-strategy-custom-analysis/
ele pode ser chamado para cada estratégia no banco de dados. Em seguida, basta obter os itens do ResultsGroup e salvá-los

A estratégia com todos os seus dados é armazenada no objeto ResultsGroup: https://strategyquant.com/doc/programming-for-sq/working-with-resultsgroup/
A análise personalizada pode ser executada após o término do Builder ou do Retester ou como parte de um projeto personalizado. Ela pode executar sua própria análise e (por exemplo) excluir as estratégias que não passarem na validação. Ou usar o JDBC para se conectar ao seu banco de dados e carregar algo lá
Novamente, os SQ Snipppets estão em Java puro, portanto, você pode simplesmente adicionar código para se conectar ao seu banco de dados por meio de JDBC e salvar o que quiser lá.

 

QuantAnalyzer - Simulação de Martingale MM

Beetrader
Como posso criar um gerenciamento de dinheiro de martingale no Quant Analyser? Tentei seguir o código existente, mas não consegui encontrar uma maneira de fazer referência a negociações anteriores.

Mark (SQ)
Você está certo, não é possível consultar negociações anteriores no MM. Preciso pensar sobre isso, se for possível de alguma forma. Vou postar uma resposta melhor e talvez algum exemplo na transcrição do bate-papo

EmmanuelE
Tenho o mesmo problema, e quero criar outro gerenciamento de dinheiro com uma maneira diferente de comprar/vender/comprar.

EmmanuelE
Também preciso consultar a negociação anterior para abrir várias negociações

Beetrader
Enviei alguns exemplos de como podemos começar a melhorar a documentação. Se você tiver uma maneira de enviar exemplos de usuários, poderá verificar e revisar antes de publicar na documentação da API.

Essa resposta ainda está sendo elaborada e será publicada nos próximos dias.

 

Atualizar a configuração do Builder durante a execução

Beetrader
SQ nos projetos personalizados, existe uma maneira de atualizar a tarefa do construtor com a saída de um script pythong anterior que calcula, por exemplo, os intervalos que quero usar como stop loss e take profit.

Mark (SQ)
Deve ser possível, mas será bastante complicado. Preciso dar uma olhada em como fazer isso e tentarei criar um exemplo.

Essa resposta ainda está sendo elaborada e será publicada nos próximos dias.

Assine
Notificação de
2 Comentários
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
Hemo
17. 11. 2021 9:36 am

Algumas informações recentes sobre os testes de permutação de Timothy Masters podem ser ouvidas no podcast Better System Trader em:
https://www.youtube.com/watch?v=1RKz9v_0WDo&t=3191s

Emmanuel
20. 11. 2021 1:26 pm

Obrigado, Mark, essa sessão foi muito útil

Continuar lendo