Erros, bugs, perguntas - página 2587

 
elibrarius:
Penso que é mais fácil ler barras a partir de ficheiros.

Escrevi-lhe uma solução numa linha - adicione a data do teste a esta condição e teste no testador sem qualquer problema, o desempenho irá pelo menos diminuir

ou melhor ainda, fazer como o administrador sugere - o ficheiro não é obviamente um problema, mas há uma grande tentação de espreitar para os sítios errados com o neurónio - é assim que normalmente acabo por o fazer ))))

 
Roman:

O código utiliza lock_guard
mas se for comentado, não há alteração
.

No entanto, começou a vazar, bem, é claro porquê, devido ao tamanho errado do
Voltarei das férias, se não for muito incómodo, estudarei a questão. Mas logicamente, o bug não está em mql, mas sim no seu código. A propósito, só por diversão, e se a biblioteca funcionar com que codificação? Tem a certeza que utf-16, mas e se for utf-8, afinal, o mais comum.
 
Igor Makanu:

Escrevi-lhe uma solução numa linha - adicione a data do teste a esta condição e teste no testador sem qualquer problema, o desempenho irá pelo menos baixar

Ou melhor ainda, basta seguir a sugestão do administrador - o ficheiro não será um problema, mas pode sentir-se tentado a usar neuronetas para espreitar locais que não devia - é assim que normalmente acabo por ter de o fazer ))))

Verifiquei-o - não ajudou.

E não deve ser. Afinal de contas, de acordo com o artigo que o administrador citou:
A quantidade mínima de histórico a descarregar do servidor comercial para períodos de tempo D1 e menos é de um ano.

E as 100000 barras M15 que pedi são cerca de 3 anos. Durante o primeiro ano as barras são copiadas, ou seja, 37k barras, e além de não estarem no testador, esperar não vai ajudar.

 
elibrarius:

Verificou-o - não funcionou.

Não deveria ser. Afinal de contas, de acordo com o artigo, o administrador citado:
A quantidade mínima de histórico ao descarregar do servidor de negociação para prazos D1 e inferiores é de um ano.

E as 100000 barras M15 que pedi são cerca de 3 anos. Durante o primeiro ano as barras são copiadas, ou seja, 37k barras, e além de não estarem no testador, esperar não vai ajudar.

está a funcionar para mim, colocar teste 2000 - 2019 em M15, código de especialista:

input int InpBars = 100000;

void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

   if(print_once)
   {  Print("OK - ", TimeCurrent());
      print_once = false; }

}

Está no diário de bordo:

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: teste de peritos\IgorM\tst.ex5 de 2000.01.01 00:00 a 2019.10.03 00:00 começou com entradas:

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 saldo final 10000.00 USD

adicionar uma data à condição para iniciar os testes e treinar o NS, ou fazer como sugerido pelo administrador
 
Igor Makanu:

Coloquei tudo a funcionar, teste 2000 - 2019 em M15, código de especialista:

conseguiu-o no registo:

2019.10.04 22:15:19.567 Core 1 EURUSD,M15: teste de peritos\IgorM\tst.ex5 de 2000.01.01 00:00 a 2019.10.03 00:00 começou com entradas:

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 saldo final 10000.00 USD

adicionar a data a partir da qual pretende iniciar os testes na condição e ensinar o NS, ou fazer como sugerido por admin

Agora compreendo a sua ideia)

Isto é, não deve fazer o teste durante os últimos 2 meses, mas sim durante 3 anos, saltar todos estes 3 anos no OnTick e iniciar o cálculo apenas nos últimos 2 meses.

Sim - essa é a solução mais fácil. Obrigado!

 
elibrarius:

E os 100.000 bares M15 que pedi são cerca de 3 anos. Durante o primeiro ano as barras são copiadas, ou seja, 37.000 barras, e depois não estão no testador, esperar não vai ajudar.

Seria mais rápido trabalhar com o seu ficheiro de história em modo optimizador"Cálculos Matemáticos".

 
elibrarius:

Agora compreendo a sua ideia)

Isto é, o teste não deve ser realizado durante os últimos 2 meses, mas sim durante 3 anos, saltar todos esses 3 anos no OnTick e iniciar os cálculos apenas nos últimos 2 meses.

Sim - esta é a solução mais fácil. Obrigado!

Acrescentar tempo à condição

input int InpBars = 100000;
input datetime InpDataTest = D'2015.01.01 00:00'; 
void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   datetime t = TimeCurrent();
   if(bars < InpBars || t < InpDataTest  ) return;

   if(print_once)
   {  Print("OK, TimeCurrent() =  ", t);
      print_once = false; }

}

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: teste de peritos\IgorM\tst.ex5 de 2000.01.01 00:00 a 2019.10.03 00:00 começou com entradas:

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent()= 2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 saldo final 10000.00 USD



 
Igor Makanu:

adicionar tempo à condição

2019.10.04 22:36:42.729 Core 1 EURUSD,M15: teste de peritos\IgorM\tst.ex5 de 2000.01.01 00:00 a 2019.10.03 00:00 começou com entradas:

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent() = 2015.01.02 09:00: 00

2019.10.04 22:36:43.041 Core 1 saldo final 10000.00 USD



Sim, obrigado. Tudo funciona.

 
Aleksey Vyazmikin:

Seria mais rápido trabalhar com o seu ficheiro de história no modo"Cálculos Matemáticos" do optimizador.

Isto se estiver puramente na própria NS e olhar para o resultado.

Estou agora a testar o comércio, para que tanto os custos como os spreads sejam tidos em conta. O resultado disto é que o robô comercial está pronto para ser utilizado no testador e pode ser ligado a um comércio real.

 
elibrarius:

Bem, isso se estiver puramente na própria NS e a olhar para o resultado.

Estou agora a testar o comércio, para que tanto os custos como os spreads sejam tidos em conta. É por isso que estou interessado num robô pronto a usar que possa ver no testador e ligar ao comércio real.

Ainda não compreendo - será que os seus preditores precisam de mais profundidade de cálculo? Eu preciso mesmo de um - MA nos dias :) Estou apenas a começar os testes um ano antes e o comércio antes dessa data pode ser proibido...