Erros, bugs, perguntas - página 2751

 
Igor Makanu:

é uma espécie de paradoxo que haja acesso a _Symbol .... mas nenhum acesso a

const MqlTick _Tick; // Текущий _Symbol-тик.

embora a MQL esteja posicionada como uma linguagem para o desenvolvimento de estratégias comerciais

_Symbol é uma constante, por isso não há problema com ela (embora seja mais correcto chamar-lhe Symbol()). Um tick é uma variável. Como imagina que é declarada como constante, mas o seu valor muda?

 
Alexey Navoykov:

Como é que o tem declarado como constante, mas o seu valor muda.

Infelizmente, eu sou como tu... O mesmo idealista, para quem é mais lógico e compreensível escrever em VS C# - aí o compilador não permite separar um conceito lógico de constante da verificação da máquina de C++ antes da compilação

não hesitou em fazer perguntas

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412


gist - é tudo lógico em C++ ;)

 
Alexey Navoykov:

Não precisa disto ***. _Símbolo é uma constante, por isso não há problema com ele(embora seja mais correcto chamar Símbolo()).

O que há de errado em escrevê-lo para um utilizador?

const string _Symbol = ::Symbol();

E um tick é uma variável - como imagina que é declarada como const, mas o seu valor muda.

Oferta/Ask em MT4. Naturalmente, RefreshRates() está lá.


Recentemente, descobriu-se um símbolo em que os Dígitos foram incorrectamente colocados. Pedi ao meu corretor que o corrigisse. Ele fê-lo na mosca. Não procurou se mudou o valor da variável _Dígitos e Dígitos(). Mas apenas o facto de o símbolo poder mudar os seus valores na mosca.

 
Caros programadores, é possível fazer com que a janela gráfica se pareça com outras janelas, como em WIN 10? Alternativamente, existe a possibilidade de "repintar" a moldura da janela da carta, e a moldura terminal em geral, com cor preta.
Dependendo do esquema de cores, por exemplo. Molduras brancas largas em tabelas pretas são irritantes, irritantes e impedem de enriquecer. Por favor!!!
 
Igor Makanu:

Infelizmente, eu sou como tu... Sou o mesmo idealista que acha mais lógico e compreensível escrever em VS C# - o compilador lá não permite separar a noção lógica de constante da verificação da máquina de C++ antes da compilação

não hesitou em fazer perguntas

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412

No primeiro caso tem uma variável estática, não um membro da classe, pelo que a constante não tem nada a ver com ela.

 
Alexey Navoykov:

Não precisa disto ***. _Symbol é uma constante, por isso não há problema com ela (embora seja mais correcto chamar Symbol()). Um tick é uma variável. Como imagina que é declarado como const, mas o seu valor muda.

Mistura-se constância do lado do MQL e do lado do núcleo. A essência da declaração de uma estrutura com o modificador constante é que o código MQL não pode modificá-la. Por analogia, pode descrever um método de classe const, que impede o objecto de mudar neste método, mas não significa que o próprio objecto não possa mudar o seu estado por outras condições.

 

Porque não consigo ver as variáveis terminais globais no testador em modo visual (emulado, é claro)?

Será que as variáveis terminais globais funcionam de todo no testador?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Andrey Dik:

Porque não consigo ver as variáveis terminais globais no testador em modo visual (emulado, é claro)?

Será que as variáveis terminais globais funcionam de todo no testador?

Sempre foi possível (F3). Eles funcionam.

 
Alexey Navoykov:

No primeiro caso, está a mudar uma variável estática, não um membro de uma classe, pelo que a constante não tem nada a ver com ela.

Deverá este guião devolver a soma = 0 ?

ou este guião deve sequer devolver um erro de compilação?

void OnStart()
{
   int sum = 0;
   for(int i = 0; i < 3 ; i++)
   {
      const int j = f(i);
      sum += j * i;
   }
   printf("sum = %i", sum);
}
//+------------------------------------------------------------------+
int f(int v)
{
   return(v);
}
//+------------------------------------------------------------------+
 
Igor Makanu:

se a soma de retorno do guião = 0 ?

Ou será que este guião deve sequer devolver um erro de compilação em tempo de compilação?

Pelo menos faça um debugger antes de escrever declarações ridículas.
No segundo laço i == 1 e j == 1, e no terceiro e assim por diante, ambos são mais um.