Erros, bugs, perguntas - página 2684

 
fxsaber:

Não percebeu bem. É de facto pesquisável em qualquer Terminal. Mas só posso aceder à conta por mim próprio. Não em qualquer outro terminal.

É muito provável que o terminal que não está a ligar-se tenha colocado em cache antigos pontos de acesso e nenhum novo ponto de acesso (os corretores mudam as configurações dos pontos de acesso).

1) Já fez ligações (bem ou mal sucedidas) a Swissquote-Server num terminal sem ligação?

2) Ir para a janela abrir conta, introduzir "Swissquote-Server", premir Enter, esperar pelo sucesso e tentar ligar-se novamente

3) Este é um computador reinstalado/novo/não utilizado? Qual é o sistema operativo e quais são as actualizações actualizadas?

 
Renat Fatkhullin:

Muito provavelmente no terminal onde a ligação falha, os antigos pontos de acesso estão em cache e não há novos (os corretores mudam as configurações dos pontos de acesso).

1) Num terminal sem ligação, fez alguma ligação prévia (com ou sem sucesso) ao Swissquote-Server?

Não o fiz.

2) Ir para a janela abrir conta, introduzir "Swissquote-Server", premir Enter, esperar pelo sucesso e tentar ligar-se novamente.

Exactamente o que eu faço quando preciso de me ligar a um servidor que não está na lista. O servidor está listado, sem ligação.

3) Este é um computador reinstalado/novo/não utilizado? Que sistema operativo e quais são as actualizações?

Terminal nativo.

2020.03.26 08:05:40.967 Terminal        Swissquote Bank MT5 Client Terminal x64 build 2368 started for Swissquote Bank SA
2020.03.26 08:05:40.969 Terminal        Windows 7 Service Pack 1 build 7601, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:05:40.969 Terminal        C:\Program Files\Swissquote Bank MT5 Client Terminal


Terminal alienígena.

2020.03.26 08:06:51.678 ICMarkets - MetaTrader 5 x64 build 2368 started for International Capital Markets Pty Ltd.
2020.03.26 08:06:51.679 Windows 7 Service Pack 1 build 7601, Intel Core i7-2700 K  @ 3.50 GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:06:51.679 C:\Program Files\ICMarkets - MetaTrader 5


Funciona na mesma máquina. Se eu destruir a pasta config, a ligação é efectuada. Mas depois perco dados de todas as outras contas no Terminal de Investigação.


ZS Pode PM-me o endereço IP do servidor para que eu o possa experimentar directamente?

 
fxsaber:

Não o fiz.

É o que faço sempre quando preciso de me ligar a um servidor que não estava na lista. O servidor está listado, sem ligação.

Terminal nativo.


Terminal alienígena.


Funciona na mesma máquina. Se eu destruir a pasta config, a ligação vai. Mas depois perco dados de todas as outras contas no Terminal de Investigação.


ZS Pode PM-me o endereço IP do servidor para que eu o possa experimentar directamente?

Fiquei ligado sem qualquer problema:

2020.03.26 13:34:06.558 Network new demo account '6036452' opened on Swissquote-Server
2020.03.26 13:34:21.308 Network '8550475': disconnected from MetaQuotes-Demo
2020.03.26 13:34:22.540 HistoryCenter   delete old files from E:\MetaQuotes\MetaTrader 5\bases\Swissquote-Server\history\AEP, last access time 2018.03.02 18:42
2020.03.26 13:34:23.588 Experts automated trading is disabled because the account has been changed
2020.03.26 13:34:23.946 Network '6036452': authorized on Swissquote-Server
2020.03.26 13:34:23.946 Network '6036452': previous successful authorization performed from 176.49.173.218 on 2020.03.26 07:34:05
2020.03.26 13:34:25.751 Network '6036452': terminal synchronized with Swissquote Bank SA
2020.03.26 13:34:25.751 Network '6036452': trading has been enabled - hedging mode
2020.03.26 13:34:26.843 Network '6036452': scanning network for access points
2020.03.26 13:35:01.961 Network '6036452': scanning network finished
 
Artyom Trishkin:

Tenho tudo ligado sem qualquer problema:

Sim, a demonstração entra sem qualquer problema.

2020.03.26 08:42:07.401 new demo account '6036453' opened on Swissquote-Server
2020.03.26 08:42:09.188 '6036453': authorized on Swissquote-Server


No verdadeiro, não o faz.

2020.03.26 08:42:40.551 '6036453': disconnected from Swissquote-Server
2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server
 
fxsaber:

Sim, a demonstração entra sem qualquer problema.


Sobre o verdadeiro, não.

Havia dois servidores:

Eu criei a demonstração na primeira.

Talvez real no segundo?

 
Artyom Trishkin:

Havia dois servidores:

Criei uma demonstração sobre a primeira.

O mesmo.

Talvez real no segundo?

Havia um servidor comercial diferente no segundo.

 

Os rapazes ajudam por favor!

Não há muito tempo comecei a programar, recebi estes erros, diga-me do que se trata...

1. Usei MarketInfo(Symbol(),MODE_TICKVALUE). O meu par EURUSD no testador mostra o número 0,01, mas no terminal é 1.

2. iFechar,iAbrir,iAlto,iBaixo, por vezes, volta 0 quando o turno=1.


Obrigado

 

A questão da velocidade do ArrayResize()+reserva ainda me incomoda.
Desta vez, a questão diz respeito a conjuntos detipos de dados primitivos.

#define  K 1000
#define  M (1000 * K)

#define    SpeedTest(test_count,msg,EX_pref, EX_test, EX_post) {         \
               uint result = 0; ulong count=test_count;                 \
               for(ulong ii=0;ii<count&&!_StopFlag;ii++){               \ 
                   EX_pref                                              \
                   uint start=GetTickCount();                           \
                   EX_test                                              \
                   result += GetTickCount() - start;                    \ 
                   EX_post                                              \
               }                                                        \
               printf("%-60s: loops=%i ms=%u",msg,count,result);}
                                              
class A{
public:
   int data;
};


template<typename T>
void test1(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize all", typename(T)),
      {}
      ,
      {
         ArrayResize(class_array, array_size);
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, array_size, i);
            class_array[i-1] = NULL;
         }
      },
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

template<typename T>
void test2(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize one by one with reserved memory", typename(T)),
      {},
      {
         ArrayResize(class_array, array_size);         
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, i, i);
            class_array[i-1] = NULL;
         }
      },   
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

 


void OnStart()
{
  const int test_count = 1;
  const int array_size = 20*K*K;  
  
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<int>(test_count, array_size);              // Avg time: release( 120) / debug( 155)
   test2<int>(test_count, array_size);              // Avg time: release( 205) / debug( 235)
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<double>(test_count, array_size);           // Avg time: release( 155) / debug( 190)
   test2<double>(test_count, array_size);           // Avg time: release( 250) / debug( 260)
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<A*>(test_count, array_size);              // Avg time: release( 190) / debug( 200)
   test2<A*>(test_count, array_size);              // Avg time: release( 330) / debug( 340)
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
}

Em comparação com a versão anterior, o código foi ligeiramente melhorado:
- para ambos os testes o ArrayResize é garantido ser chamado o mesmo número de vezes, anteriormente o optimizador contribuiu...
- O tempo livre de ArrayFree é excluído do cálculo do tempo de execução;


Para tipos de dados primitivos ArrayResize()+reserve é executado mais de 3 vezes mais lentamente do que o habitual ArrayResize() (205 ms vs. 65 ms).
Isto é muito, por isso para Generic\ArrayList.mqh em chamadas de 20M para CArrayList::Adicionar a velocidade sem e com reserva de memória é 1,85 vezes diferente (170 ms vs 95 ms).
Algo está obviamente errado aqui.

Existe alguma forma de melhorar a velocidade para os tipos primitivos de funcionalidade ArrayResize()+reserve?
O que poderia ser uma perda tão grande aí?

Compreendo que a realidade pode ser muito mais complicada, mas existem apenas alguns controlos que afectam o resultado da execução:

IsDynamic == verdadeiro
IsIndexBuffer == falso
IsSetAsSerrias == falso
novo_tamanho > tamanho
new_size < capacidade
IsFundamental == verdadeiro (ou construtor e destruidor == 0)

Algumas verificações podem mesmo ser combinadas através de uma máscara de bits para acelerar a direcção principal, mais provável, da execução do código.
E nos raros casos em que a verificação da bitmask falhar, especificar adicionalmente qual das bandeiras afectou o resultado...

 
fxsaber:

Sim, a demonstração entra sem qualquer problema.

Sobre o verdadeiro, não.

2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server

Bom dia,

1. Esta conta está presente na lista de contas no terminal (explorador), onde não está ligada à conta real?

Ou seja, esta conta xxxxxxxx é mostrada no navegador?


2. Se houver uma conta xxxxxxxx, ela é exibida com o nome YYYYY após dois pontos (não apenas como um número)?

3. se a conta xxxxxxxx estiver presente, então se a apagar (no navegador através do comando Delete menu) e voltar a ligar, então a ligação é bem sucedida?


Obrigado

 
Anton:

1. No terminal (terminal de pesquisa) onde a ligação à conta real não é feita, esta conta está presente na lista de contas?

Ou seja, se esta conta xxxxxxxx é exibida no navegador:

Apresenta xxxx.

2. Se a conta xxxxxxxx estiver presente, é exibida com o nome YYYYY após dois pontos (e não apenas como um número)?

Sem YYYYY e sem cólon.

3. Se eu tiver uma conta xxxxxxxx, se eu a apagar (no navegador via Delete) e voltar a ligá-la, será que ela se ligará?

Entendido!


Parece que a primeira vez que me liguei, acabei de introduzir o nome do servidor. Esta entrada apareceu no navegador, mas não havia dados do servidor de comércio e um espaço em branco foi para lá. E mesmo depois de forçar os dados através de uma pesquisa para essa conta, um espaço em branco continuava a ser substituído.


Obrigado!


SZZ Sobre o tema.

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais

Nova versão da plataforma MetaTrader 5 construída 2280

fxsaber, 2020.02.19 11:32

Ao ligar a uma conta de negociação existente, se eu especificar um nome de servidor de negociação errado, a conta é movida no Navigator de tal forma, que se pensaria que simplesmente desapareceu.


Ao iniciar sessão no MetaQuotes-Demo, especificar o endereço do servidor MetaQuotes-Demo2. Veja o que acontece no Navegador. Favor aplicar esta regra às contas existentes apenas após uma ligação bem sucedida.

Cadeia de pesquisa: Uluchshenie 005.