Características da linguagem mql4, sutilezas e técnicas - página 4

 
Alexey Kozitsyn:
Uau, este é um ponto sutil. Eles o escreveram no SD?

O autor escreveu. As capacidades do idioma são há muito inconsistentes com a antiga documentação, ou seja, coisas não documentadas são realmente usadas, o que é uma estranha afirmação a ser feita de acordo.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Como comparar rapidamente o dobro e a QNaN ?

fxsaber, 2016.10.11 15:56

Deixado despercebido.

double QNaN   =Nan(0x7FF7000000000000);  

O valor inicial de uma variável global pode agora ser declarado através de uma função!

O mesmo vale para o resto das variáveis estáticas.

Estranho que os desenvolvedores tenham ficado em silêncio sobre esta inovação.


Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
Há um ponto sutil sobre estática em ambos os idiomas

Alexey Kozitsyn:
Uau, que belo ponto... Você o escreveu em SD?

Não faz mal que a ajuda diga que uma variável estática... leia-o por si mesmo.

Uma variável estática pode ser inicializada por uma constante ou uma expressão constante apropriada a seu tipo, ao contrário de uma simples variável local que pode ser inicializada por qualquer expressão.


Mas não uma função.

É assim que funciona

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully
Статические переменные - Переменные - Основы языка - Справочник MQL4
Статические переменные - Переменные - Основы языка - Справочник MQL4
  • docs.mql4.com
Статические переменные - Переменные - Основы языка - Справочник MQL4
 
Alexey Viktorov:

Não faz mal que a ajuda diga que uma variável estática... leia-o por si mesmo.

Mas não uma função.

É assim que funciona.

Então o compilador deve dar um erro...
 
Alexey Viktorov:

Não faz mal que a ajuda diga que uma variável estática... leia-o por si mesmo.

Posso dar um link para a documentação de uma vez e um link para uma discussão de código de seis meses com os desenvolvedores? Siga seus próprios conselhos.

Especialmente com constante estática.

 
fxsaber:

É correto estabelecer um link para a documentação de uma só vez e estabelecer um link para uma discussão de código de seis meses com os desenvolvedores... siga seus próprios conselhos.

Especialmente com constantes estáticas.

Não olhei para o link porque não conheço aglitskiy, e a tradução de mec. às vezes é mais incompreensível do que chinês/japonês com uma pitada de coreano.

E você não precisa ser tão sensível. Não há uma ponta de censura em minhas palavras de que você não prestou atenção a tal bagatela.

 
Alexey Viktorov:

Não olhei para o link devido à minha falta de conhecimento da língua aglitsky, e a tradução em inglês é às vezes mais incompreensível do que a tradução em chinês/japonês com uma pitada de coreano.

Oh, e não há necessidade de ser tão mórbido com isso. Minhas palavras não contêm um sinal de reprovação de que você não prestou atenção a tal bagatela.


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

Características da linguagem mql4, sutilezas e truques

fxsaber, 2017.04.29 11:07

As características da linguagem têm sido há muito inconsistentes com a documentação antiga, ou seja, na verdade são usadas coisas não documentadas, afirmações sobre as quais são, portanto, estranhas de se fazer.

 
Alexey Kozitsyn:
Então o compilador deve dar um erro...

Talvez devesse, mas... temos o que temos.

 
fxsaber:

Não era assim na documentação antiga?


ps. Foi um longo atraso até que eu entendesse o significado dessas referências.

Mas aqui vai uma refutação à declaração

fxsaber:

Deixado despercebido.

O valor inicial de uma variável global pode agora ser declarado através de uma função!

O mesmo é válido para o resto das variáveis estáticas.

É estranho que os desenvolvedores estejam em silêncio sobre esta inovação.

Ou se trata de algo completamente diferente? Declare ou inicialize?
 
static const bool IsTester = (::MQLInfoInteger(MQL_TESTER) || ::MQLInfoInteger(MQL_OPTIMIZATION) ||
                              ::MQLInfoInteger(MQL_VISUAL_MODE) || ::MQLInfoInteger(MQL_FRAME_MODE));
 
fxsaber:

Não posso verificar agora, mas a MQL_TESTER parece incluir todo o resto. Mas tudo o mais separadamente não inclui um ao outro.

Ou seja, para entender que o programa funciona no testador (em qualquer um dos modos listados), basta verificar a primeira bandeira.

Razão: