Resposta

Tutorial em vídeo SQ Max Speed & Performance CPU,Ram,Disk & Extra 6k Strategy Quest challenge

92 respostas

gentmat

Cliente, bbp_participante, comunidade, 234 respostas.

Perfil da visita

7 anos atrás #115334

https://www.youtube.com/watch?v=l6oRsTNm0yc

// Este é o link do vídeo, dê uma olhada e espero que você goste. SIM, eu sou árabe e o sotaque é o seguinte
portanto, se você tiver algum problema com isso, "Sinto muito, mas tenho que MATAR VOCÊ".

Um grande crédito vai para "GeekTrader". Este tutorial em vídeo ensina a você como aumentar a velocidade máxima do SQ 3.
Ajuste de CPU, RAMs e discos rígidos / SSDs

A publicação original tem mais de 10 páginas, o que parece um pouco complicado para os iniciantes, por isso expliquei o assunto
passo a passo neste vídeo + adicionei mais ajustes de minha autoria (espero que ajude os iniciantes e até mesmo os usuários profissionais do SQ).

No final do vídeo, há uma solicitação para que as pessoas contribuam mais filtrando algumas boas estratégias e nos mostrem o procedimento... Tenho certeza de que cada profissional escolherá uma estratégia diferente, mas temos que aprender com as contribuições.

Links do vídeo:

https://www.youtube.com/watch?v=l6oRsTNm0yc

* Estratégias: https://drive.google.com/file/d/0B83k2vKtYK80UWNuWDZsenpQNzQ/view?usp=sharing

* Versão 9 do Java : http://cdn.azul.com/zulu-pre/bin/zulu…

* Para usar na abertura em lote do SQ, crie um novo arquivo .bat, adicione esta linha de códigos e pressione
salvar . Assista ao vídeo para saber como ajustar os parâmetros.

 

 

 

@echo off
definir NumberOfSQInstances=10
definir MainSQLocation=C:/StrategyQuant
set TempSQLocation=C:/temp
set SQParameters=-J-server -J-Xmx1g -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC 
 
 
rmdir "%MainSQLocation%/temp" /S /Q
rmdir "%MainSQLocation%/log" /S /Q
rmdir "%TempSQLocation%/strategyquant-temp" /S /Q
mkdir "%TempSQLocation%/strategyquant-temp"
 
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
mkdir "%TempSQLocation%/strategyquant-temp/%%A"
)
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
compact /c /s: "%TempSQLocation%/strategyquant-temp/%%A"
)
c:
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
xcopy "%MainSQLocation%" "%TempSQLocation%/strategyquant-temp/%%A" /E /Y
CD "%TempSQLocation%/strategyquant-temp/%%A"
start /LOW StrategyQuant64.exe %SQParameters%
)
 
 
 

Esse é um novo script se você quiser renomear cada instância para que possa saber o trabalho de cada uma delas (se não precisar dessa opção, use o código acima).
1- NumberOfSQInstances= "para qualquer número de instâncias que você deseja executar" Digamos "X" instâncias
2- definir arrayline[1]=CrossMaStrategyInstance
definir arrayline[2]=RSIStrategyInstance
.... Continue declarando mais para se adequar às suas instâncias X
Digamos que queremos 3 instâncias, então adicionarei mais uma
arrayline[3]=anotherNewInstance

O código é :

 

@echo off
setlocal enabledelayedexpansion
 
 
 
 
definir NumberOfSQInstances=2
definir arrayline[1]=CrossMaStrategyInstance
definir arrayline[2]=RSIStrategyInstance
 
 
 
 
definir MainSQLocation=C:/StrategyQuant
set TempSQLocation=C:/temp
set SQParameters=-J-server -J-Xmx1g -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC
 
rmdir "%MainSQLocation%/temp" /S /Q
rmdir "%MainSQLocation%/log" /S /Q
rmdir "%TempSQLocation%/strategyquant-temp" /S /Q
mkdir "%TempSQLocation%/strategyquant-temp"
 
 
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
mkdir "%TempSQLocation%/strategyquant-temp/!arrayline[%%A]!"
)
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
compact /c /s: "%TempSQLocation%/strategyquant-temp/!arrayline[%%A]!"
)
 
