Erros, bugs, perguntas - página 2138

 

Penso que há um problema com o carregamento do histórico.

Ontem esperei cerca de 30 minutos, depois mudei a minha conta e hoje decidi verificar duas vezes:


  1. Abro uma conta de rublo RUR
  2. no testador, estou a fazer um teste no EURUSD
  3. terminal está a tentar carregar as cotações do EURRUR
  4. Sem citações, o provador congelou



Lutei de alguma forma, depois decidi descarregar a história, que não existe

2018.02.21 15:58:48.244 Tester  EURRUR: history data begins from 2018.02.21 00:00
2018.02.21 15:58:48.344 Tester  USDRUR: preliminary downloading of M1 history started
2018.02.21 15:58:49.244 Tester  USDRUR: 20% history downloaded
2018.02.21 15:58:49.544 Tester  USDRUR: 30% history downloaded
2018.02.21 15:58:49.844 Tester  USDRUR: 40% history downloaded
2018.02.21 15:58:50.144 Tester  USDRUR: 51% history downloaded
2018.02.21 15:58:50.444 Tester  USDRUR: 61% history downloaded
2018.02.21 15:58:50.657 Tester  USDRUR: 71% history downloaded
2018.02.21 15:58:51.057 Tester  USDRUR: 81% history downloaded
2018.02.21 15:58:51.357 Tester  USDRUR: 91% history downloaded
2018.02.21 15:58:51.657 Tester  USDRUR: preliminary downloading of M1 history completed in 0:03.417
2018.02.21 15:58:51.657 Tester  USDRUR: history data begins from 2016.12.26 00:00
2018.02.21 15:58:51.661 Core 1  agent process started
2018.02.21 15:58:52.095 Core 1  connecting to 127.0.0.1:3000
2018.02.21 15:58:52.095 Core 1  connected
2018.02.21 15:58:52.103 Core 1  authorized (agent build 1755)
2018.02.21 15:58:52.105 Tester  EURUSD,H1 (Alpari-MT5-Demo): testing of Experts\Exp - TickSniper PRO FULL v36 20180220.ex5 from 2018.01.01 00:00 to 2018.02.10 00:00
2018.02.21 15:58:52.891 Core 1  common synchronization completed
2018.02.21 15:58:53.064 Tester  quality of analyzed history is 100%
2018.02.21 15:58:54.393 Core 1  EURRUR: history synchronization started



Está tudo bem em USDJPY

 

É uma situação parva com barras de caracteres personalizadas. Posso escrever para a história (CustomRatesReplace) quantos bares quiser, mas não consigo lê-los (CopyRates) aqui (TERMINAL_MAXBARS).

Temos de resolver esta situação errada de alguma forma. Veja perfeitamente o início da História local através de

SeriesInfoInteger(_Symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE);

Mas para chegar a ele.

Talvez para dar a possibilidade de mudar TERMINAL_MAXBARS via MQL? Ou fazer uma sobrecarga do CopyRates sem limite de MaxBars?

 

Notou este comportamento do MT5 durante muito tempo, mas agora decidiu escrever.

Estou a trabalhar em ME e MT5+tester. Por vezes não consigo ligar-me ao Agente e preciso de reiniciar o Terminal. Habituei-me a este insecto, por isso não se trata disso.

Assim, fecho o Terminal e carrego na F4 em ME para abrir o Terminal. E é aqui que começam alguns disparates.

ME entra várias vezes num estado de "Não Resposta". O terminal não arranca. Após alguns segundos, volto a premir F4 - a reacção é a mesma de antes.

Como resultado, em 20 segundos (mínimo) numa máquina não fraca (muita memória, SSD, 95% sem CPU) é lançado o terminal.

Se o compararmos com o MT4 - é o céu e a terra. O MT4 é lançado quase instantaneamente por F4 de ME. MT5 - lança como uma aplicação super crua.

 
fxsaber:

É uma situação parva com barras de caracteres personalizadas. Posso escrever para a história (CustomRatesReplace) quantos bares quiser, mas não consigo lê-los (CopyRates) aqui (TERMINAL_MAXBARS).

