Caratteristiche del linguaggio mql4, sottigliezze e tecniche - pagina 4

 
Alexey Kozitsyn:
Wow, questo è un punto sottile. L'hanno scritto nella SD?

L'autore ha scritto. Le capacità del linguaggio sono state a lungo incoerenti con la vecchia documentazione, cioè le cose non documentate sono effettivamente utilizzate, che è una strana pretesa da fare di conseguenza.

Forum sul trading, sistemi di trading automatico e test di strategia

Come confrontare rapidamente il doppio e il QNaN?

fxsaber, 2016.10.11 15:56

Lasciato inosservato.

double QNaN   =Nan(0x7FF7000000000000);  

Il valore iniziale di una variabile globale può ora essere dichiarato tramite una funzione!

Lo stesso vale per il resto delle variabili statiche.

Strano che gli sviluppatori abbiano taciuto su questa innovazione.


Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
C'è un punto sottile sulla statica in entrambe le lingue

Alexey Kozitsyn:
Wow, che bel punto... L'hai scritto in SD?

Va bene che l'aiuto dice che una variabile statica... leggete voi stessi.

Una variabile statica può essere inizializzata da una costante o da un'espressione costante appropriata al suo tipo, a differenza di una semplice variabile locale che può essere inizializzata da qualsiasi espressione.


Ma non una funzione.

Ecco come funziona

#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:

Va bene che l'aiuto dice che una variabile statica... leggete voi stessi.

Ma non una funzione.

È così che funziona.

Allora il compilatore deve dare un errore...
 
Alexey Viktorov:

Va bene che l'aiuto dice che una variabile statica... leggete voi stessi.

Va bene se ho dato subito un link alla documentazione e un link a una discussione sul codice di sei mesi fa... Segui il tuo stesso consiglio.

Soprattutto con le costanti statiche.

 
fxsaber:

Va bene se ho dato subito un link alla documentazione e un link a una discussione di codice degli sviluppatori di mezzo anno fa... segui i tuoi stessi consigli.

Soprattutto con le costanti statiche.

Non ho guardato il link perché non conosco la lingua aglitskiy, e la traduzione mech. è a volte più incomprensibile del cinese/giapponese con un pizzico di coreano.

E non devi essere così sensibile. Non c'è un accenno di rimprovero nelle mie parole per il fatto che non hai prestato attenzione a una tale sciocchezza.

 
Alexey Viktorov:

Non ho guardato il link a causa della mia mancanza di conoscenza della lingua aglitsky, e la traduzione mech. è a volte più incomprensibile del cinese/giapponese con un misto di coreano.

Oh, e non c'è bisogno di essere così morbosi. Le mie parole non contengono un pizzico di rimprovero per il fatto che non hai prestato attenzione a una tale sciocchezza.


Forum sul trading, sistemi di trading automatico e tester di strategie

Caratteristiche del linguaggio mql4, sottigliezze e trucchi

fxsaber, 2017.04.29 11:07

Le caratteristiche del linguaggio sono state a lungo non in linea con la vecchia documentazione, vale a dire che si stanno usando cose non documentate, le cui affermazioni sono di conseguenza strane da fare.

 
Alexey Kozitsyn:
Allora il compilatore dovrebbe dare un errore...

Forse dovrebbe, ma... abbiamo quello che abbiamo.

 
fxsaber:

Non era così nella vecchia documentazione?


ps. C'è stato un lungo ritardo prima di capire il significato di quei riferimenti...

Ma ecco una confutazione dell'affermazione

fxsaber:

Lasciato inosservato.

Il valore iniziale di una variabile globale può ora essere dichiarato attraverso una funzione!

Lo stesso vale per il resto delle variabili statiche.

È strano che gli sviluppatori non parlino di questa innovazione.

O si tratta di qualcosa di completamente diverso? Dichiarare o inizializzare?
 
static const bool IsTester = (::MQLInfoInteger(MQL_TESTER) || ::MQLInfoInteger(MQL_OPTIMIZATION) ||
                              ::MQLInfoInteger(MQL_VISUAL_MODE) || ::MQLInfoInteger(MQL_FRAME_MODE));
 
fxsaber:

Non posso controllare ora, ma MQL_TESTER sembra includere tutto il resto. Ma tutto il resto, separatamente, non include l'altro.

Cioè, per capire che il programma funziona nel tester (in uno qualsiasi dei modi elencati), basta controllare il primo flag.

Motivazione: