La differenza tra esterno e ingresso - pagina 4

 
Igor Makanu:

Che ne dite di dichiarare una variabile di tipo enum?

conversione enum implicita tst1.mq5 24 17


potete anche controllare EnumToString()...


Penso che il tipo senza variabili dichiarate sia stato semplicemente buttato fuori dalla compilazione come non utilizzato

Voglio dire, si può accidentalmente dichiarare una variabile con lo stesso nome dell'enum già in uso e poi avere un tempo molto lungo e doloroso per cercare dove e come mi sono sparato nel ginocchio

 
Maksim Neimerik:
Allora, qual è il verdetto, signori? Se scrivo un programma .mq5 con .mqh (#include), posso tranquillamente scrivere extern e non aver paura di conseguenze inaspettate (come facevo in mql4), o usare input ?

In MT5 usate l'input per dichiarare variabili esterne. Extern in MT5 ha uno scopo diverso.

 
Dmitry Fedoseev:

In MT5 usate l'input per dichiarare variabili esterne. Extern in MT5 ha uno scopo diverso.

Perché non si può usare extern in MT5? - Ho compilato il mio esempio in MT5, non vedo una differenza fondamentale

 
Igor Makanu:

Perché non si può usare extern in MT5? - Ho compilato il mio esempio in MT5, non vedo alcuna differenza fondamentale

Perché la gente per abitudine del vecchio MQL4 cerca di usare extern per i parametri di input.

E nel nuovo MQL4 e MQL5, l'input è usato insieme a #property strict, ed extern è usato per altri scopi.

Ecco perché è stato detto di non usare extern.

 
Artyom Trishkin:

Perché la gente per abitudine dal vecchio MQL4 cerca di usare extern per i parametri di input.

E nei nuovi MQL4 e MQL5, l'input è usato insieme a #property strict, e extern è usato per altri scopi.

Ecco perché ti ho detto di non usare extern.

Così tutti stanno cercando di scrivere un sacco di bukuff e il risultato è che non dovrebbero usare SOLO in MQL5 e non dovrebbero usare da nessun'altra parte))))


Ok, qui arriva il grande argomento, imho - se vedete extern in un vecchio codice, sostituitelo con input e correggete tutti gli avvertimenti, e che il potere di MQL sia con voi !!!!

 
Igor Makanu:

Vedete, tutti cercano di scrivere un sacco di bukuff e finiscono con il NON usare SOLO in MT5 o NON usare da nessuna parte ))))


Ok, qui arriva il grande argomento, imho - se vedete extern in un vecchio codice, sostituitelo con input e correggete tutti gli avvertimenti, e che il potere di MQL sia con voi !!!!

Non capisco molto di quello che è scritto qui.

Ma non intendevo usare extern in MQL5 e MQL4 con #property strict per dichiarare i parametri esterni dei programmi, ma da usare per lo scopo descritto (vagamente) nella guida.

 

Stavo pensando, solo un pensiero... In MQL5, lavorare con iCustom() non è molto più problematico che in MQL4 (o in generale con le chiamate di indicatori in MQL4)? È così? Se sì, allora continuerò.

Ho appena iniziato a imparare un po' di MQL5...

Probabilmente inizierò un nuovo argomento.
 
Maksim Neimerik:
Sto solo pensando... In MQL5 è molto più difficile lavorare con iCustom() che in MQL4 (o in generale con gli indicatori che chiamano in MQL4), vero? È così? Se è così, continuerò.

non più problematico, è solo che in MQL5 si deve lavorare con iCustom() in due fasi:

1. ottenere la maniglia dell'indicatore

2. richiedere i valori dei buffer degli indicatori attraverso CopyBuffer()


in MQL4 - iCustom() funziona come una chiamata di funzione con parametri - si chiama, si riceve

in MQL5 funziona allo stesso modo - gli sviluppatori hanno volutamente ridotto la funzionalità delle funzioni incorporate e reso scomodo l'accesso alle serie temporali - hanno appena aggiunto di recente iClose(), iHigh() a MQL5, prima era necessario copiare i dati in un array come con CopyBuffer()

in generale, MT5 ha più scrittura di MT4

 
Igor Makanu:

non più problematico, è solo che in MQL5 si deve lavorare con iCustom() in due fasi:

1. ottenere la maniglia dell'indicatore

2. richiedere i valori dei buffer degli indicatori attraverso CopyBuffer()


in MQL4 - iCustom() funziona come una chiamata di funzione con parametri - si chiama, si riceve

in MQL5 funziona allo stesso modo - gli sviluppatori hanno volutamente ridotto la funzionalità delle funzioni incorporate e reso scomodo l'accesso alle serie temporali - hanno appena aggiunto iClose(), iHigh() a MQL5, prima di dover copiare i dati in un array come con CopyBuffer()

in generale, MT5 ha più scrittura di MT4

https://www.mql5.com/ru/forum/316800

MQL4 & MQL5
MQL4 & MQL5
  • 2019.06.29
  • www.mql5.com
Я тут вот что думаю, просто мысли... В MQL5 ведь намного проблемнее работа с iCustom() чем в MQL4 (да и вообще с вызовом индикаторов в советнике...
 

Sfortunatamente, l'implementazione delle variabili esterne in MQL5 non è finalizzata, ed è per questo che non ne consiglio l'uso - potrebbe causare problemi. Intendo la mancanza di controllo sull'inizializzazione obbligatoriauna tantum di queste variabili.

Per esempio, si può scrivere in questo modo:

extern int a=1;
extern int a=2;

e non ci sarà alcun errore. Immaginate che queste inizializzazioni siano eseguite in diversi plugin. Poi il risultato finale dipenderà dall'ordine in cui questi file sono inclusi.

Oppure possiamo scriverlo così (file eseguibile):

extern int a;

void OnStart() { Print(a); }

qui non abbiamo inizializzato affatto la variabile extern, ma non c'è nemmeno un errore.

Di conseguenza, non c'è controllo sul fatto che le stesse variabili siano definite o meno in altri file. Si può cambiare accidentalmente il suo nome, ma il programma compilerà come se nulla fosse successo, anche se in altri file abbiamo una variabile con un nome diverso.

Tutto sommato, non si adatta da nessuna parte. Ecco perché è meglio usare le funzioni invece delle variabili esterne, che sono garantite per avere una sola definizione, né più né meno.