c:
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
xcopy "%MainSQLocation%" "%TempSQLocation%/strategyquant-temp/!arrayline[%%A]!" /E /Y
CD "%TempSQLocation%/strategyquant-temp/!arrayline[%%A]!"
renomear StrategyQuant64.exe !arrayline[%%A]!.exe
start /LOW !arrayline[%%A]!.exe %SQParameters%
 
)

0

clonex / Ivan Hudec

Cliente, bbp_participant, comunidade, sq-ultimate, colaborador, autor, editor, 271 respostas.

Perfil da visita

7 anos atrás #139169

Quantas estratégias você tem no banco de dados?

0

AC1962

Cliente, bbp_participant, community, sq-ultimate, 97 respostas.

Perfil da visita

7 anos atrás #139175

Oi Clonex

 

1295 estratégias no banco de dados

 

AC1962

0

gentmat

Cliente, bbp_participante, comunidade, 234 respostas.

Perfil da visita

7 anos atrás #139177

Oi gentmat

Estou executando o SQ há 2,5 dias, usando seu script de arquivo em lote recomendado, configurado para 1 Gb de RAM / thread / instância do SQ. Cada instância está configurada com o recomendado Zulu 9.0.0.2.

Embora a velocidade geral de criação de estratégias tenha melhorado muito, noto que o medidor de consumo de memória para cada instância do SQ aumenta rapidamente com o tempo, aparentemente em relação à quantidade de estratégias salvas no banco de dados. Veja a captura de tela anexa de medidor de consumo de memória da instância SQ com a maior quantidade de estratégias no banco de dados (~1300). Está quase atingindo o limite de configuração do script de 1 Gb de RAM.

Em seu vídeo, você indica que, para essa configuração, você espera que o medidor de consumo de memória do SQ permaneça razoavelmente estável, não excedendo 500 Mb em um período de aproximadamente uma semana. Você pode me explicar por que, depois de apenas 2,5 dias, meu SQ O medidor de consumo de memória já está se aproximando de 1 Gb, quando definido para 1 thread e usando Zulu 9.0.0.2? A configuração do meu PC é: Windows 10 home; CPU i7 de 4 núcleos; 16 Gb de RAM.

Quando eu costumava executar 1x instância do SQ com a contagem de threads definida como 8, embora a velocidade de criação da estratégia fosse mais lenta, o O medidor de consumo de memória raramente se aproximava de 3Gb, mesmo após 6 dias de execução contínua do SQ.

Estou curioso porque, para aumentar minha alocação de RAM de 1 Gb para 2 Gb por instância do SQ, será necessário atualizar minha RAM geral instalada de 16 Gb para 24 Gb ou 32 Gb.

Qualquer insight que você possa fornecer sobre esse problema será muito apreciado.

Obrigado
AC1962

Número de habitantes? Quanto é
O que você está usando? E a entrada no mercado!
E você está mantendo no indicador o valor mais alto e mais baixo? Você está usando qualquer um desses 4 indicadores?

Enviado do meu iPhone usando Tapatalk

0

AC1962

Cliente, bbp_participant, community, sq-ultimate, 97 respostas.

Perfil da visita

7 anos atrás #139206

Oi gentmat

 

Veja abaixo

 

Número de habitantes? Quanto é

Tamanho da população genética = 100

O que você está usando?

período de tempo = H4

 

E entrada no mercado!

Entrar na parada

E você está mantendo no indicador o mais alto e o mais baixo?

Sim

 

Você está usando qualquer um desses quatro indicadores?

Sim, todos os 4: HIGHEST; LOSEST; HR; LR

 

Obrigado

AC1962

0

Dave

Cliente, bbp_participante, comunidade, sq-ultimate, 32 respostas.

Perfil da visita

7 anos atrás #139207

Oi gentmat,

 

Agradecemos imensamente a gentileza de compartilhar sua análise de desempenho, as sugestões úteis, as dicas de desempenho e o excelente script do arquivo bat para criar várias sessões do SQ. 

 

Meus sistemas são estações de trabalho Lenovo D30 personalizadas, cada uma com dois Xeon E5-2670s com 16 (32 virtuais) núcleos e 128 GB de RAM cada. Um deles é dedicado à busca de estratégias 24 horas por dia, 7 dias por semana, e o outro é usado para analisar as estratégias e refiná-las em um portfólio. Anteriormente, eu atualizava manualmente 32 cópias do SQ sempre que queria fazer uma alteração. Agora, basta alterar a cópia principal, executar o arquivo em lote e a vida fica muito mais fácil!

 

Os SSDs em meus sistemas são apenas para o Windows 10 e, portanto, são relativamente pequenos (240 GB). O SQ e os outros programas FX são executados em um disco rígido de 2 TB que acomoda facilmente as instalações originais e 32 cópias do SQ e ainda usa menos de 25% do espaço da unidade. Você mencionou o uso do Supercache e eu gostaria de sugerir uma alternativa. O PrimoCache oferece uma avaliação gratuita de 60 dias e, em seguida, um preço de compra de $30. A configuração é fácil e o desempenho é excelente. (Não tenho nenhuma afiliação com nenhum desses pacotes).

 

Há muito tempo eu vinha me perguntando se era mais eficiente usar a geração aleatória ou a evolução genética, então usei seu script e criei um estudo pseudocientífico para tentar obter alguns pontos de dados. Criei dois arquivos em lote com base no seu script para gerar 10 cópias utilizando a evolução genética e 10 cópias utilizando a seleção aleatória. Ambos se basearam exatamente nos mesmos dados de preço, nas mesmas configurações de spread e derrapagem, nas mesmas datas entre aprendizado e validação e nas mesmas condições de classificação. (Os detalhes completos dos dados e da classificação estão listados na parte inferior.) Os dois conjuntos de 10 cópias foram executados simultaneamente por 24 a 36 horas, quando foram interrompidos e as estratégias criadas foram contadas e salvas para análise posterior. Em cada um dos três testes, o total de todos os 10 bancos de dados do Genetic Evolution continha pelo menos 200 vezes o número de estratégias que estavam nos bancos de dados do Random Generation. Aqui estão os dados resumidos do último teste de 24 horas:

 

Evolução genética:

Número de instâncias: 10

Número mínimo de estratégias no banco de dados: 33

Número máximo de estratégias no banco de dados: 129

Número total de estratégias para todas as dez instâncias: 582

 

Seleção aleatória:

Número de instâncias: 10

Número mínimo de estratégias no banco de dados: 0

Número máximo de estratégias no banco de dados: 2

Número total de estratégias para todas as dez instâncias: 2

 

Agora, uma pessoa que realiza três testes em períodos de tempo diferentes obviamente não é um estudo válido. Portanto, gostaria de perguntar se outros usuários estão usando a geração aleatória e, em caso afirmativo, se eles conseguem gerar estratégias mais rapidamente. Há alguma outra vantagem em usar a geração aleatória em relação à evolução genética?

 

________________________________________

Aqui estão os parâmetros usados para esse teste:

 

Dados: Dados de tick M5 do EURUSD da Dukascopy

Datas do backtest: 05.05.2003 a 11.04.2012

Na amostra de 05.05.2003 a 04.01.2010

Fora da amostra: 01.04.2010 a 04.11.2012

Spread: 2.0

Deslizamento 3.0**

Precisão do teste: M1

 

Critérios de classificação - rejeitar qualquer coisa que corresponda:

Na amostra:

1TP9Fator de ajuste: < 1.3

Relação retorno/DD: < 3.3

% vence: < 30%

Número de negociações: < 300

 

Fora da amostra:

1TP9Fator de ajuste: < 1.3

Relação retorno/DD: < 1.1

% vence: < 30%

Número de negociações: < 100

 

** O primeiro teste robusto foi determinar a sensibilidade à derrapagem. Minha suposição, que pode estar incorreta, é que, se a estratégia já funcionava com slippage de 3 pip, ela só pode melhorar sem slippage. Todo e qualquer comentário ou orientação é bem-vindo.

Nunca desista!

0

AC1962

Cliente, bbp_participant, community, sq-ultimate, 97 respostas.

Perfil da visita

7 anos atrás #139215

Oi, Dave

 

Inicialmente, instalei o SuperCache em meus dois PCs com Windows 10. Ele funcionou bem em um PC, mas fez com que o segundo travasse continuamente ao ser reiniciado. Verificação do SuperCache apoio Parece que esse é um problema conhecido. São oferecidas três soluções, mas as duas primeiras não funcionaram para mim e a terceira eu não tinha confiança de TI para tentar. O resultado líquido foi que tive que envolver o fornecedor do PC e acabei redefinindo o Windows 10 para resolver o problema 🙁 e remover o SuperCache. Depois de pesquisar na Web, também encontrei PrimoCacheque, além de ser muito mais barato, tem melhores avaliações, oferece suporte on-line muito mais atualizado, tem um fórum ativo, instala de forma limpa, tem mais recursos, mas ainda é muito fácil de usar. Agora tenho o PrimoCache instalado nos dois PCs, funcionando muito bem.

 

Após os testes iniciais, passei a usar sempre e somente o Genetic Evolution, porque o recurso de evolução fornece automaticamente um proxy para a realização de vários aprimoramentos de estratégia quando uma estratégia passa nos critérios de aceitação. Muitas vezes, quando o SQ encontra uma estratégia que passa para o banco de dados, o Genetic Evolution também cria uma massa de estratégias de variação aceitáveis com base na primeira. Eu preferiria que meu banco de dados fosse preenchido com 100 variações de estratégias Genetic Evolved do que apenas uma estratégia aleatória. Obviamente, isso não garante uma estratégia robusta, mas claramente aumenta as chances de acertar em uma. Seu teste parece apoiar minha própria descoberta.

 

Além disso, acho que o uso do excelente arquivo em lote do gentmat aumenta a chance de acertar uma boa estratégia, já que muitas vezes uma das várias instâncias de SQ de thread único produzirá muito mais estratégias potencialmente viáveis do que as outras instâncias. É provável que isso não acontecesse tão prontamente se eu usasse apenas uma instância de SQ definida para vários threads. Mais uma vez, obrigado, gentmat!

 

AC1962

0

gentmat

Cliente, bbp_participante, comunidade, 234 respostas.

Perfil da visita

7 anos atrás #139392

Essa é uma solicitação especial que você deve usar somente se necessário. Caso contrário, use o código genérico que postei na primeira página. Cada instância do sq3 será nomeada como você deseja que ela seja. Exemplo: CrossMaSq3Instance e assim por diante.
Altere NumberOfSQInstances=2 de acordo com sua necessidade

Digamos que eu queira 10 instâncias: colocarei NumberOfSQInstances=10
Então, tenho que criar 10 desses:
definir arrayline[1]=CrossMaStrategyInstance
definir arrayline[2]=RSIStrategyInstance
set arrayline[3]...
set arrayline[4]...
set arrayline[5]...

... até definir arrayline[10]..= seu nome, seja ele qual for .

O código é o seguinte: salve-o em um arquivo .bat

@echo off
setlocal enabledelayedexpansion

definir NumberOfSQInstances=2
definir arrayline[1]=CrossMaStrategyInstance
definir arrayline[2]=RSIStrategyInstance

definir MainSQLocation=C:\StrategyQuant
set TempSQLocation=C:\temp
set SQParameters=-J-server -J-Xmx1g -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC

rmdir "%MainSQLocation%\temp" /S /Q
rmdir "%MainSQLocation%\log" /S /Q
rmdir "%TempSQLocation%\strategyquant-temp" /S /Q
mkdir "%TempSQLocation%\strategyquant-temp"

FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
mkdir "%TempSQLocation%\strategyquant-temp\!arrayline[%%A]!"
)
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
compact /c /s: "%TempSQLocation%\strategyquant-temp\!arrayline[%%A]!"
)

