Erros, bugs, perguntas - página 1778

 
Evgeny Chernyshev:
Boa tarde!

Este é um comportamento padrão. A contagem decrescente começa a partir da barra actual que está em construção. Assim, com o aparecimento de uma nova barra, na ausência de autoscrolling, o seu número é incrementado por um.
Ok, então acrescente algures na documentação que não é a "primeira barra visível", mas a primeira barra a partir da actual (inacabada).
 

Erro durante a execução como resultado da compilação

#define MACRO( x )      #x
void OnStart()
{
        Print( MACRO( "1\0" )); //равносильно Print( "\"1\\0\"" );
}

Resultado : 1

Esperado: "1\0".

2 erros: Faltam aspas " e caracteres mal interpretados

e depois

void OnStart()
{
        Print( MACRO( 1\0 )); //Error: '\' - illegal escape sequence
}
compilar erro de tempo enquanto que o resultado esperado era "10".
 
Vladislav Andruschenko:

Sim, mas não se pode explicar isso aos clientes, pois não?

Imagine que o perito está a trabalhar, funciona, vai dormir, vai dormir, acorda e o perito não está a trabalhar, porquê? Porque o temporizador desliga, e o que fazer, quem é o culpado?

Ajuda a reiniciar com um pequeno atraso, algo como isto:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
 
Yury Kirillov:

Ajuda a recomeçar com um ligeiro atraso, de certa forma:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
Descobri, por experiência, que o temporizador desliga quando a Internet falha. O terminal congela e o temporizador desliga. Isto é, pode desligar sem motivo. Quando a Internet é lenta.

Por isso, fi-lo de forma diferente, nomeadamente. Executar o temporizador num tick.
 

Erro de execução

typedef void (*fn)();
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        B b;
        b.a();
}

Resultado: chamada de ponteiro de função inválido; execução de B::a() era esperada

e aqui -> compilar erro

typedef void (*fn)( int );
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ );  }
};
void OnStart()
{
        B b;
        b.a(); //Error: 'a' - wrong parameters count
}
 
O MT4 salta eventos de utilizadores em pacotes. Isto é uma característica ou um bug?
 
Andrey Dik:
O MT4 está a saltar eventos de utilizadores em pacotes. Isto é um insecto ou um insecto?


acabou de ser verificado no tablier - tudo está bem, todos os eventos estão a funcionar bem

 
Vladislav Andruschenko:

acabou de ser verificado no tablier - tudo está bem, todos os eventos estão a funcionar normalmente

Já executei espiões em alguns símbolos e a EA recebe eventos destes espiões quando os carrapatos chegam. No MT5 todos os eventos têm tempo para vir, mas no MT4 posso ver congelamentos por vezes por um segundo ou mais.
Nada pesado está a correr, um gráfico está aberto.
 
Não consigo obter um valor adequado de exigência de margem para abrir uma posição. Eu recebo o mesmo valor para todos os símbolos, corretores diferentes têm valores diferentes, um mostra 0,0 para todos os símbolos, outro mostra 100000,0.

O que se passa com o MT4? Ganhar 10 64, MT4 construir 1031

fazendo-o:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
Ou o MT4 está totalmente lixado, ou estou completamente desaprendido e já não compreendo MT4.

Aqui estão os valores obtidos de 2 corretores:


2017.01.31 22:15:59.312 Script MarginReq AUDCHF,M15: retirado
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: razão uninit 0
2017.01.31 22:15:59:59310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:15:59.309 MarginReq AUDCHF,M15: inicializado
2017.01.31 22:15:59.300 MarginReq AUDCHF,M15 entradas: Input1=0;
2017.01.31 22:15:57.899 Script MarginReq AUDCHF,M15: carregado com sucesso
2017.01.01.31 22:13:38.077 Script MarginReq AUDCHF,M15: retirado
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: razão uninit 0
2017.01.31 22:13:38:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: inicializado
2017.01.01.31 22:13:38.066 MarginReq AUDCHF,M15 entradas: Input1=0;
2017.01.31 22:13:36.806 Script MarginReq AUDCHF,M15: carregado com sucesso
Isto é uma treta.
 
Andrey Dik:
Não consigo obter um valor adequado da margem necessária para abrir uma posição. Eu recebo o mesmo valor para todos os símbolos, corretores diferentes têm valores diferentes, um mostra 0,0 para todos os símbolos, outro mostra 100000,0.

O que se passa com o MT4? Ganhar 10 64, MT4 construir 1031

fazendo-o:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
Ou o MT4 está totalmente lixado, ou estou completamente desaprendido e já não compreendo MT4.

Aqui estão os valores obtidos de 2 corretores:


2017.01.31 22:15:59.312 Script MarginReq AUDCHF,M15: retirado
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: razão uninit 0
2017.01.31 22:15:59:59310 MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:15:59.310 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:15:59.309 MarginReq AUDCHF,M15: inicializado
2017.01.31 22:15:59.300 MarginReq AUDCHF,M15 entradas: Input1=0;
2017.01.31 22:15:57.899 Script MarginReq AUDCHF,M15: carregado com sucesso
2017.01.01.31 22:13:38.077 Script MarginReq AUDCHF,M15: retirado
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: razão uninit 0
2017.01.31 22:13:38:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 0,0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075 MarginReq AUDCHF,M15: inicializado
2017.01.01.31 22:13:38.066 MarginReq AUDCHF,M15 entradas: Input1=0;
2017.01.31 22:13:36.806 Script MarginReq AUDCHF,M15: carregado com sucesso
Isto é uma treta.

tente

AccountFreeMarginCheck