MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 37

 
Renat:
Cioè, voi personalmente non avete problemi con l'operatività del software e state facendo domande generali.

Ho letto più volte le sue domande e non le capisco. Qui stiamo discutendo dei dettagli.

Non ci sono problemi di compilazione. Ci sono problemi di operatività, e come ho capito, hanno a che fare con il mescolare la logica MQL5 con MQL4. Tuttavia, i problemi che discutiamo qui non sono sufficienti per tutte le occasioni. Tutto questo è un caso speciale. Le regole sono necessarie. Se avete pubblicato una guida preliminare o almeno l'anteprima delle traduzioni delle caratteristiche e delle regole di MQL5 in MQL4, non solo aiuterebbe noi ma anche voi nella comprensione dei problemi che sorgono. E immaginate, ci saranno 500 pagine o più. Come posso rileggerlo?

 
ForexMoneyMaker:

Non ci sono problemi di compilazione. Ci sono problemi di operatività, e come ho capito, hanno a che fare con il mescolare la logica MQL5 con MQL4. Tuttavia, i problemi che discutiamo qui non sono sufficienti per tutte le occasioni. Tutto questo è un caso speciale. Le regole sono necessarie. Se avete pubblicato una guida preliminare o almeno l'anteprima delle traduzioni delle caratteristiche e delle regole di MQL5 in MQL4, non solo aiuterebbe noi ma anche voi nella comprensione dei problemi che sorgono. E immaginate, ci saranno 500 pagine o più. Come si può leggere tutto?

primo, qualcos'altro può cambiare (comprese le cose che influiscono sulla compatibilità). secondo, ora tutte le "risorse descrittive" sono dedicate alla preparazione di un aiuto. perché preoccuparsi di sovraccaricare un sistema che sta già lavorando a pieno ritmo? in modo che il numero di bug possa aumentare?
 

MT4 build 536, ME build 872.

L'indicatore usa il parametro di input per una finestra separata: extern string Currency_Name = "EURUSD";

Se l'indicatore viene avviato senza cambiare il parametro di input, l'indicatore viene disegnato e funziona senza errori. Ma appena cambio il simbolo dopo la prima esecuzione, per esempio "GBPUSD", l'indicatore non accetta il nuovo nome del simbolo. Lo short_Name dell'indicatore mantiene lo stesso nome, ma l'indicatore non viene disegnato affatto (campo vuoto). Se cambiate il nome del simbolo alla prima chiamata, l'indicatore sarà disegnato dal nome iniziale, scritto nel programma.

Per quanto riguarda la modifica dei valori numerici dei dati iniziali dell'indicatore, questi vengono cambiati in tutti i casi e l'indicatore viene disegnato senza errori.

 
Renat:

Avere centinaia di variabili globali in un programma non va bene.

L'OOP e le classi risolvono completamente e drasticamente il problema nascondendo gli ambiti e fornendo un accesso protetto ai dati.

Forse non è abbastanza buono. Ma ho scritto lì perché è così. Era impossibile implementare ciò che era previsto diversamente in MT4. Non ha funzionato in nessun altro modo con la grafica. Solo attraverso le variabili esterne è possibile impostare lo stile degli elementi grafici. Se abbiamo molti elementi grafici diversi, avremo molte variabili esterne. A parte lo stile, c'è un numero enorme di proprietà degli elementi grafici, che possono anche essere cambiate SOLO CON VARIABILI ESTERNE. La grafica va bene in ensign. Ma in MT4 è un vero casino. Ecco perché ci sono centinaia di variabili esterne. Non sappiamo ancora cosa succederà con la nuova versione di MT4. Vedremo.
 
nen:
Potrebbe non essere abbastanza buono. Ma ho scritto lì perché è così. Era impossibile implementare ciò che era previsto diversamente in MT4. Non ha funzionato in nessun altro modo con la grafica. Solo attraverso le variabili esterne puoi impostare lo stile degli elementi grafici. Se ci sono molti elementi grafici diversi, avrai anche molte variabili esterne. Oltre allo stile, ci sono molte proprietà degli elementi grafici che possono anche essere cambiate SOLO CON LE VARIABILI ESTERNE. La grafica in ensign va bene. Ma in MT4 è un vero casino. Ecco perché ci sono centinaia di variabili esterne. Come sarà nella nuova versione di MT4 è sconosciuto. Vedremo.

Quindi, stiamo parlando di variabili, non di grafica. Inoltre, la grafica è fantastica in MT5 - si può fare qualsiasi cosa fino ai giochi per computer. Anche Mt4 sta per fare un passo avanti.

Come si può trasmettere in qualsiasi programma un centinaio di parametri che un utente deve cambiare da solo in qualsiasi momento? Solo con una tabella di parametri di input. Non dipende dal tipo di programma.

Comunque, centinaia di parametri sono la via del programmatore verso il nulla. Dobbiamo applicare metodi di controllo automatico intelligente per ridurre il numero di parametri di un fattore dieci. Una volta che si inizia a pensare a questo, le soluzioni arrivano immediatamente.

 
nen:

Se ci sono diverse centinaia di variabili esterne nell'indicatore e alcune decine devono essere cambiate durante l'installazione, allora...

Prima di reinstallare, dovrete ricordare quali variabili devono essere salvate dai valori che sono stati cambiati durante la precedente installazione dell'indicatore.

Senza entrare nell'impossibilità di sbarazzarsi di 100 parametri...

Per evitare di dover ricordare ciò che è già stato cambiato, c'è un pulsante "Reset".

E il nuovo comportamento (salvataggio dei valori inseriti delle variabili dopo la ricompilazione) rende il lavoro più conveniente - non è necessario riconfigurare tutte le copie dell'indicatore, se si cambia qualcosa in esso.

 

Renat, Stringo, Unicode rimarrà per sempre?

 
input datetime  Date_From = D'08.10.2013';      // Начало периода
input datetime  Date_To = D'08.11.2013';        // Окончание периода
input bool      Column_Headers = true;          // Создавать заголовки колонок?

Questo è uno script, all'avvio il campo Date_From è sempre la data/ora locale corrente, il campo Date_To va bene. Cambiato l'ordine delle impostazioni - se una variabile di tipo datetime non è la prima della lista, questo difetto non esiste

---

In aiuto, PRICE_CLOSE ha il tipo ENUM_APPLIED_PRICE, ma il compilatore non sa - 'ENUM_APPLIED_PRICE' - dichiarazione senza tipo. L'aiuto o il compilatore lo risolveranno?

---

E in generale per questo editor/compilatore - grazie!

 

Apporto modifiche all'indicatore già compilato che si trova sul grafico della coppia di valute. Lo ricompilo. Affinché le modifiche abbiano effetto è necessario riavviare l'intero terminale. Rimuovere l'indicatore dal grafico e riavviarlo non aiuta, cambiare il timeframe non aiuta. Solo il riavvio del terminale stesso aiuta a vedere i cambiamenti fatti.

Per favore, correggetelo.

 
ObjectSetInteger(0,"Name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
ObjectSetInteger(0,"Name",OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);

CORNER_RIGHT_LOWER e ANCHOR_RIGHT_LOWER non vengono rilevati

Mqh-file, errore "identificatore non dichiarato" nei log


StringConcatenate funziona stranamente

Funziona così

StringConcatenate("Text 1 ","Text 2");
StringConcatenate("Text 1 ",10);
StringConcatenate(10," Text 2");
StringConcatenate(10,11);
StringConcatenate("Copyright ",CharToString(169));

Ma non funziona così (viene visualizzato solo "©")

StringConcatenate(CharToString(169)," Copyright");