c:
FOR /L %%A IN (1,1,%NumberOfSQInstances%) DO (
xcopy "%MainSQLocation%" "%TempSQLocation%\strategyquant-temp\!arrayline[%%A]!" /E /Y
CD "%TempSQLocation%\strategyquant-temp\!arrayline[%%A]!"
renomear StrategyQuant64.exe !arrayline[%%A]!.exe
start /LOW !arrayline[%%A]!.exe %SQParameters%

)

0

AC1962

Cliente, bbp_participant, community, sq-ultimate, 97 respostas.

Perfil da visita

7 anos atrás #139433

Oi gentmat

 

Excelente! Obrigado pela modificação código do arquivo .bat. Ele funciona muito bem.

 

Muito agradecido

AC1962

0

sua equipe

Cliente, bbp_participant, comunidade, 60 respostas.

Perfil da visita

7 anos atrás #139439

 Acredito que, se a estratégia depender de um teste de dados históricos de boa qualidade, ela não será estável e, com certeza, serei reprovado no Monte Carlo.

0

gentmat

Cliente, bbp_participante, comunidade, 234 respostas.

Perfil da visita

7 anos atrás #139512

Oi gentmat

Excelente! Obrigado pela modificação código do arquivo .bat. Ele funciona muito bem.

Muito agradecido
AC1962

Havia variáveis não utilizadas no script, agora eu as excluí.
Não era afetuoso, mas o excluí de qualquer forma para ser mais limpo

Enviado do meu iPhone usando Tapatalk

0

sua equipe

Cliente, bbp_participant, comunidade, 60 respostas.

Perfil da visita

7 anos atrás #139700

Usei um sistema de 2 CPUs e5 2670 para executar esse método, mas ele travou duas vezes em menos de 24 horas, gerando um arquivo de erro como este

 

Oct 25, 2016 1:49:37 AM java.util.prefs.WindowsPreferences
AVISO: Não foi possível abrir/criar o nó raiz de prefs Software\JavaSoft\Prefs na raiz 0x80000002. O Windows RegCreateKeyEx(...) retornou o código de erro 5.
 

 

Alguém poderia me ajudar com isso, qual é a causa do problema?

 

Obrigado.

0

sua equipe

Cliente, bbp_participant, comunidade, 60 respostas.

Perfil da visita

7 anos atrás #139701

A memória total é de 32G, como ele tem 32 núcleos lógicos, fiz 30 e 28 cópias, isso é causado por falta de memória suficiente? mas cada um define o limite como 1G, 

0

Dave

Cliente, bbp_participante, comunidade, sq-ultimate, 32 respostas.

Perfil da visita

7 anos atrás #139703

yourrodstaff,

 

Para simplificar, com 32 núcleos (threads?), 32 GB não é memória suficiente para uma grande quantidade de cópias do SQ em execução ao mesmo tempo. O primeiro problema é que ter duas CPUs para um total de 32 núcleos não é o mesmo que uma única CPU de 32 núcleos. Uma única CPU E5-2670 v1 é classificada pelo PassMark com uma pontuação de 12.505, enquanto uma CPU dupla E5-2670 v1 é classificada com 18.472. Há muita sobrecarga e ineficiência no compartilhamento de recursos - memória, acesso a disco etc. Nesse caso, um sistema de CPU dupla com menos de 150% de dois computadores E5-2670 independentes. Acontece que eu uso duas dessas máquinas e, embora elas sejam menos potentes, são a melhor capacidade de processamento de CPU disponível pelo preço.

 

Essa ineficiência inerente aos recursos que não são da CPU é exacerbada quando não há memória suficiente. Se quiser ter uma ideia de qual é a memória "livre" real, inicialize o computador sem nada carregado e abra o gerenciador de tarefas. Isso mostrará a quantidade de memória que está sendo usada. A memória livre é 100% - a quantidade mostrada no gerenciador de tarefas. Por exemplo, minha única CPU I7-4770 (que eu usava antes de comprar o E5-2670s) com 16 GB mostra 7% de utilização de memória após uma nova inicialização. Isso significa que o máximo de memória que tenho disponível é 93% dos 16 GB ou não mais que 14,88 GB. Se você estiver alocando 1 GB para cada cópia do SQ, então o número máximo, em teoria, que você deve ser capaz de executar é 14 cópias. Na realidade, eu costumava executar 12 cópias com a utilização de 1 thread e 1 GB alocado e vivia com travamentos a cada 1 ou 2 semanas.

 

