Erros, bugs, perguntas - página 1174

 

Troquei os computadores no trabalho ontem de Windows XP/32 para Win7/64. Antes disso, negociava normalmente no MT4 no trabalho, códigos actualizados desde o armazenamento e de volta ao armazenamento. Agora posso usar o MT4 no meu 7, o meu proxy foi renovado, assim como o login e palavra-chave da comunidade. O problema é que não consigo sincronizar códigos com o MetaEditor 4. No meu perfil tenho"Ligar armazenamento" verificado.

Hoje mudei a senha na comunidade, instalei o segundo MT4 em pasta diferente, adicionei proxy, novo login e senha, o comércio está a decorrer, vejo todos os serviços MQ, mas não há sincronização com o armazenamento, não consigo ligar. Por favor, informe onde mais poderia estar o problema.


 
paladin800:

Troquei os computadores no trabalho ontem de Windows XP/32 para Win7/64. Antes disso, negociava normalmente no MT4 no trabalho, códigos actualizados desde o armazenamento e de volta ao armazenamento. Agora posso usar o meu mt4 no 7, a minha conta proxy é nova, a conta da comunidade e a palavra-passe também são novas. O problema é que não consigo sincronizar códigos com o MetaEditor 4. No meu perfil tenho"Ligar armazenamento" verificado.

Hoje mudei a senha na comunidade, instalei o segundo MT4 em pasta diferente, adicionei proxy, novo login e senha, o comércio está a decorrer, vejo todos os serviços MQ, mas não há sincronização com o armazenamento, não consigo ligar. Por favor, informe onde mais poderia estar o problema.


Reinstalar o meu terminal MT4 com direitos de administrador e executar o terminal MT4 com direitos de administrador. MT4 no Vista/8/8.1 desta forma vê tanto o armazenamento como a pasta com os seus códigos e guarda todas as definições dos gráficos.
 
barabashkakvn:
Reinstalar o terminal MT4 com direitos de administrador e executar o terminal MT4 com direitos de administrador. MT4 no Vista/8/8.1 com este método vê tanto o armazenamento como a pasta com os seus códigos e guarda todas as configurações de gráficos.
Estou a ver. Estou a trabalhar em forex aqui discretamente no trabalho, admin (esperemos) não sabe, por isso com direitos de admin não vai durar. O problema não é crítico, vou trabalhar via pen drive. Obrigado pelo esclarecimento.
 
paladin800:
Estou a ver. Estou aqui a trabalhar em forex às escondidas, o administrador (esperemos) não sabe, por isso não será capaz de manter os direitos de administrador. O problema não é crítico, vou trabalhar via pen drive. Obrigado pelo esclarecimento.
Também se pode alugar um VPS. Depois pode iniciar sessão através de uma ligação remota ao computador e sem problemas com os direitos de administrador.
 
compilar erro, construir 969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

Surge porque na nova construção

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
quem estou a interromper ?
int ArraySize(...);

Porque é que o mudaria se a ajuda fosse silenciosa e tais mudanças pudessem afectar os cálculos? E ninguém notaria sequer

 
A100:
Erro de compilação, construção 969B porque na nova construção e quem é interrompido ?

Porquê mudá-lo quando a ajuda é silenciosa e tais mudanças podem afectar os cálculos?! e ninguém notaria sequer

A ajuda apenas atrasa sempre um pouco. claro que o tamanho da matriz é mais razoável, porque o tamanho não pode ser negativo de qualquer forma // e ulong seria ainda melhor :)
 
Outra coisa ilógica é que
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

Acontece que o ArraySize foi alterado, mas o ArrayResize não foi - alterado? Qual é a diferença fundamental?

A diferença é esta

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

Acontece que não se pode alterar o tipo de retorno em ArrayResize (por causa de '-1'). Bem, se não pode mudar o tipo ArrayResize, porque deve mudar o tipo ArraySize?

 

Esta é a situação. Preciso de ter um consultor especializado no EURNZD durante um par de anos. Já apaguei todo o histórico para o símbolo, carreguei-o novamente - o resultado é o mesmo:

HistoryCenter: 5240 bars imported in 'EURNZD60'

Estamos apenas em Setembro de 2013. O terminal não permite rebobinar a carta. Quando abro o centro de história e clico em Download recebo a mensagem "Não há novos dados para um símbolo EURNZD". Não me interessa se está escrito incorrectamente, mas como posso obter citações? Será que o meu corretor não tem realmente um historial? Não sei, nunca encontrei quaisquer problemas com outros símbolos.

P.S. É isso mesmo, a questão é eliminada. Depois de ter desistido do EURNZD e descarregado o GBPAUD, de repente este milagre da tecnologia viu novos dados para o EURNZD. Quem pode estar numa situação semelhante - então não se esqueça de "dançar com Tamborine" e da necessidade de provocar persistentemente o terminal de formas diferentes. ;-)

P.P.S. Agora aconteceu de novo o mesmo ao AUDNZD. Tive de clicar estupidamente Descarregar um monte de vezes seguidas até ver os dados de repente.

 
MetaDriver:
A ajuda é sempre um pouco atrasada. claro que o tamanho da matriz é mais inteligente, uma vez que o tamanho não pode ser negativo de qualquer forma // e ulong seria ainda melhor :)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

Ocomprimento da corda também não pode ser negativo, mas faz mais sentido usar int para denotar comprimento/tamanho - por uma simples razão que funciona (pesquisa, cálculo, etc.) geralmente retorna comprimento/tamanho, ou -1 em caso de falha, o que torna o tratamento de erros muito mais fácil.

 
A100:
Erro de compilação, construir 969
...
Porquê mudá-lo quando a ajuda é silenciosa e tais mudanças podem afectar os cálculos?! E ninguém vai sequer reparar nisso

Em relação ao ArraySize, levantei um problema semelhante na MQL4 no outro dia: https://www.mql5.com/ru/forum/152471. Tanto quanto sei, tudo deveria ser o mesmo na MQL5.

Talvez, a minha mensagem tenha sido aí considerada :) Relativamente a este problema, o Service Desk respondeu que a razão era o funcionamento incorrecto do optimizador e que este mudará o tipo de construção para novo. Na verdade é agora não documentado :) Eles também o mudarão para o ArrayResize, mas aconselhei-os a mudá-lo para ulong, caso contrário terão de regressar a este problema devido à falta de valores de 32-bit quando armazenam grandes volumes.

E quanto ao valor -1 sobre o erro, não deve haver qualquer problema com ele, porque: (int)-1 = (uint)-1 = 0xFFFFFFFFFFFF = UINT_MAX, ou seja, a representação de bits é a mesma. Embora a operação de comparação dê um resultado diferente, ou seja, se assim fosse no código

if (ArrayResize(...) < 0) ...

tornar-se-á incorrecto.

Razão: