Erros, bugs, perguntas - página 2206

 
Alexander Nikolaev:
Quem sabe porque não consigo aceder às contas demo recentemente criadas, que foram criadas directamente no terminal MT4, no servidor Metaquotes Demo? Criei um há uma semana. Nos primeiros 2 dias funciona, mas após algum tempo a conta desaparece, como se a palavra-passe se tornasse incorrecta (embora tenha sido copiada, não a consegui introduzir incorrectamente) e tenho de reabrir a conta para testar o Expert Advisor. É realmente necessário criar uma nova conta todas as semanas?
é assim há muito tempo, se não houver actividade na conta, ela é encerrada. criar uma nova e não se preocupar com isso.
 
Denis Sartakov:

Escrevi recentemente uma função como esta, por isso tente descobrir por si próprio,

Se não funcionar, eu explico.

obrigado

 

outra pergunta:

a descrição deCHART_IS_MAXIMIZED eCHART_IS_MINIMIZED não diz que estas propriedades são apenas de leitura, mas ChartSetInteger(ChartID(),CHART_IS_MAXIMIZED,true); não funciona, qual poderá ser o problema???

 

Porque não se compila?

template <typename T>
void f(T &t)
{
   t.f();
}

void OnStart()
{
   class Q
   {
   public:
      void f() {}
   }q;
   
   f(q);
}

Versões mais antigas do compilador comeram tais construções finas, levaram a recompilar código e erro válidos anteriormente. É um acidente ou foi intencionalmente interrompido?

 
pavlick_:

Porque não se compila?

As versões mais antigas do compilador estavam bem com tais construções, recompilei o código previamente válido e há um erro. É um acidente ou foi intencionalmente interrompido?

mas podemos criar classes dentro de funções de acordo com a especificação da língua?

 
Konstantin:

mas pode criar classes dentro das funções de acordo com a especificação da língua?

Que especificação linguística? Mcl não está de todo bem documentado, enquanto em c++ é uma prática normal, a partir da referência:

Aulas locais

Uma declaração de classe pode aparecer no namespace scope (caso em que define uma classe comum), dentro de outra definição de classe (caso em que define uma classe aninhada), e dentro do corpo de uma função, caso em que define uma classe local. O nome de tal classe só existe dentro do âmbito da função, e não é acessível fora.

http://en.cppreference.com/w/cpp/language/class

 

A resposta é o silêncio, como de costume. Na verdade é fácil contornar o problema - em vez de uma colocação elegante dentro da função, coloco-a no exterior com um nome intimidante interno__Chart_bar_shift_Comp. Mas a questão é diferente - eles apenas cortam uma tal construção. Isto é, não há garantias de que o meu código será compilado amanhã. Pode, de alguma forma, com teclas para seleccionar o dialecto -std=mql18, por exemplo. Mas não, não se preocupe com a retrocompatibilidade. Tenho dificuldade em imaginar que isto seja possível em alguns gcc.

Acho que um simples mql4 de scripting foi bastante suficiente para uma plataforma de comércio. Ou melhor ainda, importar plugins (em bibliotecas dinâmicas) com scripts/especialistas. Mas não, precisa da sua própria, como se costuma dizer aqui, "infra-estrutura", onde é grande e importante.

 
pavlick_:

De acordo com que especificação linguística? Mcl não está de todo bem documentado, mas em c++ é prática normal, a partir do livro de referência:

Aulas locais

Uma declaração de classe pode aparecer no namespace scope (caso em que define uma classe comum), dentro de outra definição de classe (caso em que define uma classe aninhada), e dentro do corpo de uma função, caso em que define uma classe local. O nome de tal classe só existe dentro do âmbito da função, e não é acessível fora.

http://en.cppreference.com/w/cpp/language/class

encontrei uma discussão algures que não está prevista na especificação mql5, verifiquei no fórum, houve também uma discussão sobre lambas, que não estão previstas

 
pavlick_:

A resposta é o silêncio, como de costume. Na verdade é fácil contornar o problema - em vez de uma colocação elegante dentro da função, coloco-a no exterior com um nome intimidante interno__Chart_bar_shift_Comp. Mas a questão está noutra coisa - eles apenas cortam uma tal construção. Isto é, não há garantias de que o meu código seja compilado amanhã. Pode, de alguma forma, com teclas para seleccionar o dialecto -std=mql18, por exemplo. Mas não, não se preocupe com a retrocompatibilidade. Mal consigo imaginar que isso seja possível em alguns gcc.

Provavelmente, um simples guião mql4 era bastante suficiente para uma plataforma de comércio. Ou melhor - importar plugins (em bibliotecas dinâmicas) com scripts/especialistas. Mas não, precisa da sua própria, como se costuma dizer aqui, "infra-estrutura", onde é grande e importante.

Para ser honesto, não percebo porque o fazem. É mais fácil colocar todas as entidades auxiliares numa listagem separada do código fonte, por exemplo, util.mqh

 
Konstantin:

Para ser honesto, não entendo porquê, é mais fácil colocar todas as entidades auxiliares numa listagem separada do código fonte, por exemplo, util.mqh

Este é um predicado para a pesquisa binária, que não é universal e é usado apenas uma vez em uma função, porque devo colocá-lo em algum lugar? Por exemplo, temos um conjunto de estruturas (sem operador de comparação, não podem ser comparadas de forma desajeitada usando <, ou a condição de comparação é muito complicada), e queremos encontrar um elemento através da pesquisa binária. Na biblioteca mais, as funções do algoritmo levam um functor (convenientemente passado como lambda), dentro do qual comparamos elementos de matriz. Uma solução muito elegante, na minha opinião.

int main()
{
    typedef pair<int, double> myPair; // typedef to shorten the type name
    vector <myPair> vec(5);

    myPair low_val; // reference value (set this up as you want)
    auto it = lower_bound(vec.begin(), vec.end(), low_val, 
        [](myPair lhs, myPair rhs) -> bool { return lhs.second < rhs.second; });
}

Mas devido às limitações do µl, foi criada uma instância da classe de base.

Razão: