Transcrição do bate-papo de codificação de 18/11/2021

Mais uma vez, obrigado a todos os participantes do último bate-papo sobre codificação.

A próxima sessão de codificação será no dia 25 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.

 

 

beetrader
É possível alterar o código de cores na matriz de correlação? Os números negativos extremos são mostrados em verde. Quero ter as mesmas tonalidades de cor dos números positivos quando os negativos se afastarem de zero. Há alguma maneira de fazer isso no código?

Marca - SQ
Acredito que não seja possível alterar as cores no momento, pois elas estão codificadas
Mas eu entendo. Em princípio, tudo é possível de ser personalizado, inclusive as cores na tabela da matriz de correlação, mas não podemos adicionar configurações a todos os itens do programa. Duvido que haja muitos outros usuários que se beneficiariam com esse recurso, portanto, ele tem uma prioridade pequena para nós. Precisamos nos concentrar em coisas mais importantes e de maior impacto

 

 

beetrader
Quero implementar um banco de dados para salvar os resultados em xml. Há alguma mudança prevista para os próximos meses ou posso salvá-los com segurança na especificação atual?

Marca - SQ
Não, o XML não deve mudar. Ele pode ser ampliado (novas tags ou atributos), mas isso não deve afetar nenhum código que o esteja processando

 

 

beetrader
É possível ter uma fonte de dados de preços diferente das listadas no gerenciador de dados, por exemplo, posso consumir preços de um banco de dados mongodb ou sql?

Marca - SQ
A solução mais simples, por enquanto, seria exportar os preços do seu banco de dados para um formato CSV, para que você possa importar facilmente qualquer formato CSV para o SQ

 

 

sebasfiorent 
Estou procurando como implementar um FormulaBlock para implementar o valor fixo em (USD/EUR, ou seja, a moeda da conta) para TakeProfit

Marca - SQ
deve ser uma fórmula no pacote SQ.Formulas.SLPT. Mas, para ser sincero, não tentamos estender essa parte externamente, pois há algumas dependências que poderiam causar problemas - você pode criar uma nova fórmula no SQ, mas precisaria adicionar também sua "tradução" para MT4/5 MQL e/ou TS EasyLanguage para fazê-la funcionar no código final gerado para essas plataformas

 

 

beetrader
pergunta aberta: Existem alguns indicadores de John Ehlers no SQX. Seus outros indicadores baseados em processamento de sinais são difíceis ou impossíveis de implementar no SQX?

Marca - SQ
eles são possíveis de serem implementados, mas não houve tempo para isso. Há milhares de possíveis indicadores que poderiam ser implementados no SQ, mas escolhemos os que preferimos. Estamos adicionando alguns de vez em quando

clonex
Isso não deve ser um problema

Não é tão difícil. Por favor, envie-me aqui os indicadores da Ehlers que você pretendia implementar.
Tenho algo em processo de trabalho Autocorrelation, algo foi feito (Reflex), mas há muitas possibilidades.

beetrader
ok, obrigado, podemos implementar algumas delas. Talvez o que eu quisesse saber fosse uma lista de pegadinhas a serem observadas. Por exemplo, se você sabe que algo definitivamente não funciona ao tentar implementá-las, então é útil para os desenvolvedores/extensores de potência do SQX saberem de antemão.

Marca - SQ
Não tenho certeza se há algum problema na implementação dos indicadores se eles não forem indicadores especiais de vários períodos.
Os indicadores no SQ são bastante simples, sua lógica é semelhante à dos indicadores C# do NinjaTrader - recomendo que você procure a implementação de indicadores do NT, pois pode ser muito simples convertê-los para o SQ

beetrader
Muito obrigado, isso é uma pegadinha

 

 

beetrader
Existe uma maneira de estender o SPP para que ele use o lucro médio e não o lucro mediano?

Marca - SQ
Não tenho certeza do que você quer dizer, o SPP não usa o valor médio ou mediano para escolher o valor do parâmetro, mas procura a região mais estável

beetrader
Preciso fazer uma solicitação de mudança ou é muito complicado mudar a arquitetura atual?

beetrader
Eu marquei na imagem

Marca - SQ
Entendo que não se trata de SPP, mas de perfil de otimização. A média é usada lá porque é usada no artigo original, e o desvio padrão também é normalmente medido a partir da média. Não tenho certeza de como ele se comportaria no caso da mediana

beetrader
É claro que eu entendo. O problema é que, como o SPP se baseia em valores medianos, será que não estamos superestimando ou subestimando quando passamos a usar os lucros médios e não o lucro mediano? Posso brincar com as configurações para encontrar os melhores números de StdDev, portanto, não é um item de alta prioridade.

 

 

beetrader 
Você conseguiu encontrar uma maneira de implementar o Martingale no QuantAnalyser?

clonex
Entenda: 1) a maneira mais fácil é implementá-lo no cenário "e se", no qual você pode fazer um loop na lista de ordens de trote. 2) a maneira mais difícil é fazer isso no plug-in de gerenciamento de dinheiro em QA.

 

 

beetrader
Gostaria de perguntar se existe alguma métrica pronta (como sharpe ou sqn), que poderia calcular estatísticas sobre a "marcação a mercado" mais frequente do que apenas as negociações concluídas.
Por exemplo, no setor de ações, é bastante comum fazer a marcação diária a mercado para negociações de vários dias e calcular o índice de Sharpe a partir do PNL diário.

clonex
Você quer dizer algo como : Calcular o Sharpe para as últimas 20 negociações?

clonex
Ainda não e, de fato, essa não é uma prioridade para mim. Há coisas muito melhores à nossa frente, com todo o respeito
Na verdade, estou trabalhando em trechos de "e se":
1) um detectará o DD máximo no treinamento/ou teste da IS e, em seguida, interromperá a negociação se o limite de DD for atingido no sistema operacional
2) Simulação de negociação de ações em what if (juntamente com trechos de controle de conta no MT4/MT5) (eles foram feitos, mas não lançados)

beetrader
Sim, eu sei que você está sobrecarregado. Só preciso de orientação sobre como fazer referência a negociações anteriores no código QA,

Marca - SQ
Não, não existe essa métrica. No SQ, calculamos as métricas somente após o backtest da estratégia, portanto, ele não tem acesso a todos os movimentos da negociação. Ele armazena MAE/MFE, que pode ser usado para calcular esse tipo de métrica até certo ponto

beetrader
Ele quer dizer que, enquanto uma negociação estiver aberta, ele quer as estatísticas em jogo, como esta MAFE https://strategyquant.com/codebase/mafe-profit-factor/

os
Estou me referindo ao cálculo do pnl diário, por exemplo, incluindo a parte "não realizada"

1TP9O problema com todas as métricas de "retornos ajustados ao risco" na SQX que encontrei (sharpe, sqn, retorno sobre o dd) é que você pode ter uma estratégia "quebrada" que permanece em uma posição perdedora a longo prazo (semanas, meses), ela pode ter um enorme drawdown não realizado (como 50%+), mas se você calcular suas estatísticas (sharpe) apenas a partir do PNL realizado (sem marcação a mercado), ela parecerá irrealisticamente boa...

@beetrader Sim, algo como o MAE é uma solução alternativa. É isso que estou usando agora como função de aptidão, alguma combinação de retorno, sharpe/sqn e MAE.
Isso é bom, mas, idealmente, eu gostaria de implementar algo melhor...

clonex
Não sei como fazer isso no momento, mas fiz vários trechos inéditos com MAE / MFE, não sei como fazer isso agora
A análise da relação de borda geral, mfe e mae pode nos dizer muito mais do que eu esperava
Por favor, guarde essa pergunta para marcar para amanhã @os os.

clonex
Não tenho certeza se isso é possível no QA agora. Há itens ausentes no pacote MoneyManagementTypes
Deve ser possível rastrear o pedido antes como uma variável de instância, mas realmente não sei

os
Ok, obrigado.

Por exemplo, esta pergunta e a primeira resposta são exatamente sobre esse problema...
Faz sentido analisar o pnl não realizado (pnl de negociações abertas) diariamente, pois, caso contrário, você pode ter aberto uma negociação por um ano e não ver o que aconteceu nesse meio tempo com o valor de sua conta a partir de suas estatísticas.
https://quant.stackexchange.com/questions/9935/calculate-daily-returns-for-sharpe-ratio

clonex
Ou talvez seja possível

 

 

martinx
(traduzido por Mark) Existe uma função que mede quantos segundos durou a barra? Quero usá-la para barras de intervalo e volume

Marca - SQ
martinx - por favor, apenas em inglês. Não, não há nenhuma função que meça quantos segundos a barra durou. Não tenho certeza se há esse tipo de informação armazenada para barras de volume e de intervalo

martinx
A função existe na plataforma padrão (estou usando o tradestation ou o multicharts), por exemplo, no ms, em sua plataforma não há como medir essas coisas básicas?

Marca - SQ
Ok, eu entendo. Não tenho certeza agora, mas os horários no SQ também são armazenados em milissegundos. Portanto, os tempos que você está mostrando devem ser acessíveis a partir do bloco/série Time. Portanto, você precisa fazer apenas Time(0) - Time(1) para obter uma diferença entre a barra anterior e a atual

 

 

EmmanuelE
Gostaria de criar estratégias de várias posições, como várias compras/curtas,
posição de cobertura. Onde posso desenvolver esses snippets no CodeEditor?

Vejo que podemos criar um novo "Order Action" ou um novo "Money Management"?

Onde posso desenvolver um gerenciamento de comércio com várias posições?

Marca - SQ
Você pode abrir várias ordens usando Enter At Market/Stop/Limit. Isso não é feito dessa forma nas estratégias padrão, mas quando você cria a lógica da estratégia, pode fazê-lo no editor AlgoWizard.
Criar um snippet para ele no editor de código não é tão simples

EmmanuelE
Eu o vi no algowizard, mas não no editor de código

Marca - SQ
Sim, você pode criar um novo snippet de Order Action, mas teria que adicionar também a maneira de traduzi-lo para o código MT4/5 ou EasyLanguage - o que você usar.
O CodeEditor é para o desenvolvimento de blocos de negociação. Não entendo muito bem o que você quer fazer. Isso deve ser fácil no AlgoWizard, bastando adicionar mais blocos EnterAtXXX

EmmanuelE
Temos um exemplo de snippet de ação de novo pedido?
Como podemos adicioná-lo ao tradutor em um idioma fácil?

Marca - SQ
Você pode dar uma olhada em EnterAtMarket, e há um código-fonte para cada building block no Code Editor - pacote SQ.Blocks.Order.Open

veja o exemplo de adição de um indicador, o princípio é o mesmo: https://strategyquant.com/doc/programming-for-sq/adding-envelopes-indicator-step-by-step/#adding-pseudo-code-template-for-a-new-block
Este é um tutorial passo a passo sobre como adicionar um novo bloco de indicador ao SQ.
todos os modelos para todos os componentes básicos são definidos em Freemarker linguagem na seção do Código

EmmanuelE
Por exemplo, eu gostaria de poder adicionar uma posição de hedge quando o SQX procurar estratégias (não no algowizard)

ou mais
Desenvolvi várias estratégias de gerenciamento de comércio. I
gostaria de adicioná-los ao SQX
no editor de código

Marca - SQ
geralmente há duas maneiras:
1. criar snippets personalizados - indicadores, ações de pedido - que lidariam com isso, mas isso é bastante complexo
2. criar seu próprio modelo de estratégia - o SQ pode então gerar estratégias com base em seu modelo
https://strategyquant.com/doc/strategyquant/strategy-templates/

EmmanuelE
Estou disposto a desenvolver trechos de costumes.

Marca - SQ
Todos os blocos padrão no SQ têm seu código completo em Snippets no Code Editor

EmmanuelE
Estou estudando cada um deles

EmmanuelE
Se eu criar um modelo em um algowizard com várias posições, ele não permitirá a criação de uma estratégia no SQX com estratégias de indicadores aleatórios.
A única solução para codificá-lo é o editor de código

Estou disposto a tentar usar modelos para começar

Se eu criar um modelo no algowizard com várias posições, ele não permitirá a criação de uma estratégia no SQX com estratégias de indicadores de blocos aleatórios, apenas o indicador selecionado no algowizard.

A única solução para codificá-lo é o editor de código

Marcar
Não vejo por que isso não funcionaria com modelos, acredito que seja possível.

 

 

Pôquer1
Olá. Como faço para importar indicadores do tradestation (easylanguage) para o SQ.
É necessária alguma codificação adicional (ou posso copiar e colar do TS?

Marca - SQ
Sinto muito, mas não é tão simples assim. O TS usa o EasyLangiuage e o SQ usa Java. Portanto, qualquer indicador que você queira transferir precisa ser implementado no SQ.
Você pode fazer isso sozinho ou pode solicitar/pedir esse tipo de serviço a alguém - talvez à clonex

Pôquer1
Certo. Porque tenho alguns indicadores com os quais gostaria de obter suporte.
Se funcionar com o Clonex?

Marca - SQ
você pode perguntar à Clonex:
Contato com o consultor Ivan Hudec StrategyQuantX
Preencha este formulário.

 

 

oliverhowton
a postagem https://strategyquant.com/doc/programming-for-sq/example-per-databank-custom-analysis/ Essa função substitui as funções do analisador quantitativo. Tentei salvar uma execução específica de um teste de matix de avanço em um arquivo csv e importá-lo para o analisador quantitativo, mas não foi possível, então estou um pouco perdido quanto aos benefícios desse recurso.

Marca - SQ
Oliver, esse exemplo é para o StrategyQuant, não funcionaria no QuantAnalyzer. Não programo para o QA há algum tempo, mas você deve ser capaz de fazer algo semelhante com o Scripter no QA - selecionar estratégias no banco de dados (ou carregá-las do disco) e, em seguida, fazer algo em cima delas.
O que exatamente você quer fazer?

oliverhowton
Então, encontrei uma configuração estável de execução/parâmetros em um walkforward e, portanto, a curva de patrimônio líquido exclusiva que quero importar para o quant analyzer, mas o arquivo csv ao tentar importar para o QA não funciona..... alguma ideia de como posso fazer isso?

Marcar
O problema é que o QA carrega apenas o resultado principal da estratégia, não os resultados WF.
Acho que há uma solução, mas não é simples.
No SQ, você pode acessar a Lista de negociações para o resultado do WF fornecido e exportar as negociações para um arquivo CSV
No QA, você pode carregar essa lista de negociações. O único problema é que você precisará especificar um formato personalizado: https://strategyquant.com/doc/quantanalyzer/formats-supported-in-quantanalyzer/#format-specification
mas você precisa fazer isso apenas uma vez

Já adicionei o formato personalizado no comentário de sua tarefa: https://roadmap.strategyquant.com/tasks/sq4_8403
O formato adicionado é:
Format.4.SkipRow=1
Format.4.Separator=;
Format.4.DateFormat=yyyy.MM.dd HH:mm:ss
Format.4.LineFormat=Unused,Symbol,Action,OpenTime,OpenPrice,Size,CloseTime,ClosePrice,PL,Unused,Unused,Unused,Unused,Unused,Unused,Unused,Comment

beetrader
Observando seu arquivo de resultados, acho que é melhor apenas obter as configurações ideais que você encontrou e executar novamente a estratégia no AW, salvar o arquivo como um novo nome de arquivo e, em seguida, importá-lo para o QA. Dessa forma, você não terá acesso a outras coisas porque o QA está tratando seus resultados como um portfólio e, assim, poderá ver ou analisar facilmente os resultados que marquei com as setas no gráfico.

oliverhowton
Obrigado. Vou dar outra olhada. Sim, o problema é que pretendo reotimizar minhas estratégias e o wfm aconselha o uso de determinadas configurações no futuro para configurações de dados futuros que pretendo usar. Essa curva de patrimônio que foi otimizada sucessivamente pretende ser comparada com outras para que eu possa criar um portfólio.

Assine
Notificação de
1 Comentário
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
Emmanuel
27. 11. 2021 4:43 pm

Isso é útil para ler novamente a resposta

Continuar lendo