Se você usar outros programas, como verificação de vírus ou cache de disco, o número diminuirá de acordo. Se estiver usando o computador para outras tarefas, será necessário alocar menos cópias. Outro fator é que o uso da memória não é linear em cada instância. Para cada cópia do SQ que você abre, o SQ abre aproximadamente 50 threads adicionais, cada uma ocupando mais memória do sistema, portanto, não existe uma fórmula exata que eu conheça para encontrar a combinação máxima ou ideal, e todas elas precisam se coordenar com o sistema operacional, as CPUs, os controladores de memória, os controladores de HDD etc., o que exige mais recursos. Pense nisso como as crianças no jardim de infância: os problemas são exponenciais, não lineares.

 

Para obter o máximo desempenho, você precisará usar um programa de cache de disco, como o PrimoCache, caso contrário, o computador ficará atolado na releitura de dados. Esse programa também exigirá cerca de 15 a 25% de sua RAM, o que significa menos instâncias, mas a melhoria no desempenho vale a pena. Meus sistemas estavam ficando completamente atolados com 20 a 25 instâncias e um uso máximo da CPU de 50% - 70%, embora eu tivesse 128 GB. Quando instalei o PrimoCache e aluguei 32 GB para ele, consegui carregar 40 instâncias com 2 GB alocados para cada uma, totalizando 80 GB de uso de memória mais os 32 GB para o cache, e o gargalo passou a ser o uso da CPU, que agora é de 100% em todos os threads, em vez da taxa de transferência do disco rígido. Se você pensar bem, o SQ lê os mesmos dados para cada teste e, se esses dados puderem residir na RAM em vez de em um prato de HDD, o simples uso do PrimoCache (ou de qualquer outro programa de cache) aumentará consideravelmente.

 

Eu uso dois sistemas de 32 (e5-2670 v1) threads, cada um com 128 GB, ambos usando PrimoCache de 32 GB. Um computador é usado 24 horas por dia, 7 dias por semana, 100% do tempo gerando estratégias e está executando 40 ou mais instâncias do SQ (um thread por instância) com 2 GB alocados para cada instância. O segundo serve como meu computador do dia a dia, o servidor de arquivos doméstico, o servidor de backup e o servidor de vídeo para toda a multimídia da casa e ainda executa 24-28 instâncias do SQ com 2 GB por cópia. Um detalhe: preciso reiniciar cada máquina uma vez a cada uma ou duas semanas, pois há um vazamento de memória em algum lugar.

 

Espero que isso ajude.

Dave

Nunca desista!

0

sua equipe

Cliente, bbp_participant, comunidade, 60 respostas.

Perfil da visita

7 anos atrás #139710

Dave,

Muito obrigado pela ilustração detalhada dos problemas e por compartilhar suas experiências. 

 

O motivo de eu ter feito isso é que, nas primeiras 12 horas após o início da execução, o medidor de memória dentro de cada trabalho estava praticamente estável, mantendo cerca de 700 Mb e um total de 77% de uso de memória, e a CPU estava com cerca de 100% de carga. Portanto, eu acreditava que não havia problema em manter essa situação, mas depois de uma noite ele travou.   

 Assim, reduzi para 14 trabalhos, cada um com 2 GB alocados, de modo que a CPU está agora em 50% e a memória em cerca de 40%, o que deve durar mais do que a primeira configuração, mas, com base em sua experiência, parece que ainda não é suficiente. Agora estou com um total de 64 Gb de memória e também tentarei sua sugestão sobre a memória cache de disco.

Mais uma vez, agradeço sua ajuda!

0

gentmat

Cliente, bbp_participante, comunidade, 234 respostas.

Perfil da visita

7 anos atrás #139715

Vou lhe enviar um e-mail para tentar corrigir isso. De qualquer forma, adicionar GB é uma boa ideia, com certeza

0

Visualizando 15 respostas - 31 até 45 (de um total de 92)

1 2 3 4 5 6 7