Temos de resolver esta situação errada de alguma forma. Veja perfeitamente o início da História local através de

Mas para chegar a ele.

Talvez fosse possível mudar TERMINAL_MAXBARS via MQL? Ou fazer uma sobrecarga do CopyRates sem limite de MaxBars?

SD pensa que não há problema quando não se consegue levar o histórico das citações mais longe do que MaxBars. Este exemplo (um dos muitos cenários onde a história necessária, que já está na máquina local)

O pressuposto é que o limite é estabelecido para poupar recursos. E com razão!

Imaginemos um Produto de Mercado, que é concebido para calcular as estatísticas da equiti-line.

Acontece que o utilizador, antes de aplicar este produto, terá de fazer UnlimitBars. E depois de o aplicar - para o devolver.

não impressionado. A muleta permanece viva!

 

Os indicadores nem sempre retornam ACCOUNT_LOGIN ao iniciar o terminal

0 11:00:01.880 Testador de indicador personalizado EURUSD,H1: carregado com sucesso
0 11:00:01.887 tester EURUSD,H1: OnInit 0 < AccountInfoInteger(ACCOUNT_LOGIN) devolvido 0
0 11:00:01.887 testador EURUSD,H1: inicializado
0 11:00:01.887 tester EURUSD,H1: OnCalculate 0 < ---- AccountInfoInteger(ACCOUNT_LOGIN) devolvido 0
0 11:00:05.980 tester EURUSD,H1: OnCalculate 0 < AccountInfoInteger(ACCOUNT_LOGIN) devolvido 0
0 11:00:06.654 tester EURUSD,H1: OnCalculate 0 < AccountInfoInteger(ACCOUNT_LOGIN) devolvido 0
0 11:00:07.030 tester EURUSD,H1: OnCalculate 442394 < AccountInfoInteger(ACCOUNT_LOGIN) número de conta devolvida
0 11:00:07.040 tester EURUSD,H1: OnCalculate 442394 < AccountInfoInteger(ACCOUNT_LOGIN) número de conta devolvida

Código fonte

//+------------------------------------------------------------------+
//|                                                       tester.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnInit "+text);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   string text=IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
   Print("OnCalculate "+text);
   return(rates_total);
  }
//+------------------------------------------------------------------+

Posso estar errado mas na minha opinião nenhum programa pode funcionar se o número da conta não for conhecido.....

 
Vladimir Pastushak:

Posso estar errado, mas na minha opinião nenhum programa pode funcionar se o número de conta não for conhecido.....

Nunca utilizo onúmero de conta em EAs e indicadores, excepto para o Report-dealing.

Mas concordo que mesmo offline o número de conta (a última ligação antes de o terminal ser desligado) deve estar sempre disponível.

 
fxsaber:

Nunca utilizoo número de conta em EAs e indicadores, excepto para Report-doors.

Mas concordo que mesmo offline o número de conta (última ligação antes do terminal ter sido desligado) deve estar sempre disponível.

Também online. É sempre necessário saber e compreender sob que conta o que aconteceu e em que momento.

Como se pode executar um programa se não se sabe para que conta se faz alguma coisa.

Isto não é "sharash montash", as pessoas podem ter milhões nas suas contas aqui....

 
Vladimir Pastushak:

Também online. É sempre necessário saber e compreender sob que conta o que aconteceu e em que momento.

Como se pode executar um programa se não se sabe para que conta se está a fazer alguma coisa.

Isto não é "sharash montash", as pessoas podem ter milhões nas suas contas aqui....

99% dos EAs não analisam números de contas.

 
fxsaber:

99% dos conselheiros não analisam o número de conta

porque 99,99% dos EAs são "sharash montash" ....

Tenho a certeza de que cada EA de qualidade deve manter o seu próprio registo de operações, quer durante a operação, quer ao descarregar a EA, o utilizador deve obter o registo de operações a pedido. Em caso de erros críticos, é obrigatório!

Por erro crítico, quero dizer desconexão, solicitações, código lento.

 
Vladimir Pastushak:

porque 99,99% dos EAs são "sharash montash" ....

Eu escrevo exactamente esse tipo de EAs.